{
  "data": {
    "a": {
      "slug": "middesk",
      "name": "Middesk",
      "vendor": "Middesk, Inc.",
      "vendorUrl": "https://www.middesk.com",
      "kind": "http-api",
      "category": "identity-verification",
      "summary": "Business verification API from Middesk in San Francisco. It checks US and international businesses against registry, tax ID, sanctions and watchlist records, monitors them for changes, and files liens and state tax registrations, over REST and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/middesk",
      "markdownUrl": "https://www.anchorterminal.com/tools/middesk.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/middesk.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/middesk.json",
      "repo": "https://github.com/middesk/plugins",
      "license": "Proprietary service under Middesk's Business Verification Terms and Conditions. The Claude Code and Codex plugins on GitHub are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.middesk.com/v1",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Access is granted by Middesk's sales team, and keys are then created in the dashboard under Settings, Developer, Credentials. An API key goes as the Basic auth username or as a Bearer token. `mk_test` keys work only against https://api-sandbox.middesk.com/v1 and `mk_live` keys only against https://api.middesk.com/v1. OAuth 2.0 authorisation code is available for acting in another Middesk user's account, with up to 5 clients an account, `read_only` or `read_write` scope, no consent screen, access tokens that don't expire and a revoke endpoint. The hosted MCP server takes OAuth 2.1 with PKCE and dynamic client registration, or a live API key as a Bearer token. The account's IP allowlist applies to OAuth requests.",
      "pricing": "paid",
      "pricingNotes": "No public prices. Fees are set in an order form under the Business Verification Terms and Conditions, the site has no pricing page (middesk.com/pricing returns 404) and its buttons ask for a demo. A sandbox with mock data comes with every account. Middesk's plugin README says trial accounts exist and issue test keys only, and we didn't find how one is opened without sales. Creating a business places billable orders (checked 2026-10-08).",
      "priceSummary": "Paid",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the OpenAPI spec or the site (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 11,
      "popularity": {
        "githubStars": 2,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.middesk.com",
      "llmsTxt": "https://docs.middesk.com/llms.txt",
      "openapi": "https://docs.middesk.com/openapi.json",
      "capabilities": [
        "kyc.business",
        "kyc.screening",
        "kyc.cases",
        "kyc.identity"
      ],
      "tags": [
        "hosted",
        "enterprise",
        "sales-led",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "sandbox",
        "graphql",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59,
        "grade": "C",
        "agentReady": false,
        "rank": 389,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 56,
          "maintenance": 64,
          "payments": 10,
          "reliability": 73,
          "schema": 82,
          "security": 56,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "A public OpenAPI 3.1 contract for 87 operations, llms.txt, Markdown docs and a dated weekly changelog make the REST API readable to an agent, and OAuth has a read-only scope. Access is sales-led. No price, self-serve signup or official SDK was found, and the hosted MCP server rejects sandbox keys.",
        "bestFor": "An agent onboarding or re-checking US businesses for a bank, lender or marketplace that already holds a Middesk contract, with registry, TIN, sanctions and lien data in one object.",
        "strengths": [
          "Public OpenAPI 3.1 spec with 87 operations and 373 schemas, plus llms.txt and a Markdown copy of every docs page",
          "Dated changelog with nine entries between 20 July and 5 October 2026, breaking changes labelled as such",
          "OAuth 2.0 with `read_only` and `read_write` scopes and a revoke endpoint. The MCP server adds PKCE and dynamic client registration",
          "Sandbox at api-sandbox.middesk.com with documented trigger values for names, addresses, TINs, people and watchlist hits",
          "The public terms of 21 August 2026 bar training generative AI models on customer data in any form"
        ],
        "weaknesses": [
          "No public price. Fees are set in an order form, and every docs page ends with a prompt to contact sales",
          "No official SDK found on npm, PyPI or RubyGems, and none in the vendor's GitHub organisation",
          "The hosted MCP server runs against production only, so a sandbox key fails on every call",
          "Creating a business places billable orders, and an empty `orders` array doesn't prevent that",
          "OAuth access tokens don't expire, and no security.txt, disclosure policy or bug bounty was found"
        ],
        "agentNotes": [
          "Match the key to the host. `mk_test` keys work only at https://api-sandbox.middesk.com/v1 and `mk_live` keys only at https://api.middesk.com/v1",
          "Name the `orders` on `POST /v1/businesses`. Omitting them places a verification order plus every package the account runs automatically, all billed",
          "Send `address_line1` and `address_line2`. The API ignores `address_line_1` without an error",
          "A 201 means the business was created, not verified. Wait for the `business.updated` webhook or poll until `status` leaves `pending`",
          "Stay under 20 requests a second per account, and in sandbox wait the seconds in `Retry-After` after a 429 on business creation"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59
          }
        ],
        "editorialScores": {
          "ergonomics": 56,
          "maintenance": 64,
          "payments": 10,
          "reliability": 73,
          "schema": 82,
          "security": 56,
          "transparency": 43
        },
        "provenanceScore": 78
      },
      "connect": {
        "http": "curl -X POST https://api-sandbox.middesk.com/v1/businesses \\\n  -u $MIDDESK_SANDBOX_API_KEY: \\\n  -H \"Accept: application/json\" \\\n  -d name=Corporation \\\n  -d addresses\\[0\\]\\[address_line1\\]=223+Grand+St. \\\n  -d addresses\\[0\\]\\[city\\]=new+york \\\n  -d addresses\\[0\\]\\[state\\]=NY \\\n  -d addresses\\[0\\]\\[postal_code\\]=10013",
        "claudeCode": "claude mcp add --transport http middesk https://mcp.middesk.com/mcp \\\n  --header \"Authorization: Bearer mk_live_...\"",
        "config": {
          "mcpServers": {
            "middesk": {
              "headers": {
                "Authorization": "Bearer mk_live_your_api_key"
              },
              "url": "https://mcp.middesk.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/kyc.business",
        "tool": "https://letme.dev/middesk"
      },
      "area": "domain-data",
      "provenance": {
        "legalEntity": "Middesk, Inc.",
        "domain": "middesk.com",
        "domainRegistered": "2018-11-20",
        "endpointOnVendorDomain": true,
        "terms": "https://www.middesk.com/policies/bv-msa",
        "privacy": "https://www.middesk.com/policies/privacy-policy",
        "statusPage": "https://status.middesk.com",
        "changelog": "https://docs.middesk.com/guides/get-started/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Business Verification Terms and Conditions (last updated 21 August 2026) define Middesk as Middesk, Inc. The website terms (last updated 9 November 2023) give the address 85 2nd St., Suite 710, San Francisco, CA 94105.",
          "The API answers at api.middesk.com and api-sandbox.middesk.com, and the MCP server at mcp.middesk.com, all middesk.com subdomains.",
          "security.txt returns 404 on www.middesk.com, docs.middesk.com and api.middesk.com.",
          "The privacy policy was last updated on 2 November 2025 and gives no retention periods.",
          "trust.middesk.com is a Vanta trust centre that only renders with JavaScript, so we couldn't read its contents.",
          "RDAP for middesk.com gives a registration date of 2018-11-20."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/middesk.json",
      "live": {
        "slug": "middesk",
        "probe": {
          "target": "https://api.middesk.com/v1",
          "method": "get",
          "lastAt": "2026-10-08T18:20:34.934226551Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 190,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 212,
          "p95ms24h": 316,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.middesk.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T18:22:07.547803744Z"
        },
        "githubStars": 2,
        "securityTxt": {
          "url": "https://middesk.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:39.426096193Z"
        },
        "pages": [
          {
            "url": "https://docs.middesk.com/guides/get-started/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:07.781323249Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eebdc6aa87ba"
          }
        ],
        "updatedAt": "2026-10-08T18:22:07.547803744Z"
      }
    },
    "answer": "Sumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "sumsub",
      "name": "Sumsub",
      "vendor": "Sum and Substance Ltd",
      "vendorUrl": "https://sumsub.com",
      "kind": "http-api",
      "category": "identity-verification",
      "summary": "Sumsub verifies people from identity documents and a liveness check, verifies businesses against registries, and screens both against sanctions and watchlists. Agents reach it through a signed REST API and a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/sumsub",
      "markdownUrl": "https://www.anchorterminal.com/tools/sumsub.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/sumsub.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/sumsub.json",
      "repo": "https://github.com/sumsub/agent-skills",
      "license": "Proprietary service under Sumsub's terms and conditions. The agent skills repository and the @sumsub/websdk npm package are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.sumsub.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@sumsub/websdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "The REST API takes an app token generated in the Dashboard by a signed-in team member. Each request carries `X-App-Token`, `X-App-Access-Ts` and `X-App-Access-Sig`, an HMAC-SHA256 signature made with the token's secret key over the timestamp, method, path and body. A token has its own permissions, an optional IP allowlist, an optional expiry date and optional source keys that limit it to a group of applicants, and it can be disabled or deleted but not edited. Sandbox and production tokens are separate. The MCP server at https://api.sumsub.com/mcp/ uses OAuth with PKCE and dynamic client registration, signs the user in with Sumsub, and needs the Use MCP server role permission. Production mode opens after Sumsub verifies the integration (https://docs.sumsub.com/reference/about-sumsub-api).",
      "pricing": "usage",
      "pricingNotes": "Basic is $1.35 per verification with a $149 monthly minimum, and Compliance is $1.85 with a $299 minimum and adds AML screening and address checks. Business verification, transaction monitoring and fraud prevention are on a custom plan through sales. Only completed checks are charged. Sandbox mode is free in any account, limited to 500 new applicants and 1,000 transactions per 24 hours. The 14-day trial of 50 real checks asks for bank card details (https://sumsub.com/pricing/, https://docs.sumsub.com/docs/self-service, checked 2026-10-08).",
      "priceSummary": "$1.35 / tx",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the API reference, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 172226,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.sumsub.com",
      "llmsTxt": "https://docs.sumsub.com/llms.txt",
      "openapi": "https://api.sumsub.com/openapi.json",
      "capabilities": [
        "kyc.identity",
        "kyc.business",
        "kyc.documents",
        "kyc.screening",
        "kyc.cases"
      ],
      "tags": [
        "hosted",
        "usage-based",
        "sandbox",
        "api-key",
        "oauth",
        "mcp",
        "openapi",
        "llms-txt",
        "webhooks",
        "status-page",
        "sla",
        "bug-bounty",
        "soc2",
        "iso27001"
      ],
      "lastRelease": "2026-10-03",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 68.5,
        "grade": "B",
        "agentReady": false,
        "rank": 167,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 60,
          "maintenance": 74,
          "payments": 25,
          "reliability": 80,
          "schema": 78,
          "security": 80,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Per-token permissions, an IP allowlist, HMAC-signed requests and a public OpenAPI spec with Markdown docs suit an agent working on verification cases. No idempotency keys or Retry-After guidance were found, there is no server SDK, and production access needs a browser signup, a bank card and Sumsub's review of the integration.",
        "bestFor": "An agent that starts verifications, sends links, reads results and AML cases, and works case queues for a regulated business, with one token limited to those permissions.",
        "strengths": [
          "App tokens carry per-token permissions, an optional IP allowlist and expiry date, and can be disabled with a recorded reason",
          "Requests are signed with HMAC-SHA256 over timestamp, method, path and body, so the secret key never travels",
          "Public OpenAPI 3.0.1 spec with 157 operations, llms.txt, and every docs page served as Markdown",
          "Hosted MCP server with OAuth, PKCE and dynamic client registration, gated by a Use MCP server role permission",
          "Terms publish a 99.5 per cent monthly uptime commitment, and the status page lists API, WebSDK and MobileSDK for three regions"
        ],
        "weaknesses": [
          "No idempotency keys and no Retry-After or backoff guidance found in the reviewed documentation",
          "Only 24 of 157 operations in the OpenAPI spec carry a summary or description, and 154 declare only a default response",
          "No official server-side SDK. Sumsub publishes request-signing examples in seven languages instead",
          "The 14-day trial of 50 real checks needs a bank card, and production opens after Sumsub checks the integration",
          "Terms clause 6.9 permits Sumsub to use customers' personal data to develop fraud detection, including machine learning models",
          "The subprocessor list is published in the Dashboard, not on a public page"
        ],
        "agentNotes": [
          "Sign every request. X-App-Access-Sig is the lowercase hex HMAC-SHA256 of timestamp, uppercase method, path with query and raw body, and the timestamp must be within one minute of server time",
          "Use a sandbox token (prefix sbx) for agent work. Sandbox and production tokens are separate, and Sumsub's own skills refuse any other prefix",
          "Stay under 300 GET and 50 POST requests per 5 seconds, and under 500 new applicants per 24 hours in Sandbox",
          "Token permissions can't be edited after creation. Generate a new token with the narrower set and delete the old one",
          "Subscribe to the applicantReviewed webhook for results and verify x-payload-digest against the raw body before trusting it"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 68.5
          }
        ],
        "editorialScores": {
          "ergonomics": 60,
          "maintenance": 74,
          "payments": 25,
          "reliability": 80,
          "schema": 78,
          "security": 80,
          "transparency": 52
        },
        "provenanceScore": 96
      },
      "connect": {
        "install": "npx skills add sumsub/agent-skills --all -g",
        "http": "curl -X GET \\\n  'https://api.sumsub.com/resources/auditTrailEvents/list?from=2024-06-01+00:00:00\u0026to=2024-06-30+23:59:59\u0026limit=100' \\\n  -H 'X-App-Token: \u003cyour-app-token\u003e' \\\n  -H 'X-App-Access-Sig: \u003cyour-signature\u003e' \\\n  -H 'X-App-Access-Ts: \u003cunix-timestamp\u003e'",
        "claudeCode": "claude mcp add --transport http sumsub https://api.sumsub.com/mcp/",
        "config": {
          "mcpServers": {
            "sumsub": {
              "args": [
                "mcp-remote",
                "https://api.sumsub.com/mcp/"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/kyc.identity",
        "tool": "https://letme.dev/sumsub"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Basic plan, user verification",
          "unit": "tx",
          "usd": 1.35,
          "note": "per completed verification; $149 monthly minimum"
        },
        {
          "item": "Compliance plan, user verification with AML screening and address check",
          "unit": "tx",
          "usd": 1.85,
          "note": "per completed verification; $299 monthly minimum"
        }
      ],
      "provenance": {
        "legalEntity": "Sum and Substance Ltd",
        "domain": "sumsub.com",
        "domainRegistered": "2015-05-01",
        "endpointOnVendorDomain": true,
        "terms": "https://sumsub.com/terms-and-conditions/",
        "privacy": "https://sumsub.com/privacy-notice-service/",
        "statusPage": "https://status.sumsub.com",
        "changelog": "https://docs.sumsub.com/changelog",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The terms (version of 21 May 2026) name Sum and Substance Ltd, England, company number 09688671, 30 St. Mary Axe, London EC3A 8BF, with contracting entities in the UAE, Delaware, Singapore and Cyprus depending on where the customer is registered.",
          "The API and the MCP server answer at api.sumsub.com, and the Dashboard and OAuth issuer at cockpit.sumsub.com.",
          "sumsub.com/.well-known/security.txt gives security@sumsub.com and a Bugcrowd engagement as contacts and expires on 2027-12-31.",
          "The service privacy notice was last updated on 19 March 2026. The data processing agreement is Annex 3 of the terms.",
          "RDAP for sumsub.com gives a registration date of 2015-05-01."
        ],
        "score": 96
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/sumsub.json",
      "live": {
        "slug": "sumsub",
        "probe": {
          "target": "https://api.sumsub.com",
          "method": "get",
          "lastAt": "2026-10-08T18:20:41.174437615Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 181,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 209,
          "p95ms24h": 298,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.sumsub.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T18:22:20.872598047Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@sumsub/websdk",
            "version": "2.9.0",
            "seenAt": "2026-10-08T16:31:00.353997894Z"
          }
        ],
        "githubStars": 7,
        "npmWeekly": 172226,
        "securityTxt": {
          "url": "https://sumsub.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-12-31T11:59:00Z",
          "checkedAt": "2026-10-08T15:38:36.412722848Z"
        },
        "pages": [
          {
            "url": "https://docs.sumsub.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:32.69717252Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "24fd7917e5f9"
          },
          {
            "url": "https://sumsub.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:56.017931789Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8df9176ba407"
          },
          {
            "url": "https://sumsub.com/privacy-notice-service/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:58.191382748Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "676c31f026df"
          },
          {
            "url": "https://sumsub.com/terms-and-conditions/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:00.198690776Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "63e133a2d160"
          }
        ],
        "updatedAt": "2026-10-08T18:25:00.198690776Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Middesk, Inc.",
        "b": "Sum and Substance Ltd",
        "name": "Vendor"
      },
      {
        "a": "https://api.middesk.com/v1",
        "b": "https://api.sumsub.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Middesk's Business Verification Terms and Conditions. The Claude Code and Codex plugins on GitHub are MIT",
        "b": "Proprietary service under Sumsub's terms and conditions. The agent skills repository and the @sumsub/websdk npm package are MIT",
        "name": "Licence"
      },
      {
        "a": "11",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-05",
        "b": "2026-10-03",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-05-21",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-03-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2 stars",
        "b": "172k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Sumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Middesk or Sumsub?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Middesk and Sumsub need an API key?"
      },
      {
        "answer": "Yes. Middesk has a hosted endpoint at https://api.middesk.com/v1 and Sumsub at https://api.sumsub.com.",
        "question": "Can an agent call Middesk and Sumsub without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent onboarding or re-checking US businesses for a bank, lender or marketplace that already holds a Middesk contract, with registry, TIN, sanctions and lien data in one object.",
        "slug": "middesk",
        "watchFor": "No public price. Fees are set in an order form, and every docs page ends with a prompt to contact sales"
      },
      {
        "aheadOn": [
          "Reliability, 80 against 73",
          "Security \u0026 auth, 80 against 56",
          "Payments \u0026 pricing, 25 against 10",
          "Maintenance \u0026 community, 74 against 64",
          "Transparency \u0026 trust, 74 against 61"
        ],
        "also": null,
        "goodFor": "An agent that starts verifications, sends links, reads results and AML cases, and works case queues for a regulated business, with one token limited to those permissions.",
        "slug": "sumsub",
        "watchFor": "No idempotency keys and no Retry-After or backoff guidance found in the reviewed documentation"
      }
    ],
    "job": {
      "capability": "kyc.business",
      "name": "Kyc business"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/jumio-vs-middesk.json",
        "title": "Jumio vs Middesk",
        "url": "https://www.anchorterminal.com/compare/jumio-vs-middesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jumio-vs-sumsub.json",
        "title": "Jumio vs Sumsub",
        "url": "https://www.anchorterminal.com/compare/jumio-vs-sumsub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/middesk-vs-veriff.json",
        "title": "Middesk vs Veriff",
        "url": "https://www.anchorterminal.com/compare/middesk-vs-veriff"
      },
      {
        "json": "https://www.anchorterminal.com/compare/persona-vs-sumsub.json",
        "title": "Persona vs Sumsub",
        "url": "https://www.anchorterminal.com/compare/persona-vs-sumsub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sumsub-vs-trulioo.json",
        "title": "Sumsub vs Trulioo",
        "url": "https://www.anchorterminal.com/compare/sumsub-vs-trulioo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/sumsub-vs-veriff.json",
        "title": "Sumsub vs Veriff",
        "url": "https://www.anchorterminal.com/compare/sumsub-vs-veriff"
      },
      {
        "json": "https://www.anchorterminal.com/compare/middesk-vs-persona.json",
        "title": "Middesk vs Persona",
        "url": "https://www.anchorterminal.com/compare/middesk-vs-persona"
      },
      {
        "json": "https://www.anchorterminal.com/compare/middesk-vs-trulioo.json",
        "title": "Middesk vs Trulioo",
        "url": "https://www.anchorterminal.com/compare/middesk-vs-trulioo"
      }
    ],
    "scores": [
      {
        "by": 7,
        "edge": "sumsub",
        "key": "reliability",
        "middesk": 73,
        "name": "Reliability",
        "sumsub": 80,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "middesk",
        "key": "schema",
        "middesk": 82,
        "name": "Schema \u0026 documentation",
        "sumsub": 78,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "sumsub",
        "key": "ergonomics",
        "middesk": 56,
        "name": "Agent ergonomics",
        "sumsub": 60,
        "weight": 13
      },
      {
        "by": 24,
        "edge": "sumsub",
        "key": "security",
        "middesk": 56,
        "name": "Security \u0026 auth",
        "sumsub": 80,
        "weight": 14
      },
      {
        "by": 15,
        "edge": "sumsub",
        "key": "payments",
        "middesk": 10,
        "name": "Payments \u0026 pricing",
        "sumsub": 25,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "edge": "sumsub",
        "key": "maintenance",
        "middesk": 64,
        "name": "Maintenance \u0026 community",
        "sumsub": 74,
        "weight": 7
      },
      {
        "by": 13,
        "edge": "sumsub",
        "key": "transparency",
        "middesk": 61,
        "name": "Transparency \u0026 trust",
        "sumsub": 74,
        "weight": 7
      }
    ],
    "summary": "Sumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories. Both do kyc business.",
    "verdicts": {
      "middesk": "A public OpenAPI 3.1 contract for 87 operations, llms.txt, Markdown docs and a dated weekly changelog make the REST API readable to an agent, and OAuth has a read-only scope. Access is sales-led. No price, self-serve signup or official SDK was found, and the hosted MCP server rejects sandbox keys.",
      "sumsub": "Per-token permissions, an IP allowlist, HMAC-signed requests and a public OpenAPI spec with Markdown docs suit an agent working on verification cases. No idempotency keys or Retry-After guidance were found, there is no server SDK, and production access needs a browser signup, a bank card and Sumsub's review of the integration."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/middesk-vs-sumsub",
    "json": "https://www.anchorterminal.com/compare/middesk-vs-sumsub.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/middesk-vs-sumsub.md",
    "slim": "https://www.anchorterminal.com/compare/middesk-vs-sumsub.min.md"
  },
  "markdown": "Sumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories. Both do kyc business.\n\n- Middesk: grade C, 59/100, rank #389 of 629. Markdown https://www.anchorterminal.com/tools/middesk.md · JSON https://www.anchorterminal.com/api/v1/tools/middesk.json\n- Sumsub: grade B, 68.5/100, rank #167 of 629. Markdown https://www.anchorterminal.com/tools/sumsub.md · JSON https://www.anchorterminal.com/api/v1/tools/sumsub.json\n\n## Which one, for what\n\n### Middesk (C)\n\nGood for: An agent onboarding or re-checking US businesses for a bank, lender or marketplace that already holds a Middesk contract, with registry, TIN, sanctions and lien data in one object.\n\nWatch for: No public price. Fees are set in an order form, and every docs page ends with a prompt to contact sales\n\n### Sumsub (B)\n\nGood for: An agent that starts verifications, sends links, reads results and AML cases, and works case queues for a regulated business, with one token limited to those permissions.\n\nAhead on:\n- Reliability, 80 against 73\n- Security \u0026 auth, 80 against 56\n- Payments \u0026 pricing, 25 against 10\n- Maintenance \u0026 community, 74 against 64\n- Transparency \u0026 trust, 74 against 61\n\nWatch for: No idempotency keys and no Retry-After or backoff guidance found in the reviewed documentation\n\n\n## Score by category\n\n| Category | Weight | Middesk | Sumsub | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 73 | 80 | Sumsub +7 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 78 | Middesk +4 |\n| Agent ergonomics | 13% (16.2 this run) | 56 | 60 | Sumsub +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 56 | 80 | Sumsub +24 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 25 | Sumsub +15 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 64 | 74 | Sumsub +10 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 74 | Sumsub +13 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59 · C** | **68.5 · B** | |\n\n## Facts side by side\n\n| Fact | Middesk | Sumsub |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Middesk, Inc. | Sum and Substance Ltd |\n| Hosted endpoint | `https://api.middesk.com/v1` | `https://api.sumsub.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Pay per use |\n| x402 | no | no |\n| Licence | Proprietary service under Middesk's Business Verification Terms and Conditions. The Claude Code and Codex plugins on GitHub are MIT | Proprietary service under Sumsub's terms and conditions. The agent skills repository and the @sumsub/websdk npm package are MIT |\n| Tools exposed | 11 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-05 | 2026-10-03 |\n| Terms last updated | no date given | 2026-05-21 |\n| Privacy policy last updated | no date given | 2026-03-19 |\n| Customer content may train models | yes | yes |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 2 stars | 172k npm/wk |\n\n## Verdicts\n\n**Middesk.** A public OpenAPI 3.1 contract for 87 operations, llms.txt, Markdown docs and a dated weekly changelog make the REST API readable to an agent, and OAuth has a read-only scope. Access is sales-led. No price, self-serve signup or official SDK was found, and the hosted MCP server rejects sandbox keys.\n\n**Sumsub.** Per-token permissions, an IP allowlist, HMAC-signed requests and a public OpenAPI spec with Markdown docs suit an agent working on verification cases. No idempotency keys or Retry-After guidance were found, there is no server SDK, and production access needs a browser signup, a bank card and Sumsub's review of the integration.\n\n## Before you call either\n\n### Middesk\n\n1. Match the key to the host. `mk_test` keys work only at https://api-sandbox.middesk.com/v1 and `mk_live` keys only at https://api.middesk.com/v1\n2. Name the `orders` on `POST /v1/businesses`. Omitting them places a verification order plus every package the account runs automatically, all billed\n3. Send `address_line1` and `address_line2`. The API ignores `address_line_1` without an error\n4. A 201 means the business was created, not verified. Wait for the `business.updated` webhook or poll until `status` leaves `pending`\n5. Stay under 20 requests a second per account, and in sandbox wait the seconds in `Retry-After` after a 429 on business creation\n\n### Sumsub\n\n1. Sign every request. X-App-Access-Sig is the lowercase hex HMAC-SHA256 of timestamp, uppercase method, path with query and raw body, and the timestamp must be within one minute of server time\n2. Use a sandbox token (prefix sbx) for agent work. Sandbox and production tokens are separate, and Sumsub's own skills refuse any other prefix\n3. Stay under 300 GET and 50 POST requests per 5 seconds, and under 500 new applicants per 24 hours in Sandbox\n4. Token permissions can't be edited after creation. Generate a new token with the narrower set and delete the old one\n5. Subscribe to the applicantReviewed webhook for results and verify x-payload-digest against the raw body before trusting it\n\n## Questions\n\n### Which is better for AI agents, Middesk or Sumsub?\n\nSumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories.\n\n### Do Middesk and Sumsub need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Middesk and Sumsub without installing anything?\n\nYes. Middesk has a hosted endpoint at https://api.middesk.com/v1 and Sumsub at https://api.sumsub.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/middesk-vs-sumsub.json, and with the fewest tokens: https://www.anchorterminal.com/compare/middesk-vs-sumsub.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"middesk\", \"b\": \"sumsub\"}`. From a terminal: `anchor compare middesk sumsub`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/middesk.json and https://www.anchorterminal.com/api/v1/tools/sumsub.json\n\n## Other comparisons with Middesk or Sumsub\n\n- [Jumio vs Middesk](https://www.anchorterminal.com/compare/jumio-vs-middesk.md)\n- [Jumio vs Sumsub](https://www.anchorterminal.com/compare/jumio-vs-sumsub.md)\n- [Middesk vs Veriff](https://www.anchorterminal.com/compare/middesk-vs-veriff.md)\n- [Persona vs Sumsub](https://www.anchorterminal.com/compare/persona-vs-sumsub.md)\n- [Sumsub vs Trulioo](https://www.anchorterminal.com/compare/sumsub-vs-trulioo.md)\n- [Sumsub vs Veriff](https://www.anchorterminal.com/compare/sumsub-vs-veriff.md)\n- [Middesk vs Persona](https://www.anchorterminal.com/compare/middesk-vs-persona.md)\n- [Middesk vs Trulioo](https://www.anchorterminal.com/compare/middesk-vs-trulioo.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Middesk vs Sumsub",
        "url": ""
      }
    ],
    "description": "Sumsub scores 68.5 (B) on agent readiness against Middesk's 59 (C), and leads in 6 of 7 scored categories. Both do kyc business. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Middesk C 59",
      "Sumsub B 68.5",
      "scores"
    ],
    "h1": "Middesk vs Sumsub",
    "image": "https://www.anchorterminal.com/assets/og/compare-middesk-vs-sumsub.png",
    "path": "/compare/middesk-vs-sumsub",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Middesk vs Sumsub for AI agents, C 59 vs B 68.5 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/middesk-vs-sumsub"
  },
  "tokens": {
    "markdown": 1950,
    "slim": 630
  },
  "version": 1
}
