{"ok":true,"site":{"host":"timbenniks-2026.vercel.app","url":"https://timbenniks-2026.vercel.app/","type":"live","desc":"Developer Experience Lead at Contentstack. Essays, talks, and videos on developer tools, AI-augmented engineering, and composable architecture.","tools":[{"name":"get_page_context","kind":"answer","impl":"imperative","description":"Call this first. Returns what this page is: canonical URL, content type, markdown twin URL if any, and which other tools to use next. No inputs.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]},{"name":"search_site","kind":"answer","impl":"imperative","description":"Full-text search across writing and videos. Use when the user is looking for a topic, a talk, or an article by subject rather than a known URL. Prefer this over fetching llms-full.txt. Returns title, type, date, url, markdown url, and a short snippet.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query. Required unless filtering by type/tag/year only."},"type":{"type":"string","enum":["writing","video","talk","project"],"description":"Limit to one collection."},"tag":{"type":"string","description":"Canonical tag slug, e.g. ai-engineering, developer-experience, cms."},"year":{"type":"string","description":"Four-digit year, e.g. 2026."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Max results. Default 8."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]},{"name":"list_content","kind":"answer","impl":"imperative","description":"List recent writing, videos, talks, or projects without a search query. Use for \"latest essays\", \"talks in 2025\", \"projects\". Returns compact metadata plus markdown URLs. Default 12 items, max 50.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["writing","video","talk","project","page"],"description":"Collection to list. Default writing."},"tag":{"type":"string","description":"Canonical tag slug (writing/videos)."},"year":{"type":"string","description":"Four-digit year."},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"Default 12."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]},{"name":"get_content","kind":"answer","impl":"imperative","description":"Fetch one piece of content as markdown. Pass a site path or slug: /writing/<id>, /videos/<playlist>/<id>, /projects/<id>, or a static page like /about, /press-kit, /speaking. Do not dump the full corpus. For videos this includes the transcript when one exists.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"Path or URL on this origin, with or without .md. Examples: /writing/the-tool-catalog-is-the-product, /about, /press-kit.md"}},"required":["path"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]},{"name":"get_press_kit","kind":"answer","impl":"imperative","description":"Bios (short and long), speaker topics, headshots, on-stage photos, factsheet, and booking contact link. Use when introducing Tim, booking a talk or podcast, or fetching photos for show notes.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]},{"name":"request_booking","kind":"transact","impl":"imperative","description":"How to book Tim for a conference, podcast, or workshop. Returns the contact URL, what to include in the request, and the press-kit URL. Does not send messages — draft a message for the user to confirm.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"event":{"type":"string","description":"Conference, podcast, or event name."},"dates":{"type":"string","description":"Proposed dates or window."},"format":{"type":"string","description":"keynote, talk, workshop, podcast, panel, other."},"notes":{"type":"string","description":"Audience, location, or other context."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/writing","/videos","/speaking","/projects","/uses"]}],"category":"Media & Personal","favicon":"/favicons/timbenniks-2026.vercel.app.ico","apiSurface":"spec","toolCount":6}}