{"ok":true,"site":{"host":"aifoc.us","url":"https://aifoc.us/","desc":"Paul Kinlan's blog of essays on how AI is reshaping web development and the web platform. WebMCP tools let an agent list, search, and read the essays, and draft an email to the author.","type":"live","category":"Personal & Media","favicon":"/favicons/aifoc.us.png","tools":[{"name":"contact_paul","kind":"action","impl":"imperative","description":"Compose an email to Paul Kinlan (the author of aifoc.us) at paul@aifoc.us. 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":"/"},{"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":"/"},{"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":"/"},{"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":"/"}],"apiSurface":"spec","_scrape":{"etag":null,"lastModified":null,"scrapedAt":"2026-06-06T05:20:25.359Z"},"toolCount":4}}