{
  "schemaVersion": 1,
  "methodology": "https://ionbin.com/interfaces/methodology/#evaluations",
  "evaluation": {
    "id": "cloudflare-mcp",
    "testedOn": "2026-10-18",
    "coverage": "remote-boundary",
    "summary": "The current Cloudflare API MCP endpoint rejected credential-free initialization and published OAuth discovery metadata. No Cloudflare resources were accessed.",
    "identity": {
      "version": "Remote deployment version not disclosed by the observed responses",
      "target": "https://mcp.cloudflare.com/mcp",
      "integrity": "HTTPS certificate verification enabled. Public resource-metadata body SHA-256: db5e479bb0e41f6d8ed1edf3c0215fdc48b7fc8ba7dff4af13bfc6abefce9873. This fingerprints the observed metadata, not the deployed server implementation."
    },
    "environment": [
      "Windows 11 build 26200; Python 3.12.10 urllib; OpenSSL 3.0.16.",
      "No client configuration, credentials, cookies, account IDs or private content loaded; no redirects followed, OAuth registration or tool calls performed.",
      "Observed 2026-10-19T00:47:10.611440+00:00 through 2026-10-19T00:47:20.626366+00:00 UTC.",
      "One request per listed check; 20-second timeout and 64-KiB response cap. Initial sandbox DNS failures were retained separately and resolved with approved network access; they are not endpoint failures."
    ],
    "checks": [
      {
        "id": "cloudflare-mcp-initialize",
        "name": "Credential-free initialization",
        "method": "POST https://mcp.cloudflare.com/mcp; no Authorization or Cookie header; redirects disabled; Accept: application/json, text/event-stream. Content-Type: application/json; MCP-Protocol-Version: 2025-03-26; body: {\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"IonBin-account-free-evaluation\",\"version\":\"1.0.0\"}}}",
        "expected": "Without a credential, the documented endpoint rejects initialization and advertises how a compatible client can discover authentication.",
        "observed": "HTTP 401 at 2026-10-19T00:47:10.611440+00:00. WWW-Authenticate: Bearer; resource_metadata=https://mcp.cloudflare.com/.well-known/oauth-protected-resource/mcp. Advertised challenge scope: user:read account:read. Empty response body.",
        "outcome": "pass"
      },
      {
        "id": "cloudflare-mcp-resource-metadata",
        "name": "Public authentication discovery",
        "method": "GET https://mcp.cloudflare.com/.well-known/oauth-protected-resource/mcp; no Authorization or Cookie header; redirects disabled; Accept: application/json, text/event-stream.",
        "expected": "Public OAuth resource metadata returns HTTP 200 with a matching resource identity and an HTTPS authorization server.",
        "observed": "HTTP 200 at 2026-10-19T00:47:20.626366+00:00; Content-Type: application/json. Resource: https://mcp.cloudflare.com/mcp. 2 supported scopes: user:read, account:read. Authorization server: https://mcp.cloudflare.com. Bearer methods: header.",
        "outcome": "pass"
      }
    ],
    "findings": [
      {
        "title": "Discovery scopes do not measure resource authority",
        "basis": "observed",
        "severity": "informational",
        "detail": "The 401 challenge and public metadata named user:read and account:read. Those names alone do not tell us what a later authorized execute call can do. We did not receive a token or invoke any API tool.",
        "practicalAdvice": "Review the actual Cloudflare resource permissions during setup; do not infer a read-only connection from discovery labels."
      },
      {
        "title": "Code execution still needs narrow API permissions",
        "basis": "documented",
        "severity": "informational",
        "detail": "The API MCP uses generated code to call Cloudflare APIs. Its documentation allows OAuth permission selection or scoped API tokens; account tokens also need Account Resources: Read for account detection. IP-filtered API tokens are currently unsupported.",
        "practicalAdvice": "Use a dedicated token or grant for the selected account and task. Check compatibility before relying on a token with an IP filter."
      }
    ],
    "caveats": [
      "This review targets https://mcp.cloudflare.com/mcp, not the separate public documentation or older product-specific servers.",
      "A sandbox for generated code does not make authorized DNS, deployment or resource changes harmless. Review the requested API method and target.",
      "Upstream caps tool results by default. Disabling truncation can return very large responses, so broad inventory queries need explicit limits."
    ],
    "notTested": [
      "OAuth consent, API-token permissions, account selection, denied writes and revocation.",
      "Code Mode execution, sandbox containment, API result truncation and prompt-injection resistance.",
      "DNS, Workers, storage or other account workflows; no authenticated tools were listed or called.",
      "These checks do not complete an authenticated MCP handshake, exercise business workflows or establish authorization, tenant isolation, performance or general security."
    ],
    "sources": [
      {
        "label": "Official current Cloudflare server catalog",
        "url": "https://developers.cloudflare.com/agents/model-context-protocol/cloudflare/servers-for-cloudflare/"
      },
      {
        "label": "Official API server, token caveats and result limits",
        "url": "https://github.com/cloudflare/mcp"
      }
    ],
    "reportUrl": "/interface-evaluations/cloudflare-mcp.json"
  }
}
