{"openapi":"3.1.0","info":{"title":"ReadMe Content (BYOK) API","version":"0.1.0","description":"ReadMe Content (BYOK) lets an AI assistant read your own ReadMe Content data through the ReadMe Content API with a key you supply (ReadMe API key). Read-only: 7 tools (list_custom_pages, get_custom_page, get_reference_page, get_glossary, suggest_pages_for_missing_url, list_images, get_outbound_ips). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-readme-content.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-readme-content/docs"},"termsOfService":"https://connectorbay.com/byok-readme-content/terms"},"servers":[{"url":"https://byok-readme-content.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-readme-content/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_custom_pages":{"post":{"operationId":"list_custom_pages","summary":"List the custom pages of a version with slug, title, metadata title and description, privacy and update time. Page bodie","description":"List the custom pages of a version with slug, title, metadata title and description, privacy and update time. Page bodies are not returned. Only for projects on ReadMe Refactored. Use for \"Which custom pages does my ReadMe project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"branch":{"description":"Project version number, 'stable' for the stable version, or a branch name.","maxLength":100,"title":"Branch","type":"string"}},"required":["branch"],"title":"list_custom_pagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_custom_page":{"post":{"operationId":"get_custom_page","summary":"Get one custom page by slug: title, metadata, privacy and update time (body left out). Only for projects on ReadMe Refac","description":"Get one custom page by slug: title, metadata, privacy and update time (body left out). Only for projects on ReadMe Refactored. Use for \"When was my ReadMe pricing page last updated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"branch":{"description":"Project version number, 'stable' for the stable version, or a branch name.","maxLength":100,"title":"Branch","type":"string"},"slug":{"description":"Slug of the custom page, for example 'pricing'.","maxLength":100,"title":"Slug","type":"string"}},"required":["branch","slug"],"title":"get_custom_pageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_reference_page":{"post":{"operationId":"get_reference_page","summary":"Get one API reference page by slug: title, type (endpoint, basic and so on), state, category, parent, privacy and metada","description":"Get one API reference page by slug: title, type (endpoint, basic and so on), state, category, parent, privacy and metadata (body and API definition left out). Only for projects on ReadMe Refactored. Use for \"What state is my ReadMe get-users reference page in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"branch":{"description":"Project version number, 'stable' for the stable version, or a branch name.","maxLength":100,"title":"Branch","type":"string"},"slug":{"description":"Slug of the reference page, for example 'get-users'.","maxLength":100,"title":"Slug","type":"string"}},"required":["branch","slug"],"title":"get_reference_pageArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_glossary":{"post":{"operationId":"get_glossary","summary":"Export the project's glossary: each term and its definition, optionally with terms inherited from an Enterprise group. U","description":"Export the project's glossary: each term and its definition, optionally with terms inherited from an Enterprise group. Use for \"Which glossary terms does my ReadMe project define\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_group":{"anyOf":[{"enum":["true","false"],"type":"string"},{"type":"null"}],"default":"false","description":"Set to true to list terms inherited from the Enterprise group separately (default false).","title":"Include Group"}},"title":"get_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/suggest_pages_for_missing_url":{"post":{"operationId":"suggest_pages_for_missing_url","summary":"Suggest existing pages similar to a missing documentation path (useful for broken links); returns title and relative URL","description":"Suggest existing pages similar to a missing documentation path (useful for broken links); returns title and relative URL of each suggestion. Use for \"Which ReadMe page matches the missing path /docs/old-guide\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"pathname":{"description":"The missing path to find similar pages for, for example '/docs/old-guide' (query strings are ignored).","maxLength":300,"title":"Pathname","type":"string"},"version":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Version to search within (the stable version when omitted).","title":"Version"}},"required":["pathname"],"title":"suggest_pages_for_missing_urlArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_images":{"post":{"operationId":"list_images","summary":"List images uploaded to the project with name, size and address. Use for \"Which images are uploaded to my ReadMe project","description":"List images uploaded to the project with name, size and address. Use for \"Which images are uploaded to my ReadMe project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Per Page"}},"title":"list_imagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_outbound_ips":{"post":{"operationId":"get_outbound_ips","summary":"List the IP addresses ReadMe uses for outbound requests (for firewall allow lists). Use for \"Which IP addresses does Rea","description":"List the IP addresses ReadMe uses for outbound requests (for firewall allow lists). Use for \"Which IP addresses does ReadMe call from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_outbound_ipsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}