← WebMCP Directory

Tool tree

timbenniks-2026.vercel.app

Media & PersonalTools verified
Website
Developer Experience Lead at Contentstack. Essays, talks, and videos on developer tools, AI-augmented engineering, and composable architecture.
Explore capabilities

    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": "/"
    }