{"items":[{"type":"link","label":"Docs MCP","link":"/docs/realm/customization/mcp-server/openapi","routeSlug":"/docs/realm/customization/mcp-server/openapi","content":{"contentType":"overview","meta":{"name":"Docs MCP"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"openapi.json","url":"/_bundle/docs/realm/customization/mcp-server/openapi.json?download"},{"kind":"download","label":"openapi.yaml","url":"/_bundle/docs/realm/customization/mcp-server/openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"externallink","title":"URL","titleTranslationKey":"info.contact.url","label":"https://redocly.com","url":"https://redocly.com"},{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"team@redocly.com","label":"team@redocly.com","withCopyButton":true,"copyContent":"team@redocly.com"},{"kind":"externallink","title":"License","titleTranslationKey":"info.license","label":"Custom","url":"https://redocly.com/subscription-agreement/"},{"kind":"externallink","label":"Terms of Service","labelTranslationKey":"info.termsOfService","url":"https://redocly.com/subscription-agreement/"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"MCP server","titleTranslationKey":"mcp.title","children":[{"kind":"attribute","label":"Protocol version","labelTranslationKey":"mcp.protocolVersion","value":"2025-06-18","withCopyButton":true,"copyContent":"2025-06-18"},{"kind":"tags","title":"Capabilities","titleTranslationKey":"mcp.capabilities","tags":[{"text":"logging","color":"green","icon":"checkmark"},{"text":"tools","color":"green","icon":"checkmark"}]},{"kind":"externallink","title":"Endpoint","titleTranslationKey":"mcp.endpoint","label":"https://{projectHost}/mcp","url":"https://{projectHost}/mcp","withCopyButton":true,"copyContent":"https://{projectHost}/mcp"},{"kind":"connect-mcp-button","title":"Connect","actions":["mcp-cursor"],"mcpUrl":"https://{projectHost}/mcp"}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"/_mock/docs/realm/customization/mcp-server/openapi","description":"Mock server","isMockServer":true},{"url":"https://{projectHost}/mcp","description":"Project Docs MCP endpoint.","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}},{"url":"https://{projectHost}/mcp-public","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Docs MCP (1.0.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Connect AI assistants to your project's Docs MCP server to browse API descriptions, inspect endpoints, and search documentation content."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Base URL:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The Docs MCP server is available at "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/mcp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" on your project host. If your project is deployed under a path prefix, prepend that prefix to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/mcp"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public endpoint:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Projects that enable "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/docs/realm/config/mcp"},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"mcp.docs.publicEndpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" also serve "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/mcp-public"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". That endpoint requires no login and serves only the content that RBAC grants to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"anonymous"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" team."},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"For setup and configuration guidance, see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/docs/realm/customization/mcp-server"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Model Context Protocol server"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/docs/realm/config/mcp"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MCP configuration reference"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}],"sectionId":"/docs/realm/customization/mcp-server/openapi"}],"sectionId":"/docs/realm/customization/mcp-server/openapi"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/authentication"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Public projects can expose Docs MCP without authentication."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"If your project requires login ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"rbac"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"requiresLogin"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" configured), Docs MCP Server requires the user to authenticate using the configured method."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This requirement ensures that AI Agents can only access APIs and operations the authenticated user has permission to view."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"whoami"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tool is only available when authentication handling is enabled for the Docs MCP server."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/mcp-public"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoint never challenges for authentication."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"It ignores any credentials the client sends and serves only the content available to the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"anonymous"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" team."},"children":[]}]}]}]}],"sectionId":"/docs/realm/customization/mcp-server/openapi/section/authentication"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":3,"id":"section/token-validation"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Token validation"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Every request carries its own token, and the server validates that token on each request."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The server checks the signature against the identity provider that issued the token, checks the expiry, and compares the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" (audience) claim to your organization ID."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token whose "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" names a different organization is recorded and, when audience enforcement is on for your project, rejected with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"401"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Enforcement is off by default, and "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/docs/realm/config/mcp#token-audience-validation"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MCP configuration reference"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" names the environment variable that turns it on."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Two cases skip the audience comparison."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Tokens that carry no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"aud"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" claim are accepted, because portal session tokens and tokens from some identity provider setups don't set one."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Projects that run without an organization ID, such as self-hosted deployments, have nothing to compare against."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token isn't sufficient to determine what content is served."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RBAC decides which content and API descriptions the request can reach."},"children":[]}]}]}]}],"sectionId":"/docs/realm/customization/mcp-server/openapi/section/token-validation"}]}]}},{"type":"link","label":"Authentication","link":"/docs/realm/customization/mcp-server/openapi/section/authentication","routeSlug":"/docs/realm/customization/mcp-server/openapi/section/authentication","content":null},{"type":"link","label":"Token validation","link":"/docs/realm/customization/mcp-server/openapi/section/token-validation","routeSlug":"/docs/realm/customization/mcp-server/openapi/section/token-validation","content":null},{"type":"group","label":"Identity","link":"/docs/realm/customization/mcp-server/openapi/authentication","routeSlug":"/docs/realm/customization/mcp-server/openapi/authentication","items":[{"type":"link","label":"whoami","link":"/docs/realm/customization/mcp-server/openapi/authentication/whoami","routeSlug":"/docs/realm/customization/mcp-server/openapi/authentication/whoami","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"whoami"},"meta":{"name":"whoami"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"whoami","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"whoami","id":"/docs/realm/customization/mcp-server/openapi/authentication/whoami"},"children":[]}]}]}}],"content":{"contentType":"group","meta":{"name":"Authentication"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Identity","showPageActions":true},{"nodeType":"markdoc","content":"Tools for authentication and identity inspection for MCP clients when Docs MCP authentication handling is enabled."}],"panels":[{"children":[{"kind":"group-items","title":"MCP Tools","titleTranslationKey":"openapi.mcp.tools","items":[{"title":"whoami","prefix":{"name":"tool","color":"tool"},"link":"/authentication/whoami","deprecated":false}]}]}]}]}},{"type":"group","label":"API Catalog","link":"/docs/realm/customization/mcp-server/openapi/api-catalog","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog","items":[{"type":"link","label":"list-apis","link":"/docs/realm/customization/mcp-server/openapi/api-catalog/list-apis","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog/list-apis","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"list-apis"},"meta":{"name":"list-apis"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"list-apis","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"list-apis","id":"/docs/realm/customization/mcp-server/openapi/api-catalog/list-apis"},"children":[]}]}]}},{"type":"link","label":"get-endpoints","link":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoints","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoints","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"get-endpoints"},"meta":{"name":"get-endpoints"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"get-endpoints","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"get-endpoints","id":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoints"},"children":[]}]}]}},{"type":"link","label":"get-endpoint-info","link":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoint-info","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoint-info","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"get-endpoint-info"},"meta":{"name":"get-endpoint-info"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"get-endpoint-info","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"get-endpoint-info","id":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-endpoint-info"},"children":[]}]}]}},{"type":"link","label":"get-security-schemes","link":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-security-schemes","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-security-schemes","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"get-security-schemes"},"meta":{"name":"get-security-schemes"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"get-security-schemes","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"get-security-schemes","id":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-security-schemes"},"children":[]}]}]}},{"type":"link","label":"get-full-api-description","link":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-full-api-description","routeSlug":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-full-api-description","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"get-full-api-description"},"meta":{"name":"get-full-api-description"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"get-full-api-description","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"get-full-api-description","id":"/docs/realm/customization/mcp-server/openapi/api-catalog/get-full-api-description"},"children":[]}]}]}}],"content":{"contentType":"group","meta":{"name":"API Catalog"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"API Catalog","showPageActions":true},{"nodeType":"markdoc","content":"Tools for discovering published APIs, inspecting endpoints, reviewing security schemes, and retrieving full OpenAPI descriptions."}],"panels":[{"children":[{"kind":"group-items","title":"MCP Tools","titleTranslationKey":"openapi.mcp.tools","items":[{"title":"list-apis","prefix":{"name":"tool","color":"tool"},"link":"/api-catalog/list-apis","deprecated":false},{"title":"get-endpoints","prefix":{"name":"tool","color":"tool"},"link":"/api-catalog/get-endpoints","deprecated":false},{"title":"get-endpoint-info","prefix":{"name":"tool","color":"tool"},"link":"/api-catalog/get-endpoint-info","deprecated":false},{"title":"get-security-schemes","prefix":{"name":"tool","color":"tool"},"link":"/api-catalog/get-security-schemes","deprecated":false},{"title":"get-full-api-description","prefix":{"name":"tool","color":"tool"},"link":"/api-catalog/get-full-api-description","deprecated":false}]}]}]}]}},{"type":"group","label":"Search","link":"/docs/realm/customization/mcp-server/openapi/search","routeSlug":"/docs/realm/customization/mcp-server/openapi/search","items":[{"type":"link","label":"search","link":"/docs/realm/customization/mcp-server/openapi/search/search","routeSlug":"/docs/realm/customization/mcp-server/openapi/search/search","httpVerb":"tool","content":{"contentType":"item","seo":{"title":"search"},"meta":{"name":"search"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"search","showPageActions":true}],"panels":[]},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"tag","tag":"mcpTool","attributes":{"name":"search","id":"/docs/realm/customization/mcp-server/openapi/search/search"},"children":[]}]}]}}],"content":{"contentType":"group","meta":{"name":"Search"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Search","showPageActions":true},{"nodeType":"markdoc","content":"Tools for searching documentation content."}],"panels":[{"children":[{"kind":"group-items","title":"MCP Tools","titleTranslationKey":"openapi.mcp.tools","items":[{"title":"search","prefix":{"name":"tool","color":"tool"},"link":"/search/search","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/OpenApiServer":{"id":"components/schemas/OpenApiServer","kind":"json-schema","title":"OpenApiServer","data":{"type":"object","description":"OpenAPI Server Object for the published API description.","properties":{"url":{"type":"string","description":"Server URL."},"description":{"type":"string","description":"Human-readable server description."},"name":{"type":"string","description":"Optional server name."},"variables":{"type":"object","description":"Server variable definitions keyed by variable name.","additionalProperties":{"type":"object","properties":{"default":{"type":"string"},"enum":{"type":"array","items":{"type":"string"}},"description":{"type":"string"}}}}},"required":["url"],"additionalProperties":true}},"components/schemas/ApiCatalogItem":{"id":"components/schemas/ApiCatalogItem","kind":"json-schema","title":"ApiCatalogItem","data":{"type":"object","description":"API entry returned by the docs catalog.","properties":{"name":{"type":"string","description":"API name used by the Docs MCP tools."},"description":{"type":"string","description":"API description or summary."},"version":{"type":"string","description":"API version string from the source description."},"servers":{"type":"array","description":"Servers defined by the published OpenAPI description.","items":{"$ref":"#/components/schemas/OpenApiServer"}},"filePath":{"type":"string","description":"API definition file path."}},"required":["name","filePath"],"additionalProperties":false}},"components/schemas/ApiEndpointSummary":{"id":"components/schemas/ApiEndpointSummary","kind":"json-schema","title":"ApiEndpointSummary","data":{"type":"object","description":"Endpoint summary returned by the API catalog tools.","properties":{"path":{"type":"string","description":"Endpoint path."},"method":{"type":"string","description":"Uppercase HTTP method."},"summary":{"type":"string","description":"OpenAPI operation summary."},"description":{"type":"string","description":"OpenAPI operation description."},"security":{"type":"array","description":"Operation security requirements from the source OpenAPI description.","items":{"type":"object","additionalProperties":true}}},"required":["path","method"],"additionalProperties":false}},"components/schemas/WhoAmIOutput":{"id":"components/schemas/WhoAmIOutput","kind":"json-schema","title":"WhoAmIOutput","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authenticated user details returned by the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"whoami"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tool."},"children":[]}]}]}],"properties":{"email":{"type":"string"},"name":{"type":"string"},"subject":{"type":"string"},"clientId":{"type":"string"},"scope":{"type":"string"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}},"additionalProperties":false}},"components/schemas/ListApisOutput":{"id":"components/schemas/ListApisOutput","kind":"json-schema","title":"ListApisOutput","data":{"type":"object","description":"Paginated list of APIs available through the Docs MCP server.","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ApiCatalogItem"}},"limit":{"type":"number"},"total":{"type":"number"},"page":{"type":"number"},"totalPages":{"type":"number"}},"required":["items","limit","total","page","totalPages"],"additionalProperties":false}},"components/schemas/GetEndpointsOutput":{"id":"components/schemas/GetEndpointsOutput","kind":"json-schema","title":"GetEndpointsOutput","data":{"type":"object","description":"Endpoint list for a single published API.","properties":{"api":{"type":"string","description":"API title."},"version":{"type":"string","description":"API version."},"servers":{"type":"array","description":"Servers defined by the published OpenAPI description.","items":{"$ref":"#/components/schemas/OpenApiServer"}},"endpoints":{"type":"array","items":{"$ref":"#/components/schemas/ApiEndpointSummary"}}},"required":["api","version","servers","endpoints"],"additionalProperties":false}},"components/schemas/GetEndpointInfoOutput":{"id":"components/schemas/GetEndpointInfoOutput","kind":"json-schema","title":"GetEndpointInfoOutput","data":{"type":"object","description":"Detailed endpoint information with resolved OpenAPI structures.","properties":{"api":{"type":"string","description":"API title."},"version":{"type":"string","description":"API version."},"servers":{"type":"array","description":"Servers defined by the published OpenAPI description.","items":{"$ref":"#/components/schemas/OpenApiServer"}},"endpoint":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Endpoint details derived from the resolved OpenAPI operation. Besides "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"path"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"method"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the object may include parameters, request body, responses, security, examples, and other operation-level fields from the source OpenAPI description."},"children":[]}]}]}],"properties":{"path":{"type":"string"},"method":{"type":"string"}},"required":["path","method"],"additionalProperties":true},"globalSecurity":{"type":"array","description":"Global security requirements defined on the OpenAPI document.","items":{"type":"object","additionalProperties":true}},"securitySchemes":{"type":"object","description":"Security schemes map from the OpenAPI components section.","additionalProperties":true}},"required":["api","version","servers","endpoint","globalSecurity","securitySchemes"],"additionalProperties":false}},"components/schemas/GetSecuritySchemesOutput":{"id":"components/schemas/GetSecuritySchemesOutput","kind":"json-schema","title":"GetSecuritySchemesOutput","data":{"type":"object","description":"Security metadata returned for a published API.","properties":{"name":{"type":"string","description":"API title."},"version":{"type":"string","description":"API version."},"securitySchemes":{"type":"object","description":"Security schemes map from the OpenAPI components section.","additionalProperties":true},"security":{"type":"array","description":"Global security requirements defined on the OpenAPI document.","items":{"type":"object","additionalProperties":true}}},"additionalProperties":false}},"components/schemas/GetFullApiDescriptionOutput":{"id":"components/schemas/GetFullApiDescriptionOutput","kind":"json-schema","title":"GetFullApiDescriptionOutput","data":{"type":"object","description":"Full published OpenAPI document after access filtering.","properties":{"api":{"type":"string","description":"API title."},"version":{"type":"string","description":"API version."},"definition":{"type":"object","description":"Full OpenAPI definition returned by the Docs MCP server.","additionalProperties":true}},"required":["api","version","definition"],"additionalProperties":false}},"components/schemas/SearchOutput":{"id":"components/schemas/SearchOutput","kind":"json-schema","title":"SearchOutput","data":{"type":"string","description":"Markdown string containing the rendered search results."}}},"exampleStore":{},"securitySchemeStore":{"OAuth2":{"id":"OAuth2","type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://{projectHost}/_mcp/oauth2/auth","tokenUrl":"https://{projectHost}/_mcp/oauth2/token-portal","scopes":{}}}}},"mcp":{"protocolVersion":"2025-06-18","servers":[{"url":"https://{projectHost}/mcp","description":"Project Docs MCP endpoint.","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}},{"url":"https://{projectHost}/mcp-public","description":"Public Docs MCP endpoint, served only when `mcp.docs.publicEndpoint` is enabled.\nIt requires no authentication and serves only content available to the `anonymous` team.\n","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}}],"capabilities":{"logging":{},"tools":{"listChanged":true}},"tools":[{"name":"whoami","description":"Get information about the currently authenticated user","inputSchema":{"type":"object","additionalProperties":false,"properties":{}},"outputSchema":{"$ref":"#/components/schemas/WhoAmIOutput"},"tags":["Authentication"]},{"name":"list-apis","description":"Lists available APIs with their context and purpose","inputSchema":{"type":"object","additionalProperties":false,"properties":{"filter":{"type":"string","description":"Matches part of an API name, or of a description when no name matches","minLength":1},"page":{"type":"number","description":"Page number","minimum":1,"default":1},"limit":{"type":"number","description":"Number of APIs per page. Default is 300","minimum":1,"default":300}}},"outputSchema":{"$ref":"#/components/schemas/ListApisOutput"},"tags":["API Catalog"]},{"name":"get-endpoints","description":"Get all endpoints for a specific API","inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"API name, or a unique part of it","minLength":1},"version":{"type":"string","description":"API version"},"filePath":{"type":"string","description":"API definition file path"}},"required":["name"]},"outputSchema":{"$ref":"#/components/schemas/GetEndpointsOutput"},"tags":["API Catalog"]},{"name":"get-endpoint-info","description":"Get comprehensive information about specific endpoint including parameters, security, and examples","inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"API name, or a unique part of it","minLength":1},"path":{"type":"string","description":"Endpoint path (for example, `/users`)","minLength":1},"method":{"type":"string","description":"HTTP method","enum":["GET","POST","PUT","DELETE","PATCH","OPTIONS","HEAD","TRACE","get","post","put","delete","patch","options","head","trace"],"minLength":1},"version":{"type":"string","description":"API version"},"filePath":{"type":"string","description":"API definition file path"}},"required":["name","path","method"]},"outputSchema":{"$ref":"#/components/schemas/GetEndpointInfoOutput"},"tags":["API Catalog"]},{"name":"get-security-schemes","description":"Get the security schemes for a specific API","inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"API name, or a unique part of it","minLength":1},"version":{"type":"string","description":"API version"},"filePath":{"type":"string","description":"API definition file path"}},"required":["name"]},"outputSchema":{"$ref":"#/components/schemas/GetSecuritySchemesOutput"},"tags":["API Catalog"]},{"name":"get-full-api-description","description":"Get the complete OpenAPI description","inputSchema":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","description":"API name, or a unique part of it","minLength":1},"version":{"type":"string","description":"API version"},"filePath":{"type":"string","description":"API definition file path"}},"required":["name"]},"outputSchema":{"$ref":"#/components/schemas/GetFullApiDescriptionOutput"},"tags":["API Catalog"]},{"name":"search","description":"Search across the documentation to fetch relevant content for a given query","inputSchema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","description":"Search query.","minLength":1},"product":{"type":"string","description":"Optional product name to filter search results by specific product."}},"required":["query"]},"outputSchema":{"$ref":"#/components/schemas/SearchOutput"},"tags":["Search"]}]},"servers":[{"url":"/_mock/docs/realm/customization/mcp-server/openapi","isMockServer":true,"description":"Mock server"},{"url":"https://{projectHost}/mcp","description":"Project Docs MCP endpoint.","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}},{"url":"https://{projectHost}/mcp-public","variables":{"projectHost":{"default":"redocly.com","description":"Project host. Prepend your path prefix if applicable."}}}]},"options":{"excludeFromSearch":true,"feedback":{"type":"sentiment","settings":{"comment":{"likeLabel":"What was most helpful?","dislikeLabel":"What can we improve?"},"label":"Was this section helpful?"}},"hideSidebar":true,"mockServer":{"url":"/_mock/docs/realm/customization/mcp-server/openapi","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/docs/realm/customization/mcp-server/openapi.json?download"},{"url":"/_bundle/docs/realm/customization/mcp-server/openapi.yaml?download"}],"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Docs MCP","description":"Connect AI assistants to your project's Docs MCP server to browse API descriptions, inspect endpoints, and search documentation content.\n\n**Base URL:** The Docs MCP server is available at `/mcp` on your project host. If your project is deployed under a path prefix, prepend that prefix to `/mcp`.\n\n**Public endpoint:** Projects that enable [`mcp.docs.publicEndpoint`](../../config/mcp.md) also serve `/mcp-public`. That endpoint requires no login and serves only the content that RBAC grants to the `anonymous` team.\n\n{% admonition type=\"info\" %}\nFor setup and configuration guidance, see [Model Context Protocol server](./index.md) and [MCP configuration reference](../../config/mcp.md).\n{% /admonition %}\n\n## Authentication\n\nPublic projects can expose Docs MCP without authentication.\n\nIf your project requires login (`rbac` or `requiresLogin` configured), Docs MCP Server requires the user to authenticate using the configured method.\nThis requirement ensures that AI Agents can only access APIs and operations the authenticated user has permission to view.\n\nThe `whoami` tool is only available when authentication handling is enabled for the Docs MCP server.\n\nThe `/mcp-public` endpoint never challenges for authentication.\nIt ignores any credentials the client sends and serves only the content available to the `anonymous` team.\n\n### Token validation\n\nEvery request carries its own token, and the server validates that token on each request.\nThe server checks the signature against the identity provider that issued the token, checks the expiry, and compares the `aud` (audience) claim to your organization ID.\n\nA token whose `aud` names a different organization is recorded and, when audience enforcement is on for your project, rejected with a `401` response.\nEnforcement is off by default, and [MCP configuration reference](../../config/mcp.md#token-audience-validation) names the environment variable that turns it on.\n\nTwo cases skip the audience comparison.\nTokens that carry no `aud` claim are accepted, because portal session tokens and tokens from some identity provider setups don't set one.\nProjects that run without an organization ID, such as self-hosted deployments, have nothing to compare against.\n\nA token isn't sufficient to determine what content is served.\nRBAC decides which content and API descriptions the request can reach.\n"}},"baseSlug":"/docs/realm/customization/mcp-server/openapi","routesMapping":{}}