{
  "schemaVersion": 1,
  "methodology": "https://ionbin.com/interfaces/methodology/#evaluations",
  "evaluation": {
    "id": "stripe-mcp",
    "testedOn": "2026-10-18",
    "coverage": "remote-boundary",
    "summary": "Stripe rejected the credential-free request before initialization and provided OAuth discovery. No sandbox, account data or financial operation was exercised.",
    "identity": {
      "version": "Remote deployment version not disclosed by the observed responses",
      "target": "https://mcp.stripe.com/",
      "integrity": "HTTPS certificate verification enabled. Public resource-metadata body SHA-256: eb719853257ba65fa26ae77a583231363174251d597d2776d93ff27a3caa9c9a. 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.969895+00:00 through 2026-10-19T00:47:20.954258+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": "stripe-mcp-initialize",
        "name": "Credential-free initialization",
        "method": "POST https://mcp.stripe.com/; 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.969895+00:00. WWW-Authenticate: Bearer; resource_metadata=https://mcp.stripe.com/.well-known/oauth-protected-resource. Parsed error indicator: missing_api_key.",
        "outcome": "pass"
      },
      {
        "id": "stripe-mcp-resource-metadata",
        "name": "Public authentication discovery",
        "method": "GET https://mcp.stripe.com/.well-known/oauth-protected-resource; 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.954258+00:00; Content-Type: application/json. Resource: https://mcp.stripe.com. 1 supported scopes: mcp. Authorization server: https://access.stripe.com/mcp.",
        "outcome": "pass"
      }
    ],
    "findings": [
      {
        "title": "A missing-key error can still lead to OAuth",
        "basis": "observed",
        "severity": "informational",
        "detail": "The endpoint returned HTTP 401 with missing_api_key and a WWW-Authenticate resource-metadata URL. That URL returned HTTP 200, advertised the mcp scope and named https://access.stripe.com/mcp as the authorization server.",
        "practicalAdvice": "Follow the supported OAuth setup rather than assuming the missing-key message requires a full-access secret key."
      },
      {
        "title": "Authentication requirements are changing",
        "basis": "documented",
        "severity": "informational",
        "detail": "Stripe's current guide sets November 30, 2026 as the migration deadline for API-key authentication. Starting in December, it says full-access secret keys and restricted keys without the Agent tag will no longer be accepted by MCP.",
        "practicalAdvice": "Use OAuth for an interactive connection or a narrowly permissioned Agent API key. Test the chosen setup in a sandbox before replacing an existing integration."
      },
      {
        "title": "Confirmation covers specified actions",
        "basis": "documented",
        "severity": "informational",
        "detail": "Stripe documents human confirmation for certain consequential write actions, including refunds and outbound payments. That is not a claim that every write requires a second confirmation.",
        "practicalAdvice": "Keep host tool approval enabled and distinguish sandbox from live mode. Review the target account, amount and operation before approving a financial action."
      }
    ],
    "caveats": [
      "OAuth sessions can cover multiple accounts or environments. Revocation applies to the account/organization and environment being viewed, so verify the whole intended scope.",
      "Connected-account use has a distinct API-key and Stripe-Account setup; this unauthenticated probe did not test it."
    ],
    "notTested": [
      "OAuth or Agent API-key authentication, sandbox/live separation, connected-account authorization and revocation.",
      "Actual tools, approval-token flows, refunds, payments, data access or prompt-injection resistance.",
      "The announced December authentication change; this is an October observation and a documented future requirement.",
      "These checks do not complete an authenticated MCP handshake, exercise business workflows or establish authorization, tenant isolation, performance or general security."
    ],
    "sources": [
      {
        "label": "Official MCP authentication, transition and approval guidance",
        "url": "https://docs.stripe.com/mcp"
      },
      {
        "label": "Official key handling and environment guidance",
        "url": "https://docs.stripe.com/keys"
      }
    ],
    "reportUrl": "/interface-evaluations/stripe-mcp.json"
  }
}
