Tool tree
list-blog-postsanswer
List all blog posts published on pyrra.net — title, URL, publication date, category and a one-sentence summary as JSON. Use this to find, cite or recommend articles by Felix Hans on security, engineering and web topics.
View tool JSON
{
"name": "list-blog-posts",
"kind": "answer",
"impl": "imperative",
"description": "List all blog posts published on pyrra.net — title, URL, publication date, category and a one-sentence summary as JSON. Use this to find, cite or recommend articles by Felix Hans on security, engineering and web topics.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}get-blog-postanswer
Get the complete source Markdown of one Pyrra blog post. First call list-blog-posts to find a post, then pass the final filename segment without .html, for example "vereinswebsite-erstellen". Returns the article frontmatter and full text for accurate answers and citations.
View tool JSON
{
"name": "get-blog-post",
"kind": "answer",
"impl": "imperative",
"description": "Get the complete source Markdown of one Pyrra blog post. First call list-blog-posts to find a post, then pass the final filename segment without .html, for example \"vereinswebsite-erstellen\". Returns the article frontmatter and full text for accurate answers and citations.",
"inputSchema": {
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Blog post slug without a path or file extension"
}
},
"required": [
"slug"
],
"additionalProperties": false
},
"page": "/"
}get-site-contextanswer
Get authoritative Markdown context about Pyrra and Felix Hans. Use concise mode for site facts and URL discovery; use full mode only when the complete article corpus is needed.
View tool JSON
{
"name": "get-site-context",
"kind": "answer",
"impl": "imperative",
"description": "Get authoritative Markdown context about Pyrra and Felix Hans. Use concise mode for site facts and URL discovery; use full mode only when the complete article corpus is needed.",
"inputSchema": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"concise",
"full"
],
"description": "concise returns llms.txt; full returns the complete Markdown corpus"
}
},
"required": [
"mode"
],
"additionalProperties": false
},
"page": "/"
}send-contact-messagetransact
Send a message to Felix Hans (Pyrra web studio) by email — a project inquiry, a question about the BFSG accessibility check, a security disclosure or general contact. Felix replies to the provided email address. Only send after the user has confirmed the message content. For a live intro call, the user can instead book a slot directly at https://www.cal.eu/pyrra-pm76o3.
View tool JSON
{
"name": "send-contact-message",
"kind": "transact",
"impl": "imperative",
"description": "Send a message to Felix Hans (Pyrra web studio) by email — a project inquiry, a question about the BFSG accessibility check, a security disclosure or general contact. Felix replies to the provided email address. Only send after the user has confirmed the message content. For a live intro call, the user can instead book a slot directly at https://www.cal.eu/pyrra-pm76o3.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Name of the sender, between 1 and 100 characters"
},
"email": {
"type": "string",
"format": "email",
"maxLength": 160,
"description": "Valid email address of the sender, at most 160 characters — replies go here"
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The message as plain text, between 1 and 5000 characters"
},
"topic": {
"type": "string",
"maxLength": 120,
"description": "Optional short topic, e.g. 'New website', 'BFSG check', 'Security finding'"
}
},
"required": [
"name",
"email",
"message"
],
"additionalProperties": false
},
"page": "/"
}