v0.2.0 · live
CAPFRAME
← leaderboard/OpenAI Docs MCP/tool · fetch_openai_doc
§ toolhttpOpenAI Docs MCP

fetch_openai_doc

on https://developers.openai.com/mcp

Severity

critical0
high1
medium2
low0
info0

3 findings on this tool

  1. highssrf surfacef-r8-fetch_openai_doc

    Tool `fetch_openai_doc` accepts an unconstrained URL / endpoint parameter

    The parameter(s) `url` look like URL or endpoint inputs but carry no `pattern` or `enum` constraint. An agent tricked by an indirect-injection payload can invoke this tool with an internal-service URL (e.g. `http://169.254.169.254/`) to exfiltrate cloud metadata, probe internal APIs, or pivot to services the host can reach but the caller cannot.

    fix: Constrain the URL parameter with an allow-list `enum`, or a `pattern` that restricts scheme and domain. Validate server-side against an allow-list and reject private / loopback / link-local address ranges at the HTTP client level.

    OWASP LLM07NIST MANAGE-2.2ATLAS T0051CAST-02
  2. mediumunconstrained inputf-r1-fetch_openai_doc

    Tool `fetch_openai_doc` accepts unconstrained string input

    The following string parameter(s) have no `maxLength` constraint: `anchor`, `url`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.

    fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.

    OWASP LLM01NIST MEASURE-2.3ATLAS T0051CAST-03
  3. mediumindirect injectionf-r6-fetch_openai_doc

    Tool `fetch_openai_doc` fetches external web content -- indirect-injection surface

    Description: "Fetch the markdown for a specific doc page from `developers.openai.com`, `platform.openai.com`, or `learn.chatgpt.com` so you can quote or summarize exact, up-to-date guidance (schemas, examples, limits, and edge cases). Prefer to **`search_openai_docs` first** (or `list_openai_docs` if you’re browsing) to find the best URL, then `fetch_openai_doc` to pull the exact text; you can pass `anchor` (for example, `#streaming`) to fetch just that section." -- this tool pulls externally-controlled content into the agent's context window, the canonical indirect-injection vector. Even when the user supplies the URL, content at that URL can carry hostile instructions.

    fix: Sandbox the fetched content: strip prompts before forwarding to the model, constrain to an allow-list of domains, and route through capframe-guard with a `domain in [...]` caveat.

    OWASP LLM01NIST MEASURE-2.3ATLAS T0051CAST-02

About this tool

fetch_openai_doc is one of 5 tools exposed by OpenAI Docs MCP. The server scored 80/100 overall against the capframe rule engine (source: http). Last scanned 2026-07-20.

The findings above are emitted by the public capframe.findings.v1 schema. Disagree with one? Open an issue.