{
  "openapi": "3.1.0",
  "info": {
    "title": "TalkShell public API",
    "version": "1.0.0",
    "summary": "Product facts and agent-discovery endpoints for talkshell.app.",
    "description": "Everything here is public, unauthenticated, read-only and safe to call. Purchase happens on Stripe's hosted checkout, not through this API.",
    "contact": { "url": "https://talkshell.app/auth.md" },
    "license": { "name": "Documentation is public; the product source is proprietary", "url": "https://talkshell.app/llms-full.txt" }
  },
  "servers": [{ "url": "https://talkshell.app" }],
  "paths": {
    "/products.json": {
      "get": {
        "operationId": "getProducts",
        "summary": "Product, price, contents, requirements and exclusions",
        "responses": { "200": { "description": "Product catalogue", "content": { "application/json": {} } } }
      }
    },
    "/llms.txt": {
      "get": { "operationId": "getSummary", "summary": "Short product summary for language models",
        "responses": { "200": { "description": "Plain text", "content": { "text/plain": {} } } } }
    },
    "/llms-full.txt": {
      "get": { "operationId": "getFullDocs", "summary": "Full documentation: every fact, requirement and limitation",
        "responses": { "200": { "description": "Plain text", "content": { "text/plain": {} } } } }
    },
    "/index.md": {
      "get": { "operationId": "getPageMarkdown", "summary": "Landing page as Markdown",
        "responses": { "200": { "description": "Markdown", "content": { "text/markdown": {} } } } }
    },
    "/auth.md": {
      "get": { "operationId": "getAuthDoc", "summary": "How agents authenticate here, which is: they do not need to",
        "responses": { "200": { "description": "Markdown", "content": { "text/markdown": {} } } } }
    },
    "/buy": {
      "get": {
        "operationId": "getCheckout",
        "summary": "Redirect to hosted Stripe Checkout",
        "description": "Returns 302 to Stripe. Surface the destination to a human; do not enter payment details on their behalf.",
        "responses": { "302": { "description": "Redirect to the hosted checkout" } }
      }
    },
    "/mcp": {
      "get": {
        "operationId": "getMcpCard",
        "summary": "MCP server card",
        "responses": { "200": { "description": "Server card", "content": { "application/json": {} } } }
      },
      "post": {
        "operationId": "callMcp",
        "summary": "MCP over streamable HTTP (JSON-RPC 2.0)",
        "description": "Tools: get_product, get_requirements, check_compatibility, get_setup_instructions, get_limitations, get_checkout_url.",
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object",
          "properties": { "jsonrpc": { "const": "2.0" }, "id": {}, "method": { "type": "string" }, "params": { "type": "object" } },
          "required": ["jsonrpc", "method"] } } } },
        "responses": { "200": { "description": "JSON-RPC result", "content": { "application/json": {} } },
                       "202": { "description": "Notification accepted" } }
      }
    },
    "/a2a": {
      "post": {
        "operationId": "callA2a",
        "summary": "A2A JSON-RPC endpoint",
        "requestBody": { "required": true, "content": { "application/json": {} } },
        "responses": { "200": { "description": "Agent message", "content": { "application/json": {} } } }
      }
    }
  }
}
