{
  "generated": "2026-08-01T06:29:16.588Z",
  "docs": "https://www.mattpyle.com/webmcp",
  "index": "https://www.mattpyle.com/webmcp/index.json",
  "verified": {
    "date": "2026-07-24",
    "chrome": "150.0.7871.182"
  },
  "note": "An experiment, not a supported API. These tools are registered on document.modelContext in the browser, so only an in-browser agent that implements WebMCP can call them. If you are reading this file rather than executing JavaScript on the live site, fetch the index URL above instead — it holds the same content these tools read.",
  "tools": [
    {
      "name": "describe_site",
      "description": "Describe mattpyle.com: who the author is, what the site is, and which sections it has. Call this first for context about the site you're on.",
      "kind": "read",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "returns": "An object with person, site, and sections.",
      "example": {}
    },
    {
      "name": "get_recent_writing",
      "description": "List the most recent published articles on mattpyle.com, newest first, optionally filtered to a single tag.",
      "kind": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "How many articles to return (1-20)."
          },
          "tag": {
            "type": "string",
            "description": "Only return articles carrying this tag (case-insensitive)."
          }
        },
        "additionalProperties": false
      },
      "returns": "An object with posts: title, url, date, tags, description.",
      "example": {
        "limit": 5
      }
    },
    {
      "name": "search_content",
      "description": "Search the titles, descriptions, and tags of every published article, build, and changelog entry on mattpyle.com.",
      "kind": "read",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "description": "Text to search for (case-insensitive)."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "returns": "An object with results: type, title, url, snippet.",
      "example": {
        "query": "webmcp"
      }
    },
    {
      "name": "set_appearance",
      "description": "Switch mattpyle.com between its modern appearance and a retro, GeoCities-era skin. This changes only the calling browser's own view (stored in that browser's localStorage) — it never affects the site for other visitors. Pass mode: 'retro' or 'modern'.",
      "kind": "write",
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "modern",
              "retro"
            ],
            "description": "The appearance to switch to: 'modern' or 'retro'."
          }
        },
        "required": [
          "mode"
        ],
        "additionalProperties": false
      },
      "returns": "An object with mode and message: the mode actually applied.",
      "example": {
        "mode": "retro"
      },
      "notes": "Writes to this browser's localStorage and nothing else. No server state, no other visitor."
    }
  ]
}