Tool tree
gradeNot graded
page: Every page
get_page_contextAnswer
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}search_siteAnswer
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.
View tool JSON
{
"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.",
"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."
}
}
},
"page": "/"
}list_contentAnswer
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.
View tool JSON
{
"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.",
"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."
}
}
},
"page": "/"
}get_contentAnswer
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.
View tool JSON
{
"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.",
"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"
]
},
"page": "/"
}get_press_kitAnswer
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.
View tool JSON
{
"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.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}request_bookingSensitive Action
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.
View tool JSON
{
"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.",
"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."
}
}
},
"page": "/"
}