live · Personal & Media · JSON · API for agents
Compose an email to Paul Kinlan (the author of aifoc.us) at [email protected]. Use this whenever the user wants to get in touch, ask a question, share feedback, or propose something. Opens the user's mail client with a pre-filled draft; the user reviews and sends it themselves.
{
"name": "contact_paul",
"kind": "action",
"impl": "imperative",
"description": "Compose an email to Paul Kinlan (the author of aifoc.us) at [email protected]. Use this whenever the user wants to get in touch, ask a question, share feedback, or propose something. Opens the user's mail client with a pre-filled draft; the user reviews and sends it themselves.",
"inputSchema": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "Subject line for the email."
},
"body": {
"type": "string",
"description": "Message body. Write it as the user would, in the first person."
}
},
"required": [
"subject",
"body"
]
},
"page": "/"
}List essays published on aifoc.us, most recent first. Use this to give the user an overview of available articles or to pick something to read in full with read_article.
{
"name": "list_articles",
"kind": "read",
"impl": "imperative",
"description": "List essays published on aifoc.us, most recent first. Use this to give the user an overview of available articles or to pick something to read in full with read_article.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum number of articles to return (default 20).",
"minimum": 1,
"maximum": 100
}
}
},
"page": "/"
}Search essays on aifoc.us by keyword. Matches against article titles and summaries. Returns titles, URLs, dates and short summaries — use read_article to fetch the full body of a match.
{
"name": "search_articles",
"kind": "read",
"impl": "imperative",
"description": "Search essays on aifoc.us by keyword. Matches against article titles and summaries. Returns titles, URLs, dates and short summaries — use read_article to fetch the full body of a match.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Free-text search query."
},
"limit": {
"type": "integer",
"description": "Maximum number of matches to return (default 10).",
"minimum": 1,
"maximum": 50
}
},
"required": [
"query"
]
},
"page": "/"
}Fetch the full text of an article on aifoc.us given its URL (from list_articles or search_articles). Returns the article's title and body as plain text.
{
"name": "read_article",
"kind": "read",
"impl": "imperative",
"description": "Fetch the full text of an article on aifoc.us given its URL (from list_articles or search_articles). Returns the article's title and body as plain text.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Absolute or site-relative URL of the article, e.g. https://aifoc.us/a-link-is-all-you-need/ or /a-link-is-all-you-need/."
}
},
"required": [
"url"
]
},
"page": "/"
}