{
  "_about": "Hand-verified ground truth for 27 stratified apps (2-3 per category, deliberately including edge cases). Labels were set BEFORE looking at agent output, by reading the cited pages. auth_methods is graded as set-overlap on primary methods; other fields as exact match. 'accept' lists alternative labels a fair reviewer would also accept. mcp is graded as official-vs-not (community and none are equivalent for buildability). _gold_corrections lists labels the agent proved wrong; they were fixed only after re-checking the primary source by hand.",
  "_labeled_on": "2026-09-17",
  "gold": [
    {
      "name": "Salesforce",
      "auth_methods": [
        "oauth2"
      ],
      "access": "self_serve_free",
      "api_type": "rest_and_graphql",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_oauth_and_connected_apps.htm",
        "https://developer.salesforce.com/signup",
        "https://github.com/salesforcecli/mcp"
      ],
      "note": "Free Developer Edition org; OAuth2 via connected/external client apps; REST + GraphQL API; official Salesforce DX MCP server.",
      "accept": {
        "api_type": [
          "rest"
        ]
      }
    },
    {
      "name": "Attio",
      "auth_methods": [
        "oauth2",
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://docs.attio.com/rest-api/guides/authentication",
        "https://attio.com/pricing",
        "https://docs.attio.com/mcp/overview"
      ],
      "note": "Pricing page: Free plan $0 includes 'API and webhook access'. Hosted MCP at mcp.attio.com. API keys + OAuth2 (Basic form is the same token)."
    },
    {
      "name": "Twenty",
      "auth_methods": [
        "api_key",
        "oauth2"
      ],
      "access": "self_serve_free",
      "api_type": "rest_and_graphql",
      "mcp": "none",
      "verdict": "green",
      "evidence": [
        "https://docs.twenty.com/developers/api-and-webhooks/api"
      ],
      "note": "Open-source CRM, self-hostable; 'Settings -> API & Webhooks -> + Create key'; /rest/ and /graphql/ endpoints; OAuth for external apps.",
      "accept": {
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "Zendesk",
      "auth_methods": [
        "oauth2",
        "api_key",
        "basic"
      ],
      "access": "self_serve_trial",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developer.zendesk.com/api-reference/introduction/security-and-auth/",
        "https://developer.zendesk.com/documentation/api-basics/getting-started/getting-a-trial-or-sponsored-account-for-development/",
        "https://docs.workato.com/en/mcp/registry/zendesk-ticket-management-mcp-server.html"
      ],
      "note": "Trial or sponsored developer account; API token (basic) and OAuth2. Official MCP announced May 2026 (early access, per-tenant /api/mcp).",
      "accept": {
        "access": [
          "self_serve_free"
        ],
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "Plain",
      "auth_methods": [
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "graphql",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://www.plain.com/docs/api-reference/graphql/authentication",
        "https://www.plain.com/changelog/plain-mcp"
      ],
      "note": "Bearer plainApiKey_xxx via machine users; GraphQL Core API; free tier exists. [gold corrected: Plain shipped an official MCP server on 3 Mar 2026; my prior said none.]",
      "accept": {
        "auth_methods": [
          "bearer_token"
        ],
        "access": [
          "self_serve_trial"
        ],
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "Gladly",
      "auth_methods": [
        "basic"
      ],
      "access": "admin_approval",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://developer.gladly.com/rest/"
      ],
      "note": "Token-based Basic auth; token needs 'API User' permission granted by a Gladly Administrator; must be a Gladly customer (no free tier).",
      "accept": {
        "auth_methods": [
          "api_key"
        ],
        "access": [
          "paid_plan",
          "partner_gated"
        ],
        "verdict": [
          "red"
        ]
      }
    },
    {
      "name": "Slack",
      "auth_methods": [
        "oauth2"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://api.slack.com/authentication/oauth-v2",
        "https://docs.slack.dev/changelog/2026/02/17/slack-mcp/"
      ],
      "note": "OAuth v2 bot/user tokens; free workspace; Web API (~170 methods). Official mcp.slack.com GA Feb 2026 (needs workspace admin approval)."
    },
    {
      "name": "WhatsApp Business",
      "auth_methods": [
        "oauth2",
        "bearer_token"
      ],
      "access": "admin_approval",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://developers.facebook.com/docs/whatsapp/cloud-api/get-started",
        "https://developers.facebook.com/docs/whatsapp/cloud-api/get-started/"
      ],
      "note": "Meta app + system-user access tokens (Graph API, OAuth-based). Free test number; production needs business verification / app review.",
      "accept": {
        "access": [
          "partner_gated",
          "self_serve_free"
        ],
        "auth_methods": [
          "oauth2"
        ]
      }
    },
    {
      "name": "Pumble",
      "auth_methods": [
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://pumble.com/help/integrations/add-pumble-apps/api-keys-integration/",
        "https://pumble.com/learn/pumble/ai-automation-guide/"
      ],
      "note": "API addon generates keys; 'Available on all plans'; small API (messages, channels). [gold corrected: Pumble documents a native MCP server (Aug 2026).]",
      "accept": {
        "mcp": [
          "community"
        ],
        "verdict": [
          "yellow"
        ]
      }
    },
    {
      "name": "Google Ads",
      "auth_methods": [
        "oauth2"
      ],
      "access": "admin_approval",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://developers.google.com/google-ads/api/docs/get-started/dev-token",
        "https://developers.google.com/google-ads/api/docs/oauth/overview"
      ],
      "note": "OAuth2; test access self-serve, Basic access needs brand verification / automated review, Standard needs manual review. gRPC + REST.",
      "accept": {
        "access": [
          "partner_gated"
        ],
        "mcp": [
          "community"
        ],
        "api_type": [
          "other"
        ]
      }
    },
    {
      "name": "Klaviyo",
      "auth_methods": [
        "api_key",
        "oauth2"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developers.klaviyo.com/en/docs/authenticate_",
        "https://developers.klaviyo.com/en/docs/klaviyo_mcp_server"
      ],
      "note": "Private keys (owner/admin/manager role), public keys, OAuth for marketplace apps. Free plan exists.",
      "accept": {
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "systeme.io",
      "auth_methods": [
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developer.systeme.io/reference/api",
        "https://mcp.systeme.io/mcp"
      ],
      "note": "X-API-Key header; key generated in profile settings 'Public API keys'; free plan exists. [gold corrected: Live endpoint: GET 405 Allow: POST, MCP initialize POST -> 401. Vendor-hosted remote MCP exists.]",
      "accept": {
        "access": [
          "self_serve_trial"
        ],
        "verdict": [
          "yellow"
        ],
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "Shopify",
      "auth_methods": [
        "oauth2",
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest_and_graphql",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://shopify.dev/docs/apps/build/authentication-authorization",
        "https://shopify.dev/docs/apps/build/devmcp"
      ],
      "note": "Free partner dev stores; OAuth for public apps, admin access tokens for custom apps; GraphQL Admin API primary (REST legacy); official Dev MCP + Storefront MCP.",
      "accept": {
        "api_type": [
          "graphql"
        ]
      }
    },
    {
      "name": "Amazon Selling Partner",
      "auth_methods": [
        "oauth2"
      ],
      "access": "partner_gated",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "red",
      "evidence": [
        "https://developer-docs.amazon.com/sp-api/docs/sp-api-registration-overview",
        "https://github.com/amzn/selling-partner-api-samples"
      ],
      "note": "Must have a Professional selling account, submit a developer profile application (security questions, review), then LWA OAuth 2.0. [gold corrected: Amazon publishes @amazon-sp-api-release/sp-api-dev-mcp (local dev MCP) in its official samples repo.]",
      "accept": {
        "access": [
          "admin_approval",
          "paid_plan"
        ],
        "verdict": [
          "yellow"
        ]
      }
    },
    {
      "name": "fanbasis",
      "auth_methods": [
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "green",
      "evidence": [
        "https://commas.com/fanbasis-is-now-commas",
        "https://commasdocs.com/",
        "https://raw.githubusercontent.com/otniel-bit/fbnewapi/main/api-docs.md"
      ],
      "note": "REBRANDED: fanbasis.com now redirects to commas.com (July 2026). Public API documented at commasdocs.com: x-api-key header, scoped keys, sandbox environment. Requires a seller account.",
      "accept": {
        "access": [
          "self_serve_trial",
          "paid_plan"
        ],
        "verdict": [
          "yellow"
        ]
      }
    },
    {
      "name": "Apify",
      "auth_methods": [
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://docs.apify.com/api/v2",
        "https://mcp.apify.com/"
      ],
      "note": "Bearer API token; free plan with monthly credits; large REST API; official mcp.apify.com.",
      "accept": {
        "auth_methods": [
          "bearer_token"
        ]
      }
    },
    {
      "name": "Sherlock",
      "auth_methods": [
        "none"
      ],
      "access": "self_serve_free",
      "api_type": "cli_only",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://github.com/sherlock-project/sherlock"
      ],
      "note": "Open-source Python CLI (username OSINT). No hosted API, no auth. Buildable as an agent skill / local tool, not a hosted toolkit.",
      "accept": {
        "access": [
          "no_public_api"
        ],
        "verdict": [
          "red"
        ],
        "mcp": [
          "community"
        ]
      }
    },
    {
      "name": "Waterfall.io",
      "auth_methods": [
        "api_key"
      ],
      "access": "partner_gated",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "red",
      "evidence": [
        "https://docs.waterfall.io/v1/authentication",
        "https://www.waterfall.io/pricing"
      ],
      "note": "x-api-key; docs public and good, but pricing is 'Book a call', 'before anything is signed we run a benchmark' - no self-serve signup found.",
      "accept": {
        "access": [
          "self_serve_trial"
        ],
        "verdict": [
          "yellow"
        ]
      }
    },
    {
      "name": "GitHub",
      "auth_methods": [
        "oauth2",
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest_and_graphql",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api",
        "https://github.com/github/github-mcp-server"
      ],
      "note": "PATs (token) + OAuth/GitHub Apps; REST + GraphQL; official github-mcp-server.",
      "accept": {
        "auth_methods": [
          "bearer_token"
        ]
      }
    },
    {
      "name": "Snowflake",
      "auth_methods": [
        "oauth2",
        "jwt"
      ],
      "access": "self_serve_trial",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://docs.snowflake.com/en/developer-guide/sql-api/authenticating",
        "https://signup.snowflake.com/",
        "https://github.com/Snowflake-Labs/mcp"
      ],
      "note": "SQL REST API: OAuth or key-pair JWT (also PATs). 30-day free trial. Official Snowflake-Labs MCP + Cortex MCP.",
      "accept": {
        "auth_methods": [
          "api_key",
          "bearer_token"
        ],
        "access": [
          "self_serve_free"
        ],
        "verdict": [
          "yellow"
        ]
      }
    },
    {
      "name": "Notion",
      "auth_methods": [
        "oauth2",
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developers.notion.com/docs/authorization",
        "https://developers.notion.com/docs/mcp"
      ],
      "note": "Internal integration tokens + public OAuth; REST (~30 endpoints); official mcp.notion.com.",
      "accept": {
        "auth_methods": [
          "bearer_token"
        ]
      }
    },
    {
      "name": "Linear",
      "auth_methods": [
        "oauth2",
        "api_key"
      ],
      "access": "self_serve_free",
      "api_type": "graphql",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://developers.linear.app/docs/graphql/working-with-the-graphql-api",
        "https://linear.app/docs/mcp"
      ],
      "note": "Personal API keys + OAuth2; GraphQL only; official mcp.linear.app."
    },
    {
      "name": "Stripe",
      "auth_methods": [
        "api_key",
        "oauth2"
      ],
      "access": "self_serve_free",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "green",
      "evidence": [
        "https://docs.stripe.com/api/authentication",
        "https://docs.stripe.com/mcp"
      ],
      "note": "Secret keys (sent as Basic/Bearer), OAuth for Connect; test mode free; ~450 endpoints; official mcp.stripe.com.",
      "accept": {
        "auth_methods": [
          "basic",
          "bearer_token"
        ]
      }
    },
    {
      "name": "PitchBook",
      "auth_methods": [
        "api_key"
      ],
      "access": "partner_gated",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "red",
      "evidence": [
        "https://api.pitchbook.com/api-docs",
        "https://pitchbook.com/help/PitchBook-api"
      ],
      "note": "OpenAPI spec is public (130 operations, PB-Token header) but keys are provisioned by an account manager under a Direct Data contract; no self-serve, site blocks bots (403).",
      "accept": {
        "auth_methods": [
          "bearer_token",
          "jwt"
        ],
        "access": [
          "paid_plan"
        ]
      }
    },
    {
      "name": "NotebookLM",
      "auth_methods": [
        "oauth2"
      ],
      "access": "paid_plan",
      "api_type": "rest",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://docs.cloud.google.com/gemini/enterprise/notebooklm-enterprise/docs/api-notebooks"
      ],
      "note": "Consumer NotebookLM has no API. Gemini Notebook Enterprise API (Pre-GA) exists behind Gemini Enterprise licenses, Google Cloud OAuth2 bearer.",
      "accept": {
        "access": [
          "partner_gated",
          "no_public_api"
        ],
        "verdict": [
          "red"
        ],
        "api_type": [
          "none"
        ],
        "auth_methods": [
          "none"
        ]
      }
    },
    {
      "name": "Devin",
      "auth_methods": [
        "api_key"
      ],
      "access": "paid_plan",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "yellow",
      "evidence": [
        "https://docs.devin.ai/api-reference/authentication",
        "https://docs.devin.ai/work-with-devin/devin-mcp.md",
        "https://docs.devin.ai/admin/billing/self-serve.md"
      ],
      "note": "Bearer cog_ service-user keys / PATs; Free plan lists no API access (Teams/Enterprise quickstarts); official Devin MCP server.",
      "accept": {
        "auth_methods": [
          "bearer_token"
        ],
        "access": [
          "self_serve_free",
          "self_serve_trial"
        ],
        "verdict": [
          "green"
        ]
      }
    },
    {
      "name": "Mermaid CLI",
      "auth_methods": [
        "none"
      ],
      "access": "self_serve_free",
      "api_type": "cli_only",
      "mcp": "none",
      "verdict": "yellow",
      "evidence": [
        "https://github.com/mermaid-js/mermaid-cli"
      ],
      "note": "npm CLI (mmdc) that renders diagrams via headless Chromium. No hosted API. Agent skill / local tool. (Mermaid Chart, the SaaS, has a separate official MCP.)",
      "accept": {
        "access": [
          "no_public_api"
        ],
        "verdict": [
          "red"
        ],
        "mcp": [
          "official",
          "community"
        ]
      }
    },
    {
      "name": "iPayX",
      "auth_methods": [
        "api_key",
        "bearer_token"
      ],
      "access": "self_serve_trial",
      "api_type": "rest",
      "mcp": "official",
      "verdict": "yellow",
      "evidence": [
        "https://www.ipayx.ai/docs/api",
        "https://www.ipayx.ai/pricing"
      ],
      "note": "Hint URL /docs is 404; docs live at /docs/api. Bearer API keys, 3 REST endpoints, official MCP (SSE). 5 free audits then paid; 'production-grade API' on paid tiers.",
      "accept": {
        "access": [
          "paid_plan",
          "self_serve_free"
        ],
        "verdict": [
          "green"
        ]
      }
    }
  ],
  "_gold_corrections": [
    {
      "name": "Plain",
      "field": "mcp",
      "from": "none",
      "to": "official",
      "evidence": "https://www.plain.com/changelog/plain-mcp",
      "why": "Plain shipped an official MCP server on 3 Mar 2026; my prior said none.",
      "found_by": "agent (pass 2 grounded evidence / endpoint probe)"
    },
    {
      "name": "Pumble",
      "field": "mcp",
      "from": "none",
      "to": "official",
      "evidence": "https://pumble.com/learn/pumble/ai-automation-guide/",
      "why": "Pumble documents a native MCP server (Aug 2026).",
      "found_by": "agent (pass 2 grounded evidence / endpoint probe)"
    },
    {
      "name": "systeme.io",
      "field": "mcp",
      "from": "none",
      "to": "official",
      "evidence": "https://mcp.systeme.io/mcp",
      "why": "Live endpoint: GET 405 Allow: POST, MCP initialize POST -> 401. Vendor-hosted remote MCP exists.",
      "found_by": "agent (pass 2 grounded evidence / endpoint probe)"
    },
    {
      "name": "Amazon Selling Partner",
      "field": "mcp",
      "from": "none",
      "to": "official",
      "evidence": "https://github.com/amzn/selling-partner-api-samples",
      "why": "Amazon publishes @amazon-sp-api-release/sp-api-dev-mcp (local dev MCP) in its official samples repo.",
      "found_by": "agent (pass 2 grounded evidence / endpoint probe)"
    }
  ]
}