{
  "$schema": "https://modelcontextprotocol.io/schemas/2025-06-18/server-card.json",
  "name": "yappy-docs",
  "title": "Yappy documentation",
  "displayName": "Yappy documentation",
  "description": "Search and read the Yappy documentation over MCP: installation, macOS permissions, dictation, Agent Mode, LLM backends, configuration, privacy, and troubleshooting. Streamable HTTP, no authentication.",
  "version": "1.0.0",
  "serverUrl": "https://yappy.biz/docs/mcp",
  "transport": "streamable-http",
  "protocolVersion": "2025-06-18",
  "authentication": {
    "type": "none",
    "note": "Public documentation; no credential required."
  },
  "websiteUrl": "https://yappy.biz/docs/",
  "documentationUrl": "https://yappy.biz/developers/mcp",
  "icon": "https://yappy.biz/assets/logo.svg",
  "icons": [
    {
      "src": "https://yappy.biz/assets/logo.svg",
      "mimeType": "image/svg+xml",
      "sizes": [
        "any"
      ]
    }
  ],
  "logo": "https://yappy.biz/assets/logo.svg",
  "publisher": {
    "name": "Mitosis Labs",
    "url": "https://yappy.biz",
    "contact": "support@yappy.biz"
  },
  "registry": {
    "name": "biz.yappy/yappy-docs",
    "url": "https://registry.modelcontextprotocol.io/v0/servers?search=biz.yappy",
    "namespace": "biz.yappy",
    "verification": "https://yappy.biz/.well-known/mcp-registry-auth"
  },
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": false,
    "sampling": false
  },
  "tools": [
    {
      "name": "search_documentation",
      "title": "Search Yappy documentation",
      "description": "Full-text search across Yappy documentation and FAQ. Use this to answer how-to and troubleshooting questions: installing Yappy, granting macOS permissions, a hotkey that does nothing, choosing an LLM backend, configuration keys, personas, or exactly what stays on-device. Results carry an excerpt you can quote and a URL you can cite.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200,
            "description": "What to search for, in plain words."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "How many results to return."
          },
          "type": {
            "type": "string",
            "enum": [
              "doc",
              "faq"
            ],
            "description": "Narrow the search to documentation pages or FAQ entries."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Search Yappy documentation",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_documentation_page",
      "title": "Read a Yappy documentation page",
      "description": "Fetch one full Yappy documentation page as markdown, by slug. Use this after search_documentation when an excerpt is not enough and you need the whole page — for example the complete configuration reference or the full privacy model.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "enum": [
              "quickstart",
              "dictation",
              "agent-mode",
              "backends",
              "configuration",
              "privacy-model",
              "troubleshooting",
              "changelog"
            ],
            "description": "Which page to fetch."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Read a Yappy documentation page",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_documentation_pages",
      "title": "List Yappy documentation pages",
      "description": "List every page in the Yappy documentation with its slug, title, and one-line summary, so you can pick the right one to read instead of guessing a slug.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_summaries": {
            "type": "boolean",
            "default": true,
            "description": "Include each page's one-line summary alongside its slug and title."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Yappy documentation pages",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  ],
  "resources": [
    {
      "uri": "yappy://docs/index",
      "name": "Documentation index",
      "title": "Yappy documentation index",
      "description": "Every Yappy documentation page with its slug, title, and summary.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/quickstart",
      "name": "Quickstart",
      "title": "Quickstart — Yappy documentation",
      "description": "Download Yappy, grant the two macOS permissions it needs, and dictate your first sentence in about two minutes.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/dictation",
      "name": "Dictation",
      "title": "Dictation — Yappy documentation",
      "description": "How the Right Option key works: on-device transcription, AI cleanup, smart spacing, hands-free mode, and personas.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/agent-mode",
      "name": "Agent Mode",
      "title": "Agent Mode — Yappy documentation",
      "description": "The Right Command key: Yappy reads your screen, acts in your apps, and hands control back before anything irreversible.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/backends",
      "name": "LLM backends",
      "title": "LLM backends — Yappy documentation",
      "description": "Every cleanup backend Yappy supports — local Ollama, your Claude or xAI subscription, your own API key, or the hosted plan.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/configuration",
      "name": "Configuration",
      "title": "Configuration — Yappy documentation",
      "description": "Every setting in ~/.yappy/config.json and what each one changes.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/privacy-model",
      "name": "Privacy model",
      "title": "Privacy model — Yappy documentation",
      "description": "A component-by-component account of what Yappy sends over the network and what never leaves your Mac.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/troubleshooting",
      "name": "Troubleshooting",
      "title": "Troubleshooting — Yappy documentation",
      "description": "Fixes for a dead hotkey, silent dictation, a dropped Accessibility grant, and Agent Mode not starting.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "yappy://docs/changelog",
      "name": "Changelog",
      "title": "Changelog — Yappy documentation",
      "description": "Yappy release history for macOS, newest first.",
      "mimeType": "text/markdown"
    }
  ],
  "relatedServers": [
    {
      "name": "yappy",
      "description": "The Yappy product surface: releases, pricing, features, requirements, compatibility.",
      "serverUrl": "https://yappy.biz/mcp",
      "transport": "streamable-http"
    }
  ],
  "url": "https://yappy.biz/docs/mcp",
  "endpoint": "https://yappy.biz/docs/mcp",
  "type": "http",
  "mcpVersion": "2025-06-18",
  "mcpServers": {
    "yappy-docs": {
      "type": "http",
      "url": "https://yappy.biz/docs/mcp",
      "transport": "streamable-http"
    }
  },
  "usage": {
    "handshake": "POST a JSON-RPC 2.0 initialize request to serverUrl.",
    "example": {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "initialize",
      "params": {
        "protocolVersion": "2025-06-18",
        "capabilities": {},
        "clientInfo": {
          "name": "your-client",
          "version": "1.0.0"
        }
      }
    }
  }
}
