{
  "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": 509,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 7,
        "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-09T10:42:49.604419173Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 204,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 201,
          "p95ms24h": 316,
          "samples24h": 207,
          "samples30d": 207,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 93,
              "ok": 93
            },
            {
              "date": "2026-10-09",
              "probes": 114,
              "ok": 114
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.middesk.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T10:41:48.63497432Z"
        },
        "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"
          },
          {
            "url": "https://www.middesk.com/policies/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:15.011730927Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a386a0eeeb69"
          },
          {
            "url": "https://www.middesk.com/policies/bv-msa",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:12.510644226Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "26b54790c413"
          }
        ],
        "updatedAt": "2026-10-09T10:42:49.604419173Z"
      }
    },
    "answer": "Middesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust.",
    "b": {
      "slug": "shufti",
      "name": "Shufti",
      "vendor": "Shufti Pro Limited",
      "vendorUrl": "https://shuftipro.com",
      "kind": "http-api",
      "category": "identity-verification",
      "summary": "Identity and business verification service from Shufti Pro Limited in London. One REST endpoint runs document, face, address, AML screening and KYB checks chosen in the request body, with results by callback. A hosted MCP server exposes 25 tools.",
      "url": "https://www.anchorterminal.com/tools/shufti",
      "markdownUrl": "https://www.anchorterminal.com/tools/shufti.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/shufti.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/shufti.json",
      "repo": "https://github.com/shuftipro/iOS-SDK",
      "license": "Proprietary service under Shufti's Terms and Conditions. The licences of the mobile capture SDKs were not checked",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.shuftipro.com",
      "packages": [
        {
          "registry": "npm",
          "name": "shuftipro-onsite-mobilesdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. Signing up creates a back office account, and the Client ID and Secret Key come from Settings, API Configuration, API Keys. The REST API takes them as HTTP Basic auth, or a Bearer access token from `/get/access/token` that lasts one hour. The key pair has no scopes, and the Secret Key is shown once and replaced by generating a new one. The MCP server uses OAuth 2.1 with PKCE and dynamic client registration. Its login page asks for the same Client ID and Secret Key, and it issues tokens with the scopes `knowledge:read`, `verification:read` and `verification:write`. Callback and redirect domains must be registered in the back office.",
      "pricing": "freemium",
      "pricingNotes": "Free Forever covers up to 10 verifications a month with no card, on the production environment. Essentials starts from $1.50 a verification, pay as you go with no monthly minimum, up to 20,000 verifications. Enterprise is quoted by sales and adds e-IDV, Travel Rule, video KYC and other services. The pricing page says only successful verification attempts are billed and resubmissions are free. Trial accounts accept test ID samples (https://shuftipro.com/pricing/, checked 2026-10-09).",
      "priceSummary": "$1.50 / tx",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs (llms-full.txt), the pricing page or the terms (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 673,
        "pypiWeekly": null,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://developers.shuftipro.com/docs/get_started",
      "llmsTxt": "https://developers.shuftipro.com/llms.txt",
      "capabilities": [
        "kyc.identity",
        "kyc.documents",
        "kyc.business",
        "kyc.screening"
      ],
      "tags": [
        "hosted",
        "api-key",
        "oauth",
        "mcp",
        "webhooks",
        "llms-txt",
        "free-tier",
        "no-card",
        "status-page",
        "sla",
        "soc2",
        "iso27001"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57.8,
        "grade": "C",
        "agentReady": false,
        "rank": 538,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 47,
          "maintenance": 72,
          "payments": 35,
          "reliability": 65,
          "schema": 58,
          "security": 62,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "One endpoint covers document, face, address, AML and KYB checks, with a free plan of 10 verifications a month, and a hosted MCP server adds OAuth with three scopes. No OpenAPI file, server SDK or idempotency key was found, and the status page history could not be read.",
        "bestFor": "A team that wants document, face, address, AML and KYB checks behind one endpoint, a free plan for low volume, and an MCP server that hands the person a hosted verification link.",
        "strengths": [
          "Free Forever plan of 10 verifications a month with no card, on the production environment, per the pricing page",
          "Hosted MCP server at `https://ai.shuftipro.com/mcp` with 25 tools, OAuth 2.1 with PKCE and three scopes enforced on every call",
          "Docs published as llms.txt, a 2.9 MB llms-full.txt and a Markdown twin of each page, with samples in nine languages",
          "Public terms (version 11.1, 13 May 2026) include an availability schedule targeting 99 per cent monthly uptime",
          "Revision history with 19 dated entries between 24 July and 6 October 2026"
        ],
        "weaknesses": [
          "No OpenAPI file or other machine-readable contract was found. The reference is prose tables plus Postman collections",
          "The REST credential is one Client ID and Secret Key pair with no scopes, sent as Basic auth on every call",
          "No idempotency key, Retry-After header or backoff guidance was found for the documented 429",
          "No server-side SDK. Official packages cover Android, iOS, Flutter, React Native and Cordova capture only",
          "Standard KYB was deprecated on 6 October 2026 and its pages removed the same day, with no notice period stated",
          "The sub-processor list is available to clients on request only, and security.txt returns 404"
        ],
        "agentNotes": [
          "POST every verification to `https://api.shuftipro.com/` with a unique `reference` of 6 to 250 characters and one object per service. Read results from `/status` with that reference",
          "Register the callback domain in the back office first. An unregistered `callback_url` is rejected",
          "Stay under 60 requests a minute per IP on a production account and 20 on a trial account",
          "Check the `Signature` response header. Accounts created after 15 March 2023 hash the Secret Key with SHA-256 before appending it to the raw response",
          "Through MCP, identity checks return a `verification_url` for the person to open. No tool accepts an image, so use the REST API for offsite proofs"
        ],
        "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": 57.8
          }
        ],
        "editorialScores": {
          "ergonomics": 47,
          "maintenance": 72,
          "payments": 35,
          "reliability": 65,
          "schema": 58,
          "security": 62,
          "transparency": 51
        },
        "provenanceScore": 90
      },
      "connect": {
        "http": "curl --location --request POST 'https://api.shuftipro.com' \\\n--header 'Content-Type: application/json' \\\n--header 'Authorization: Basic \u003cbase64 of CLIENT_ID:SECRET_KEY\u003e' \\\n--data-raw '{\n    \"reference\"    : \"1234567\",\n    \"callback_url\" : \"https://yourdomain.com/profile/notifyCallback\",\n    \"country\"      : \"GB\",\n    \"language\"     : \"EN\",\n    \"verification_mode\" : \"any\",\n    \"face\" : {\n        \"proof\"            : \"\"\n    }\n}'",
        "claudeCode": "claude mcp add --transport http shufti https://ai.shuftipro.com/mcp",
        "config": {
          "mcpServers": {
            "shufti": {
              "args": [
                "mcp-remote",
                "https://ai.shuftipro.com/mcp"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/kyc.identity",
        "tool": "https://letme.dev/shufti"
      },
      "area": "domain-data",
      "unitPrices": [
        {
          "item": "Verification, Free Forever plan (document and face checks)",
          "unit": "tx",
          "usd": 0,
          "note": "up to 10 verifications a month, no card"
        },
        {
          "item": "Verification, Essentials plan, starting price",
          "unit": "tx",
          "usd": 1.5,
          "note": "rate depends on volume and the services chosen, up to 20,000 verifications"
        }
      ],
      "provenance": {
        "legalEntity": "Shufti Pro Limited",
        "domain": "shuftipro.com",
        "domainRegistered": "2016-06-28",
        "endpointOnVendorDomain": true,
        "terms": "https://shuftipro.com/wp-content/uploads/Version-11.1-w.e.f.-May-13th-2026.pdf",
        "privacy": "https://shuftipro.com/services-privacy-notice/",
        "statusPage": "https://status.shuftipro.com",
        "changelog": "https://developers.shuftipro.com/docs/revision_history",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The terms and the MCP privacy notice name Shufti Pro Limited, Office 408 Coppergate House, 10 Whites Row, London E1 7NF.",
          "The governing terms are a PDF, version 11.1, linked from shuftipro.com/terms-and-conditions/, which itself carries only a summary and links to every earlier version. The page labels the file 12 May 2026 and the file name says 13 May.",
          "The privacy link is the Services Privacy Notice, version 1.2, last updated September 2026, which covers verification data. A separate notice covers the website.",
          "shuftipro.com/.well-known/security.txt answered 502 on the first request and 404 on the second.",
          "RDAP for shuftipro.com gives a registration date of 2016-06-28.",
          "The API answers at api.shuftipro.com and the MCP server at ai.shuftipro.com. The lead's shufti.ai is a parked domain for sale and unrelated to the vendor.",
          "status.shuftipro.com is an UptimeRobot page whose data loads from /api/, a path its robots.txt disallows, so the incident history was not read."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/shufti.json",
      "live": {
        "slug": "shufti",
        "probe": {
          "target": "https://api.shuftipro.com",
          "method": "get",
          "lastAt": "2026-10-09T10:42:56.447659113Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 384,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 324,
          "p95ms24h": 384,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.shuftipro.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-09T07:58:32.112017753Z"
        },
        "updatedAt": "2026-10-09T10:42:56.447659113Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Middesk, Inc.",
        "b": "Shufti Pro Limited",
        "name": "Vendor"
      },
      {
        "a": "https://api.middesk.com/v1",
        "b": "https://api.shuftipro.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "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 Shufti's Terms and Conditions. The licences of the mobile capture SDKs were not checked",
        "name": "Licence"
      },
      {
        "a": "11",
        "b": "25",
        "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-06",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-09-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes, with an opt-out",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "2 stars",
        "b": "673 npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Middesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Middesk or Shufti?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Middesk and Shufti need an API key?"
      },
      {
        "answer": "Yes. Middesk has a hosted endpoint at https://api.middesk.com/v1 and Shufti at https://api.shuftipro.com.",
        "question": "Can an agent call Middesk and Shufti without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 73 against 65",
          "Schema \u0026 documentation, 82 against 58",
          "Agent ergonomics, 56 against 47"
        ],
        "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": [
          "Security \u0026 auth, 62 against 56",
          "Payments \u0026 pricing, 35 against 10",
          "Maintenance \u0026 community, 72 against 64",
          "Transparency \u0026 trust, 71 against 61"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "A team that wants document, face, address, AML and KYB checks behind one endpoint, a free plan for low volume, and an MCP server that hands the person a hosted verification link.",
        "slug": "shufti",
        "watchFor": "No OpenAPI file or other machine-readable contract was found. The reference is prose tables plus Postman collections"
      }
    ],
    "job": {
      "capability": "kyc.business",
      "name": "Kyc business"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/complycube-vs-middesk.json",
        "title": "ComplyCube vs Middesk",
        "url": "https://www.anchorterminal.com/compare/complycube-vs-middesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/complycube-vs-shufti.json",
        "title": "ComplyCube vs Shufti",
        "url": "https://www.anchorterminal.com/compare/complycube-vs-shufti"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didit-vs-middesk.json",
        "title": "Didit vs Middesk",
        "url": "https://www.anchorterminal.com/compare/didit-vs-middesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didit-vs-shufti.json",
        "title": "Didit vs Shufti",
        "url": "https://www.anchorterminal.com/compare/didit-vs-shufti"
      },
      {
        "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-shufti.json",
        "title": "Jumio vs Shufti",
        "url": "https://www.anchorterminal.com/compare/jumio-vs-shufti"
      },
      {
        "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-shufti.json",
        "title": "Persona vs Shufti",
        "url": "https://www.anchorterminal.com/compare/persona-vs-shufti"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shufti-vs-socure-riskos.json",
        "title": "Shufti vs Socure RiskOS",
        "url": "https://www.anchorterminal.com/compare/shufti-vs-socure-riskos"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shufti-vs-sumsub.json",
        "title": "Shufti vs Sumsub",
        "url": "https://www.anchorterminal.com/compare/shufti-vs-sumsub"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shufti-vs-trulioo.json",
        "title": "Shufti vs Trulioo",
        "url": "https://www.anchorterminal.com/compare/shufti-vs-trulioo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shufti-vs-veriff.json",
        "title": "Shufti vs Veriff",
        "url": "https://www.anchorterminal.com/compare/shufti-vs-veriff"
      },
      {
        "json": "https://www.anchorterminal.com/compare/complyadvantage-vs-middesk.json",
        "title": "ComplyAdvantage vs Middesk",
        "url": "https://www.anchorterminal.com/compare/complyadvantage-vs-middesk"
      },
      {
        "json": "https://www.anchorterminal.com/compare/complyadvantage-vs-shufti.json",
        "title": "ComplyAdvantage vs Shufti",
        "url": "https://www.anchorterminal.com/compare/complyadvantage-vs-shufti"
      },
      {
        "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-socure-riskos.json",
        "title": "Middesk vs Socure RiskOS",
        "url": "https://www.anchorterminal.com/compare/middesk-vs-socure-riskos"
      },
      {
        "json": "https://www.anchorterminal.com/compare/middesk-vs-sumsub.json",
        "title": "Middesk vs Sumsub",
        "url": "https://www.anchorterminal.com/compare/middesk-vs-sumsub"
      },
      {
        "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": 8,
        "edge": "middesk",
        "key": "reliability",
        "middesk": 73,
        "name": "Reliability",
        "shufti": 65,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 24,
        "edge": "middesk",
        "key": "schema",
        "middesk": 82,
        "name": "Schema \u0026 documentation",
        "shufti": 58,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "middesk",
        "key": "ergonomics",
        "middesk": 56,
        "name": "Agent ergonomics",
        "shufti": 47,
        "weight": 13
      },
      {
        "by": 6,
        "edge": "shufti",
        "key": "security",
        "middesk": 56,
        "name": "Security \u0026 auth",
        "shufti": 62,
        "weight": 14
      },
      {
        "by": 25,
        "edge": "shufti",
        "key": "payments",
        "middesk": 10,
        "name": "Payments \u0026 pricing",
        "shufti": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "shufti",
        "key": "maintenance",
        "middesk": 64,
        "name": "Maintenance \u0026 community",
        "shufti": 72,
        "weight": 7
      },
      {
        "by": 10,
        "edge": "shufti",
        "key": "transparency",
        "middesk": 61,
        "name": "Transparency \u0026 trust",
        "shufti": 71,
        "weight": 7
      }
    ],
    "summary": "Middesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust. 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.",
      "shufti": "One endpoint covers document, face, address, AML and KYB checks, with a free plan of 10 verifications a month, and a hosted MCP server adds OAuth with three scopes. No OpenAPI file, server SDK or idempotency key was found, and the status page history could not be read."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/middesk-vs-shufti",
    "json": "https://www.anchorterminal.com/compare/middesk-vs-shufti.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/middesk-vs-shufti.md",
    "slim": "https://www.anchorterminal.com/compare/middesk-vs-shufti.min.md"
  },
  "markdown": "Middesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust. Both do kyc business.\n\n- Middesk: grade C, 59/100, rank #509 of 842. Markdown https://www.anchorterminal.com/tools/middesk.md · JSON https://www.anchorterminal.com/api/v1/tools/middesk.json\n- Shufti: grade C, 57.8/100, rank #538 of 842. Markdown https://www.anchorterminal.com/tools/shufti.md · JSON https://www.anchorterminal.com/api/v1/tools/shufti.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\nAhead on:\n- Reliability, 73 against 65\n- Schema \u0026 documentation, 82 against 58\n- Agent ergonomics, 56 against 47\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### Shufti (C)\n\nGood for: A team that wants document, face, address, AML and KYB checks behind one endpoint, a free plan for low volume, and an MCP server that hands the person a hosted verification link.\n\nAhead on:\n- Security \u0026 auth, 62 against 56\n- Payments \u0026 pricing, 35 against 10\n- Maintenance \u0026 community, 72 against 64\n- Transparency \u0026 trust, 71 against 61\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: No OpenAPI file or other machine-readable contract was found. The reference is prose tables plus Postman collections\n\n\n## Score by category\n\n| Category | Weight | Middesk | Shufti | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 73 | 65 | Middesk +8 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 58 | Middesk +24 |\n| Agent ergonomics | 13% (16.2 this run) | 56 | 47 | Middesk +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 56 | 62 | Shufti +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 10 | 35 | Shufti +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 64 | 72 | Shufti +8 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 71 | Shufti +10 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59 · C** | **57.8 · C** | |\n\n## Facts side by side\n\n| Fact | Middesk | Shufti |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Middesk, Inc. | Shufti Pro Limited |\n| Hosted endpoint | `https://api.middesk.com/v1` | `https://api.shuftipro.com` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Freemium |\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 Shufti's Terms and Conditions. The licences of the mobile capture SDKs were not checked |\n| Tools exposed | 11 | 25 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-05 | 2026-10-06 |\n| Terms last updated | no date given |  |\n| Privacy policy last updated | no date given | 2026-09-01 |\n| Customer content may train models | yes | yes, with an opt-out |\n| Terms restrict automated access | not found in the text |  |\n| Terms restrict benchmarking | yes |  |\n| Terms or service can change without notice | not found in the text |  |\n| Arbitration or class-action waiver | yes |  |\n| Popularity | 2 stars | 673 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**Shufti.** One endpoint covers document, face, address, AML and KYB checks, with a free plan of 10 verifications a month, and a hosted MCP server adds OAuth with three scopes. No OpenAPI file, server SDK or idempotency key was found, and the status page history could not be read.\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### Shufti\n\n1. POST every verification to `https://api.shuftipro.com/` with a unique `reference` of 6 to 250 characters and one object per service. Read results from `/status` with that reference\n2. Register the callback domain in the back office first. An unregistered `callback_url` is rejected\n3. Stay under 60 requests a minute per IP on a production account and 20 on a trial account\n4. Check the `Signature` response header. Accounts created after 15 March 2023 hash the Secret Key with SHA-256 before appending it to the raw response\n5. Through MCP, identity checks return a `verification_url` for the person to open. No tool accepts an image, so use the REST API for offsite proofs\n\n## Questions\n\n### Which is better for AI agents, Middesk or Shufti?\n\nMiddesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust.\n\n### Do Middesk and Shufti need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Middesk and Shufti without installing anything?\n\nYes. Middesk has a hosted endpoint at https://api.middesk.com/v1 and Shufti at https://api.shuftipro.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/middesk-vs-shufti.json, and with the fewest tokens: https://www.anchorterminal.com/compare/middesk-vs-shufti.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"middesk\", \"b\": \"shufti\"}`. From a terminal: `anchor compare middesk shufti`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/middesk.json and https://www.anchorterminal.com/api/v1/tools/shufti.json\n\n## Other comparisons with Middesk or Shufti\n\n- [ComplyCube vs Middesk](https://www.anchorterminal.com/compare/complycube-vs-middesk.md)\n- [ComplyCube vs Shufti](https://www.anchorterminal.com/compare/complycube-vs-shufti.md)\n- [Didit vs Middesk](https://www.anchorterminal.com/compare/didit-vs-middesk.md)\n- [Didit vs Shufti](https://www.anchorterminal.com/compare/didit-vs-shufti.md)\n- [Jumio vs Middesk](https://www.anchorterminal.com/compare/jumio-vs-middesk.md)\n- [Jumio vs Shufti](https://www.anchorterminal.com/compare/jumio-vs-shufti.md)\n- [Middesk vs Veriff](https://www.anchorterminal.com/compare/middesk-vs-veriff.md)\n- [Persona vs Shufti](https://www.anchorterminal.com/compare/persona-vs-shufti.md)\n- [Shufti vs Socure RiskOS](https://www.anchorterminal.com/compare/shufti-vs-socure-riskos.md)\n- [Shufti vs Sumsub](https://www.anchorterminal.com/compare/shufti-vs-sumsub.md)\n- [Shufti vs Trulioo](https://www.anchorterminal.com/compare/shufti-vs-trulioo.md)\n- [Shufti vs Veriff](https://www.anchorterminal.com/compare/shufti-vs-veriff.md)\n- [ComplyAdvantage vs Middesk](https://www.anchorterminal.com/compare/complyadvantage-vs-middesk.md)\n- [ComplyAdvantage vs Shufti](https://www.anchorterminal.com/compare/complyadvantage-vs-shufti.md)\n- [Middesk vs Persona](https://www.anchorterminal.com/compare/middesk-vs-persona.md)\n- [Middesk vs Socure RiskOS](https://www.anchorterminal.com/compare/middesk-vs-socure-riskos.md)\n- [Middesk vs Sumsub](https://www.anchorterminal.com/compare/middesk-vs-sumsub.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-09",
    "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 Shufti",
        "url": ""
      }
    ],
    "description": "Middesk scores 59 (C) on agent readiness against Shufti's 57.8 (C), and leads in 3 of 7 scored categories. Shufti leads on security \u0026 auth, payments \u0026 pricing, maintenance \u0026 community and transparency \u0026 trust. Both do kyc business. Category scores, facts, verdicts and agent…",
    "facts": [
      "Middesk C 59",
      "Shufti C 57.8",
      "scores"
    ],
    "h1": "Middesk vs Shufti",
    "image": "https://www.anchorterminal.com/assets/og/compare-middesk-vs-shufti.png",
    "path": "/compare/middesk-vs-shufti",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Middesk vs Shufti for AI agents, C 59 vs C 57.8 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/middesk-vs-shufti"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 730
  },
  "version": 1
}
