{
  "$schema": "https://modelcontextprotocol.io/schemas/2025-06-18/server-card.json",
  "name": "yappy",
  "title": "Yappy",
  "displayName": "Yappy",
  "description": "The product surface for Yappy, a voice agent for the Mac. Read the current release, verify whether a given Mac can run it, compare what the product does, read what it costs, look up the permissions it needs, and start and poll export jobs against the Yappy API. No authentication.",
  "version": "1.0.0",
  "serverUrl": "https://yappy.biz/mcp",
  "transport": "streamable-http",
  "protocolVersion": "2025-06-18",
  "authentication": {
    "type": "none",
    "note": "Public data; no credential required."
  },
  "websiteUrl": "https://yappy.biz",
  "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",
    "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": "get_latest_release",
      "title": "Get the latest Yappy release",
      "description": "Get the current Yappy release of the Yappy macOS app: version number, publication date, release notes, and a download URL. Reads the same signed appcast the app updater reads, so the answer is never a stale hand-edited number. Use this whenever a user asks what the newest version is or where to download Yappy.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_notes": {
            "type": "boolean",
            "default": true,
            "description": "Include the release notes prose. Set false when you only need the version and download URL."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get the latest Yappy release",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_releases",
      "title": "List Yappy releases",
      "description": "List Yappy release history for macOS, newest first, with the version, publication date, and what changed in each. Use this to answer questions about what shipped recently or when a particular fix landed.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10,
            "description": "How many releases to return, newest first."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Yappy releases",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_pricing_plans",
      "title": "Get Yappy pricing",
      "description": "Get what the Yappy app costs: the free Mac app, the per-backend cost of the language model that cleans up dictation, and the terms of the public API. Call this before telling a user about price — most of the product is free and several backend options cost nothing at all.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "include_backends": {
            "type": "boolean",
            "default": true,
            "description": "Include the per-backend cost table. Set false for just the app and API terms."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Yappy pricing",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_frequently_asked",
      "title": "Get the Yappy FAQ",
      "description": "Get the Yappy FAQ as question and answer pairs, covering privacy, requirements, cost, permissions, offline use, and how Yappy differs from other macOS dictation tools. Useful when you want a short authoritative answer rather than a documentation page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "enum": [
              "privacy",
              "requirements",
              "pricing",
              "comparison",
              "developers"
            ],
            "description": "Return only entries on this topic."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get the Yappy FAQ",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_system_requirements",
      "title": "Get Yappy system requirements",
      "description": "Get what a Mac needs before Yappy will run on it: the minimum macOS version, the required CPU architecture, install size, and every macOS permission Yappy asks for with what each unlocks and what breaks if it is denied.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "permissions_only": {
            "type": "boolean",
            "default": false,
            "description": "Return just the macOS permission list, without the hardware requirements."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get Yappy system requirements",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "list_product_features",
      "title": "List Yappy features",
      "description": "List what the Yappy app can do, as structured objects rather than marketing bullets: an id, a name, a description, whether the feature runs entirely on the user's Mac, whether it needs the network, and which macOS permission it requires. Use this to build an accurate comparison against another dictation tool.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "on_device_only": {
            "type": "boolean",
            "default": false,
            "description": "Return only the features that run entirely on the user's Mac."
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "List Yappy features",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "create_export_job",
      "title": "Start a Yappy export job",
      "description": "Start an asynchronous export of a Yappy corpus — documentation, FAQ, or release history — as markdown or JSON. This creates a job on the Yappy API and returns its id; poll it with get_export_job until the status is completed, then read result.url. Use it when you want the whole corpus rather than a page at a time. It creates a job and nothing else: no user data is touched and nothing can be deleted.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "enum": [
              "docs",
              "faq",
              "releases"
            ],
            "description": "Which corpus to export."
          },
          "format": {
            "type": "string",
            "enum": [
              "markdown",
              "json"
            ],
            "default": "markdown",
            "description": "The artifact format."
          },
          "idempotency_key": {
            "type": "string",
            "maxLength": 128,
            "description": "Your own key, so a retry returns the same job instead of starting a second one."
          }
        },
        "required": [
          "resource"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Start a Yappy export job",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "get_export_job",
      "title": "Poll a Yappy export job",
      "description": "Check an export job started with create_export_job. Status moves queued, then running, then completed; a completed job carries result.url pointing at the finished artifact. Poll no faster than the retry_after hint on the previous response.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string",
            "maxLength": 160,
            "description": "The id returned by create_export_job."
          }
        },
        "required": [
          "job_id"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Poll a Yappy export job",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "check_mac_compatibility",
      "title": "Check whether a Mac can run Yappy",
      "description": "Decide whether a specific Mac can run Yappy, given its macOS version and CPU architecture, and return the reasons. Prefer this over reasoning about the requirements yourself: it encodes the same rules the installer uses, so the answer you give a user matches what will actually happen.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "os_version": {
            "type": "string",
            "pattern": "^\\d+(\\.\\d+){0,2}$",
            "description": "The macOS version on the machine, for example \"14.5\"."
          },
          "arch": {
            "type": "string",
            "enum": [
              "arm64",
              "x86_64"
            ],
            "description": "The CPU architecture: arm64 for Apple Silicon, x86_64 for Intel."
          }
        },
        "required": [
          "os_version",
          "arch"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Check whether a Mac can run Yappy",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    }
  ],
  "resources": [
    {
      "uri": "yappy://llms.txt",
      "name": "llms.txt",
      "title": "Machine index for yappy.biz",
      "description": "The navigation index an agent should read first: what Yappy is, when to use this API, and every machine-readable surface.",
      "mimeType": "text/plain"
    },
    {
      "uri": "yappy://openapi.json",
      "name": "OpenAPI specification",
      "title": "Yappy Web API (OpenAPI 3.1)",
      "description": "The full contract for the public REST API, one operationId and response schema per operation.",
      "mimeType": "application/json"
    },
    {
      "uri": "yappy://releases/latest",
      "name": "Latest release",
      "title": "The current Yappy release",
      "description": "Version, publication date, notes, and download URL for the release the updater would install now.",
      "mimeType": "application/json"
    }
  ],
  "relatedServers": [
    {
      "name": "yappy-docs",
      "description": "Search and read the Yappy documentation over MCP.",
      "serverUrl": "https://yappy.biz/docs/mcp",
      "transport": "streamable-http",
      "serverCard": "https://yappy.biz/.well-known/mcp/docs/server-card.json"
    }
  ],
  "url": "https://yappy.biz/mcp",
  "endpoint": "https://yappy.biz/mcp",
  "type": "http",
  "mcpVersion": "2025-06-18",
  "mcpServers": {
    "yappy": {
      "type": "http",
      "url": "https://yappy.biz/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"
        }
      }
    }
  }
}
