{
  "openapi": "3.1.0",
  "info": {
    "title": "Gaazeon's Blog Public Content Discovery",
    "version": "1.1.4",
    "description": "Public read-only discovery resources for Gaazeon's Blog. The site is a static technical blog with agent and developer resource docs, webhook alternatives, minimal read-only MCP JSON-RPC support, and no authentication, write API, account system, payment flow, or private resources."
  },
  "servers": [
    {
      "url": "https://blog.gaazeon.com",
      "description": "Production blog origin"
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Discovery",
      "description": "Public static resources for crawlers, readers, and AI agents."
    },
    {
      "name": "Agent Metadata",
      "description": "Machine-readable agent, MCP, and plugin compatibility documents."
    }
  ],
  "paths": {
    "/index.md": {
      "get": {
        "operationId": "getMarkdownIndex",
        "tags": ["Discovery"],
        "summary": "Get Markdown site index",
        "responses": {
          "200": {
            "description": "Markdown site index.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "operationId": "getLlmsTxt",
        "tags": ["Discovery"],
        "summary": "Get compact LLM-oriented site overview",
        "responses": {
          "200": {
            "description": "Markdown text overview.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/llms-full.txt": {
      "get": {
        "operationId": "getLlmsFullTxt",
        "tags": ["Discovery"],
        "summary": "Get fuller LLM-oriented site context",
        "responses": {
          "200": {
            "description": "Markdown text context.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/agents.md": {
      "get": {
        "operationId": "getAgentInstructions",
        "tags": ["Discovery"],
        "summary": "Get AI agent usage instructions",
        "responses": {
          "200": {
            "description": "Markdown agent instructions.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/agent-integration.md": {
      "get": {
        "operationId": "getAgentIntegrationGuide",
        "tags": ["Agent Metadata"],
        "summary": "Get agent integration guide",
        "responses": {
          "200": {
            "description": "Markdown guide for agent integration, discovery, content negotiation, JSON errors, and unsupported workflows.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/docs.md": {
      "get": {
        "operationId": "getAgentDeveloperResourceDocsMarkdown",
        "tags": ["Agent Metadata"],
        "summary": "Get Markdown agent and developer resource index",
        "responses": {
          "200": {
            "description": "Markdown resource index for AI agents, crawlers, search systems, and developer tools.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                },
                "examples": {
                  "resourceIndex": {
                    "summary": "Static resource docs",
                    "value": "# Agent and Developer Resources\n\nGaazeon's Blog is a static public technical blog."
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/webhooks.md": {
      "get": {
        "operationId": "getWebhookAlternativesMarkdown",
        "tags": ["Agent Metadata"],
        "summary": "Get Markdown webhook alternatives for static publishing",
        "responses": {
          "200": {
            "description": "Markdown explanation that webhooks are unsupported and RSS, sitemap files, and public JSON indexes are the supported alternatives.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                },
                "examples": {
                  "webhookAlternatives": {
                    "summary": "Webhook alternatives",
                    "value": "# Webhook Alternatives\n\nGaazeon's Blog does not provide webhooks."
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/.well-known/agent-card.json": {
      "get": {
        "operationId": "getAgentCard",
        "tags": ["Agent Metadata"],
        "summary": "Get A2A-compatible agent card",
        "responses": {
          "200": {
            "description": "Agent card for static public blog discovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentCard"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/.well-known/agent-skills": {
      "get": {
        "operationId": "getAgentSkills",
        "tags": ["Agent Metadata"],
        "summary": "Get agent skills manifest",
        "responses": {
          "200": {
            "description": "JSON manifest describing public agent capabilities and constraints.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgentSkills"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/.well-known/ai-plugin.json": {
      "get": {
        "operationId": "getOpenAiPluginManifest",
        "tags": ["Agent Metadata"],
        "summary": "Get OpenAI plugin manifest compatibility document",
        "responses": {
          "200": {
            "description": "OpenAI plugin manifest compatibility document for public discovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpenAiPluginManifest"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "operationId": "getApiCatalog",
        "tags": ["Discovery"],
        "summary": "Get API catalog linkset",
        "responses": {
          "200": {
            "description": "JSON linkset for public discovery resources.",
            "content": {
              "application/linkset+json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiCatalog"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/.well-known/mcp": {
      "get": {
        "operationId": "getMcpWellKnown",
        "tags": ["Agent Metadata"],
        "summary": "Get MCP discovery response",
        "responses": {
          "200": {
            "description": "MCP discovery response with protocol version, server info, capabilities, and resource list. JSON-RPC initialize returns the standard MCP InitializeResult.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpWellKnown"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      },
      "post": {
        "operationId": "postMcpJsonRpc",
        "tags": ["Agent Metadata"],
        "summary": "Call read-only MCP Streamable HTTP JSON-RPC methods",
        "description": "Supports initialize, notifications/initialized, resources/list, resources/read, tools/list, and tools/call. All methods are public, unauthenticated, and read-only.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/McpJsonRpcRequest"
              },
              "examples": {
                "listResources": {
                  "summary": "List public resources",
                  "value": {
                    "jsonrpc": "2.0",
                    "id": 1,
                    "method": "resources/list"
                  }
                },
                "callTool": {
                  "summary": "Call a read-only tool",
                  "value": {
                    "jsonrpc": "2.0",
                    "id": 2,
                    "method": "tools/call",
                    "params": {
                      "name": "get_agent_integration_guide",
                      "arguments": {}
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "JSON-RPC success or method-level error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpJsonRpcResponse"
                }
              }
            }
          },
          "202": {
            "description": "Accepted JSON-RPC notification with no response body."
          },
          "400": {
            "description": "Malformed JSON or invalid JSON-RPC envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpJsonRpcResponse"
                }
              }
            }
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          }
        }
      }
    },
    "/.well-known/mcp/server-card.json": {
      "get": {
        "operationId": "getMcpServerCard",
        "tags": ["Agent Metadata"],
        "summary": "Get MCP static server card",
        "responses": {
          "200": {
            "description": "MCP-oriented static server card.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerCard"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/posts.json": {
      "get": {
        "operationId": "getAllPostSummaries",
        "tags": ["Discovery"],
        "summary": "Get all public post summaries",
        "description": "Returns a read-only JSON array of public Chinese and English post summaries, sorted by latest update or publication date.",
        "responses": {
          "200": {
            "description": "Array of public post summaries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PostSummary"
                  }
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/tags.json": {
      "get": {
        "operationId": "getTagsIndex",
        "tags": ["Discovery"],
        "summary": "Get public tag index",
        "description": "Returns a read-only JSON object keyed by tag name with per-locale counts and canonical tag URLs.",
        "responses": {
          "200": {
            "description": "Public tag index.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagsIndex"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api/posts/{locale}/{slug}.json": {
      "get": {
        "operationId": "getPostDetail",
        "tags": ["Discovery"],
        "summary": "Get one public post as JSON",
        "description": "Returns one public post detail document. The route is generated for every non-draft post.",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "description": "Post locale.",
            "schema": {
              "type": "string",
              "enum": ["zh-CN", "en"]
            }
          },
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Post slug without the .json suffix.",
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Public post detail.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostDetail"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/api": {
      "get": {
        "operationId": "getUnsupportedApiRoot",
        "tags": ["Agent Metadata"],
        "summary": "Get JSON error for bare /api path",
        "description": "The bare /api path returns the same structured JSON 404 as any /api/* sub-path. Agents should stop probing and use the documented static discovery resources instead.",
        "responses": {
          "404": {
            "$ref": "#/components/responses/ApiNotFound"
          }
        }
      }
    },
    "/api/{path}": {
      "get": {
        "operationId": "getUnsupportedApiPath",
        "tags": ["Agent Metadata"],
        "summary": "Get JSON error for unsupported API paths",
        "description": "Unsupported /api/* paths intentionally return a structured JSON 404 that points agents back to canonical public discovery resources. The bare /api path is also covered (see /api).",
        "parameters": [
          {
            "name": "path",
            "in": "path",
            "required": true,
            "description": "Unsupported API path segment.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "404": {
            "$ref": "#/components/responses/ApiNotFound"
          }
        }
      }
    },
    "/en/pricing/": {
      "get": {
        "operationId": "getEnglishPricingAndAccessPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable pricing and access page (English)",
        "responses": {
          "200": {
            "description": "HTML page documenting free public access in English.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/docs/": {
      "get": {
        "operationId": "getAgentDeveloperResourceDocsPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable agent and developer resources page (Chinese)",
        "responses": {
          "200": {
            "description": "HTML page documenting public static resources for agents and developer tools.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/en/docs/": {
      "get": {
        "operationId": "getEnglishAgentDeveloperResourceDocsPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable agent and developer resources page (English)",
        "responses": {
          "200": {
            "description": "English HTML page documenting public static resources for agents and developer tools.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/pagefind/pagefind-entry.json": {
      "get": {
        "operationId": "getPagefindEntry",
        "tags": ["Discovery"],
        "summary": "Get static Pagefind search entry metadata",
        "responses": {
          "200": {
            "description": "Pagefind static search entry metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagefindEntry"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/pricing.md": {
      "get": {
        "operationId": "getPricingAndAccessModelMarkdown",
        "tags": ["Discovery"],
        "summary": "Get Markdown pricing and access model",
        "responses": {
          "200": {
            "description": "Markdown description of free public access.",
            "content": {
              "text/markdown": {
                "schema": {
                  "$ref": "#/components/schemas/MarkdownDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/webhooks/": {
      "get": {
        "operationId": "getWebhookAlternativesPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable webhook alternatives page (Chinese)",
        "responses": {
          "200": {
            "description": "HTML page documenting RSS, sitemap, and public JSON alternatives to webhooks.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/en/webhooks/": {
      "get": {
        "operationId": "getEnglishWebhookAlternativesPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable webhook alternatives page (English)",
        "responses": {
          "200": {
            "description": "English HTML page documenting RSS, sitemap, and public JSON alternatives to webhooks.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/pricing/": {
      "get": {
        "operationId": "getPricingAndAccessPage",
        "tags": ["Discovery"],
        "summary": "Get human-readable pricing and access page (Chinese)",
        "responses": {
          "200": {
            "description": "HTML page documenting free public access.",
            "content": {
              "text/html": {
                "schema": {
                  "$ref": "#/components/schemas/HtmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/rss.en.xml": {
      "get": {
        "operationId": "getEnglishRssFeed",
        "tags": ["Discovery"],
        "summary": "Get English RSS feed",
        "responses": {
          "200": {
            "description": "RSS feed for English posts.",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "$ref": "#/components/schemas/XmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/rss.xml": {
      "get": {
        "operationId": "getChineseRssFeed",
        "tags": ["Discovery"],
        "summary": "Get Chinese RSS feed",
        "responses": {
          "200": {
            "description": "RSS feed for Chinese posts.",
            "content": {
              "application/rss+xml": {
                "schema": {
                  "$ref": "#/components/schemas/XmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/schemamap.xml": {
      "get": {
        "operationId": "getSchemaMap",
        "tags": ["Discovery"],
        "summary": "Get schema map",
        "responses": {
          "200": {
            "description": "XML schema map for structured public resources.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/XmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    },
    "/sitemap-index.xml": {
      "get": {
        "operationId": "getSitemapIndex",
        "tags": ["Discovery"],
        "summary": "Get sitemap index",
        "responses": {
          "200": {
            "description": "XML sitemap index.",
            "content": {
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/XmlDocument"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/RateLimited"
          },
          "500": {
            "$ref": "#/components/responses/ServerError"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "MarkdownDocument": {
        "type": "string",
        "minLength": 1,
        "contentMediaType": "text/markdown",
        "description": "Markdown document body."
      },
      "HtmlDocument": {
        "type": "string",
        "minLength": 1,
        "contentMediaType": "text/html",
        "description": "HTML document body."
      },
      "XmlDocument": {
        "type": "string",
        "minLength": 1,
        "description": "XML document body."
      },
      "ErrorResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["error", "message"],
        "properties": {
          "error": {
            "type": "string",
            "enum": ["not_found", "rate_limited", "server_error"]
          },
          "message": {
            "type": "string",
            "minLength": 1
          },
          "retryAfter": {
            "type": ["integer", "null"],
            "minimum": 0,
            "description": "Seconds to wait before retrying, or null when no retry delay is advertised. Typically present only for rate-limited responses."
          }
        }
      },
      "BlogLocale": {
        "type": "string",
        "enum": ["zh-CN", "en"]
      },
      "PostSummary": {
        "type": "object",
        "required": [
          "slug",
          "title",
          "description",
          "pubDatetime",
          "modDatetime",
          "tags",
          "locale",
          "url",
          "originalSlug"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "minLength": 1
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "description": {
            "type": "string"
          },
          "pubDatetime": {
            "type": "string",
            "format": "date-time"
          },
          "modDatetime": {
            "type": ["string", "null"],
            "format": "date-time"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "locale": {
            "$ref": "#/components/schemas/BlogLocale"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "originalSlug": {
            "type": "string",
            "minLength": 1
          }
        }
      },
      "PostDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PostSummary"
          },
          {
            "type": "object",
            "required": [
              "author",
              "featured",
              "draft",
              "body",
              "canonicalURL",
              "translations"
            ],
            "properties": {
              "author": {
                "type": "string",
                "minLength": 1
              },
              "featured": {
                "type": "boolean"
              },
              "draft": {
                "type": "boolean",
                "const": false
              },
              "body": {
                "type": "string",
                "description": "Plain-text excerpt capped by the site JSON budget."
              },
              "canonicalURL": {
                "type": "string",
                "format": "uri"
              },
              "translations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": ["locale", "url"],
                  "properties": {
                    "locale": {
                      "$ref": "#/components/schemas/BlogLocale"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "TagsIndex": {
        "type": "object",
        "additionalProperties": {
          "type": "object",
          "additionalProperties": false,
          "required": ["counts", "urls"],
          "properties": {
            "counts": {
              "type": "object",
              "additionalProperties": false,
              "required": ["zh-CN", "en"],
              "properties": {
                "zh-CN": {
                  "type": "integer",
                  "minimum": 0
                },
                "en": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            },
            "urls": {
              "type": "object",
              "additionalProperties": false,
              "required": ["zh-CN", "en"],
              "properties": {
                "zh-CN": {
                  "type": "string",
                  "format": "uri"
                },
                "en": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "ApiCatalog": {
        "type": "object",
        "additionalProperties": false,
        "required": ["linkset"],
        "properties": {
          "linkset": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["anchor", "item"],
              "properties": {
                "anchor": {
                  "type": "string",
                  "format": "uri"
                },
                "item": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LinksetItem"
                  }
                }
              }
            }
          }
        }
      },
      "LinksetItem": {
        "type": "object",
        "additionalProperties": true,
        "required": ["href", "rel", "type", "title"],
        "properties": {
          "href": {
            "type": "string",
            "format": "uri"
          },
          "rel": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "hreflang": {
            "type": "string"
          }
        }
      },
      "AgentSkills": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "version",
          "name",
          "description",
          "url",
          "whenToUse",
          "whenNotToUse",
          "resources",
          "capabilities",
          "authentication",
          "errorRecovery"
        ],
        "properties": {
          "$schema": {
            "type": "string",
            "format": "uri"
          },
          "version": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "whenToUse": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "whenNotToUse": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgentResource"
            }
          },
          "capabilities": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "authentication": {
            "$ref": "#/components/schemas/AuthenticationSummary"
          },
          "errorRecovery": {
            "type": "object",
            "additionalProperties": false,
            "required": ["retry", "unsupported"],
            "properties": {
              "retry": {
                "type": "string"
              },
              "unsupported": {
                "type": "string"
              }
            }
          }
        }
      },
      "AgentResource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["type", "url"],
        "properties": {
          "type": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "language": {
            "type": "string"
          }
        }
      },
      "AuthenticationSummary": {
        "type": "object",
        "additionalProperties": false,
        "required": ["required", "description"],
        "properties": {
          "required": {
            "type": "boolean"
          },
          "description": {
            "type": "string"
          }
        }
      },
      "AgentCard": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "protocolVersion",
          "name",
          "description",
          "url",
          "version",
          "skills"
        ],
        "properties": {
          "protocolVersion": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "version": {
            "type": "string"
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "McpWellKnown": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "description",
          "icon",
          "protocol",
          "protocolVersion",
          "protocolVersions",
          "serverCardUrl",
          "handshakeUrl",
          "documentationUrl",
          "transport",
          "liveHandshake",
          "authentication",
          "capabilities",
          "methods",
          "mcpApps",
          "resources",
          "errorHandling"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "icon": {
            "type": "string",
            "format": "uri"
          },
          "serverCardUrl": {
            "type": "string",
            "format": "uri"
          },
          "handshakeUrl": {
            "type": "string",
            "format": "uri"
          },
          "transport": {
            "type": "string"
          },
          "authentication": {
            "$ref": "#/components/schemas/AuthenticationSummary"
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "protocol": {
            "type": "string"
          },
          "protocolVersion": {
            "type": "string"
          },
          "protocolVersions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1
          },
          "documentationUrl": {
            "type": "string",
            "format": "uri"
          },
          "liveHandshake": {
            "type": "boolean"
          },
          "capabilities": {
            "type": "object",
            "additionalProperties": false,
            "required": ["tools", "resources", "prompts", "streaming"],
            "properties": {
              "tools": {
                "type": "boolean"
              },
              "resources": {
                "type": "boolean"
              },
              "prompts": {
                "type": "boolean"
              },
              "streaming": {
                "type": "boolean"
              }
            }
          },
          "methods": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "initialize",
                "notifications/initialized",
                "resources/list",
                "resources/read",
                "tools/list",
                "tools/call"
              ]
            },
            "minItems": 5
          },
          "errorHandling": {
            "type": "object",
            "additionalProperties": false,
            "required": ["notFound", "fallback"],
            "properties": {
              "notFound": {
                "type": "string"
              },
              "fallback": {
                "type": "string"
              }
            }
          },
          "mcpApps": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "uiResource",
              "outputTemplate",
              "widgetMimeType",
              "description"
            ],
            "properties": {
              "uiResource": {
                "type": "string"
              },
              "outputTemplate": {
                "type": "string"
              },
              "widgetMimeType": {
                "type": "string"
              },
              "description": {
                "type": "string"
              }
            }
          }
        }
      },
      "McpServerCard": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "description",
          "version",
          "serverUrl",
          "documentationUrl",
          "protocol",
          "authentication",
          "errorHandling",
          "tools",
          "resources"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "serverUrl": {
            "type": "string",
            "format": "uri"
          },
          "documentationUrl": {
            "type": "string",
            "format": "uri"
          },
          "authentication": {
            "$ref": "#/components/schemas/AuthenticationSummary"
          },
          "tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpTool"
            }
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpResource"
            }
          },
          "protocol": {
            "type": "object",
            "additionalProperties": false,
            "required": ["transport", "liveHandshake", "description"],
            "properties": {
              "transport": {
                "type": "string"
              },
              "liveHandshake": {
                "type": "boolean"
              },
              "description": {
                "type": "string"
              }
            }
          },
          "errorHandling": {
            "type": "object",
            "additionalProperties": false,
            "required": ["notFound", "retry", "unsupported"],
            "properties": {
              "notFound": {
                "type": "string"
              },
              "retry": {
                "type": "string"
              },
              "unsupported": {
                "type": "string"
              }
            }
          }
        }
      },
      "OpenAiPluginManifest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schema_version",
          "name_for_human",
          "name_for_model",
          "description_for_human",
          "description_for_model",
          "auth",
          "api",
          "logo_url",
          "contact_email",
          "legal_info_url"
        ],
        "properties": {
          "schema_version": {
            "type": "string"
          },
          "name_for_human": {
            "type": "string"
          },
          "name_for_model": {
            "type": "string"
          },
          "description_for_human": {
            "type": "string"
          },
          "description_for_model": {
            "type": "string"
          },
          "auth": {
            "type": "object",
            "additionalProperties": false,
            "required": ["type"],
            "properties": {
              "type": {
                "type": "string",
                "enum": ["none"]
              }
            }
          },
          "api": {
            "type": "object",
            "additionalProperties": false,
            "required": ["type", "url", "is_user_authenticated"],
            "properties": {
              "type": {
                "type": "string",
                "enum": ["openapi"]
              },
              "url": {
                "type": "string",
                "format": "uri"
              },
              "is_user_authenticated": {
                "type": "boolean"
              }
            }
          },
          "logo_url": {
            "type": "string",
            "format": "uri"
          },
          "contact_email": {
            "type": "string",
            "format": "email"
          },
          "legal_info_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "PagefindEntry": {
        "type": "object",
        "additionalProperties": true,
        "description": "Pagefind-generated search entry metadata."
      },
      "ApiErrorDetail": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "code",
          "message",
          "status",
          "documentation_url",
          "availableResources"
        ],
        "properties": {
          "code": {
            "type": "string",
            "enum": ["not_found"]
          },
          "message": {
            "type": "string",
            "minLength": 1
          },
          "status": {
            "type": "integer",
            "enum": [404]
          },
          "documentation_url": {
            "type": "string",
            "format": "uri"
          },
          "availableResources": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "minItems": 1
          }
        }
      },
      "ApiErrorResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["error"],
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ApiErrorDetail"
          }
        }
      },
      "McpJsonRpcRequest": {
        "type": "object",
        "additionalProperties": true,
        "required": ["jsonrpc", "method"],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "description": "JSON-RPC request id. String, number, null, or omitted notification id.",
            "type": ["string", "number", "null"]
          },
          "method": {
            "type": "string",
            "enum": [
              "initialize",
              "notifications/initialized",
              "resources/list",
              "resources/read",
              "tools/list",
              "tools/call"
            ]
          },
          "params": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "McpJsonRpcResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": ["jsonrpc", "id"],
        "properties": {
          "jsonrpc": {
            "type": "string",
            "const": "2.0"
          },
          "id": {
            "type": ["string", "number", "null"]
          },
          "result": {
            "description": "Method-specific MCP result for initialize, resources/list, resources/read, tools/list, or tools/call. Initialize returns the standard MCP InitializeResult with object-shaped tools and resources capabilities."
          },
          "error": {
            "type": "object",
            "additionalProperties": true,
            "required": ["code", "message"],
            "properties": {
              "code": {
                "type": "integer"
              },
              "message": {
                "type": "string"
              },
              "data": {}
            }
          }
        },
        "oneOf": [
          {
            "required": ["result"],
            "not": {
              "required": ["error"]
            }
          },
          {
            "required": ["error"],
            "not": {
              "required": ["result"]
            }
          }
        ]
      },
      "McpTool": {
        "type": "object",
        "additionalProperties": true,
        "required": [
          "name",
          "description",
          "inputSchema",
          "outputSchema",
          "annotations",
          "url"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 4
          },
          "description": {
            "type": "string",
            "minLength": 20
          },
          "inputSchema": {
            "type": "object"
          },
          "outputSchema": {
            "type": "object"
          },
          "annotations": {
            "type": "object",
            "additionalProperties": true,
            "required": ["readOnlyHint", "destructiveHint"],
            "properties": {
              "readOnlyHint": {
                "type": "boolean"
              },
              "destructiveHint": {
                "type": "boolean"
              },
              "idempotentHint": {
                "type": "boolean"
              },
              "openWorldHint": {
                "type": "boolean"
              }
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "McpResource": {
        "type": "object",
        "additionalProperties": false,
        "required": ["uri", "name", "mimeType"],
        "properties": {
          "uri": {
            "type": "string",
            "format": "uri"
          },
          "name": {
            "type": "string"
          },
          "mimeType": {
            "type": "string"
          }
        }
      }
    },
    "responses": {
      "NotFound": {
        "description": "The requested public discovery resource was not found. Retry the documented canonical URL once, then fall back to llms-full.txt, index.md, RSS, and sitemap resources. The JSON body is optional: these discovery URLs are static assets, so the platform may instead deliver an opaque HTML error page, and agents MUST handle that HTML fallback.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/html": {}
        }
      },
      "RateLimited": {
        "description": "The client should slow down repeated public discovery requests and retry later. The JSON body is optional: these discovery URLs are static assets, so the platform may instead deliver an opaque HTML error page, and agents MUST handle that HTML fallback.",
        "headers": {
          "Retry-After": {
            "description": "Seconds to wait before retrying when provided.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/html": {}
        }
      },
      "ServerError": {
        "description": "Unexpected server error. Retry later, then fall back to cached RSS, sitemap, or Markdown discovery files. The JSON body is optional: these discovery URLs are static assets, so the platform may instead deliver an opaque HTML error page, and agents MUST handle that HTML fallback.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          },
          "text/html": {}
        }
      },
      "ApiNotFound": {
        "description": "Unsupported public API path. Agents should stop probing this path and use the documented static discovery resources instead.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            }
          }
        }
      },
      "MethodNotAllowed": {
        "description": "Only GET and POST are supported on the MCP discovery endpoint.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "additionalProperties": false,
              "required": ["error"],
              "properties": {
                "error": {
                  "type": "object",
                  "additionalProperties": true,
                  "required": [
                    "code",
                    "message",
                    "status",
                    "documentation_url"
                  ],
                  "properties": {
                    "code": {
                      "type": "string",
                      "const": "method_not_allowed"
                    },
                    "message": {
                      "type": "string"
                    },
                    "status": {
                      "type": "integer",
                      "const": 405
                    },
                    "documentation_url": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
