{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m6b23v55g64ee1f3t50xjv64",
 "ids": {
  "org": "org_01m6b23v55t3z8d4md9283h3x7",
  "surfaces": {
   "web": "srf_01m6b23v55bth07gt6vqvxpjy2",
   "api": "srf_01m6b23v55cd5szyq8vv0f8gny",
   "mcp": "srf_01m6b23v55g37a7zcm546drw32",
   "cli": "srf_01m6b23v55t2qnggnxgm5yfxqq",
   "sdk": "srf_01m6b23v555qcvpyqhxkqfk7h1"
  },
  "slugs": [
   "clerk"
  ],
  "domain": "clerk.com"
 },
 "slug": "clerk",
 "name": "Clerk",
 "url": "https://clerk.com",
 "domain": "clerk.com",
 "category": "auth",
 "category_name": "Auth and identity",
 "tested_at": "2026-11-01",
 "run": "20261101T064613Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261101T064613Z",
   "date": "2026-11-01",
   "level": 4,
   "engine": {
    "model": "claude-opus-5-5",
    "driver": 5,
    "signed": true,
    "inbox": [
     "agentdrives.com",
     "older test domain"
    ],
    "robots": "skip",
    "version": "2026.11.01",
    "commit": "ec81c2c9ee96dcdbebb170f4e8311cac1070bbef",
    "prompts": {
     "version": "2026.10.31",
     "commit": "89bf772fa7ebc3254cfd6313591a49f5c52a28b7"
    },
    "rules": {
     "version": "2026.10.31",
     "commit": "035d6752f8e8b4dfd75b95d48b7890d0101c6352"
    }
   },
   "stop": "delete",
   "paid": false,
   "agent_paid": null
  }
 ],
 "level": 4,
 "level_name": "Runs on its own",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 1,
  "tries": 1,
  "self_start": true
 },
 "badges": [],
 "not_counted": null,
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: no key needed, try first, claim later",
   "how": "no-account",
   "way": "claimable"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "No payment made: paying needs an account",
   "value": "not_tried",
   "route": "portal",
   "why": "account"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; what it made stays",
   "at": "delete",
   "how": "no-account",
   "left": "stuck",
   "delete": {
    "state": "no",
    "text": "Can't delete what it made",
    "why": "Every user, organization, connection, directory, machine and OAuth app the drive made was deleted by API (GET /v1/users -> [])."
   }
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Learn",
   "state": "yes",
   "text": "Docs it can act on: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: no key needed, try first, claim later",
   "how": "no-account",
   "way": "claimable",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 100% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "No payment made: paying needs an account",
   "value": "not_tried",
   "route": "portal",
   "why": "account",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; what it made stays",
   "at": "delete",
   "how": "no-account",
   "left": "stuck",
   "delete": {
    "state": "no",
    "text": "Can't delete what it made",
    "why": "Every user, organization, connection, directory, machine and OAuth app the drive made was deleted by API (GET /v1/users -> [])."
   },
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "keyless",
   "label": "No key needed",
   "routes": [
    "keyless"
   ],
   "minutes": 3,
   "core": "0/6"
  },
  {
   "key": "try_first",
   "label": "Try first, claim later",
   "routes": [
    "claimable"
   ],
   "minutes": 2,
   "core": "6/6"
  }
 ],
 "minutes": 2,
 "next": {
  "to": 5,
  "text": "Next: pay without a person"
 },
 "stop": "delete",
 "core": "6/6",
 "scores": {
  "coverage": 80,
  "reliability": 69,
  "resilience": 52,
  "setup": 100,
  "surface_coverage": 59,
  "docs_accuracy": 99,
  "docs_completeness": 53
 },
 "parts": {
  "holds_up": 60,
  "docs_match": 85,
  "setup": 100,
  "security": "private",
  "standards": [
   {
    "standard": "MCP client registration",
    "state": "current",
    "behind": null,
    "value": "cimd"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.3"
   }
  ]
 },
 "reliability_method": "pass^k",
 "resilience": {
  "parts": {
   "error_legibility": 81,
   "recovery": 75,
   "idempotency": 0
  },
  "summary": {
   "error_legibility": "clear",
   "recovery": "good",
   "idempotency": "risky",
   "rate_limits": "none-seen",
   "notes": "Errors are JSON with code, message and long_message naming the field (e.g. form_param_deprecated, form_data_missing); a few 404s say only 'Resource not found'. A repeated create with the same Idempotency-Key made a second organization; 15 quick reads saw no rate-limit headers."
  }
 },
 "stress": [
  {
   "capability": "Authenticate your app's end users with Clerk's components and API",
   "probe": "create user with no identifier",
   "outcome": "422 {\"errors\": [{\"message\": \"missing data\", \"long_message\": \"[\\\"password\\\" \\\"email_address\\\"] data doesn't match user requirements set for this instance\", \"code\": \"form_data_missing\", \"meta\": {\"param_",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create and manage organizations for a multi-tenant app",
   "probe": "update an org id that does not exist",
   "outcome": "404 {\"errors\": [{\"message\": \"not found\", \"long_message\": \"Resource not found\", \"code\": \"resource_not_found\"}], \"clerk_trace_id\": \"8af16768460fb37a3a9e8c7aef05a965\"}",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Set a member's role or permissions",
   "probe": "set a role key that does not exist",
   "outcome": "404 {\"errors\": [{\"message\": \"not found\", \"long_message\": \"Organization role not found\", \"code\": \"resource_not_found\", \"meta\": {\"param_name\": \"role\"}}], \"clerk_trace_id\": \"3ae7bc8e8ac7b09b8fcc9d5531845",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create and manage organizations for a multi-tenant app",
   "probe": "repeat the same org create (same Idempotency-Key)",
   "outcome": "200 {\"first\": \"org_3LUoLPszvTOAzelW9HhfPIhTvdJ\", \"second\": \"org_3LUoLTV4jc6uN2O5bV3G8YTCa23\"}",
   "grade": "silent",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "Authenticate your app's end users with Clerk's components and API",
   "probe": "burst of 15 sequential GET /v1/users?limit=1",
   "outcome": "200 {\"codes\": [200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200], \"ratelimit_headers\": []}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Authenticate your app's end users with Clerk's components and API",
   "probe": "wrong secret key",
   "outcome": "401 {\"errors\": [{\"message\": \"The provided Clerk Secret Key is invalid. Make sure that your Clerk Secret Key is correct.\", \"long_message\": \"The provided Clerk Secret Key is invalid. Make sure that your",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create and manage organizations for a multi-tenant app",
   "probe": "create org with a creator user that does not exist (half-done check)",
   "outcome": "400 {\"resp\": {\"errors\": [{\"message\": \"creator not found\", \"long_message\": \"No users found with id user_3LUzzzzzzzzzzzzzzzzzzzzzzzz.\", \"code\": \"organization_creator_not_found\"}], \"clerk_trace_id\": \"584",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": {
  "totals": {
   "items": 636,
   "documented": 636,
   "safe": 591,
   "exercised": 385,
   "passed": 349,
   "skipped": 45,
   "blocked": 206,
   "not_run": 0,
   "match": 380,
   "drift": 5,
   "broken_doc": 0,
   "docs_complete": 35,
   "docs_partial": 601,
   "docs_missing": 0,
   "errors_clear": 46,
   "errors_vague": 8,
   "errors_silent": 0
  }
 },
 "coverage_core": 100,
 "coverage_own": 100,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 5,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false
 },
 "methodology": 42,
 "rules_date": "2026-10-30",
 "engine": {
  "model": "claude-opus-5-5",
  "driver": 5,
  "signed": true,
  "inbox": [
   "agentdrives.com",
   "older test domain"
  ],
  "robots": "skip",
  "version": "2026.11.01",
  "commit": "ec81c2c9ee96dcdbebb170f4e8311cac1070bbef",
  "prompts": {
   "version": "2026.10.31",
   "commit": "89bf772fa7ebc3254cfd6313591a49f5c52a28b7"
  },
  "rules": {
   "version": "2026.10.31",
   "commit": "035d6752f8e8b4dfd75b95d48b7890d0101c6352"
  }
 },
 "same_level_drives": 1,
 "drives": 2,
 "same_stop_drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "newer_drives": {
  "count": 1,
  "newest": "2026-11-01"
 },
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "Clerk's own sign-up protection (first-party bot filter on its Dashboard)",
  "visible": false,
  "type": "network",
  "human": null,
  "how": "Relax your own bot check on sign-up and rely on email verification instead, or offer a documented sign-up API with email verification.",
  "recognises_us": false,
  "vendor_id": "first-party",
  "other_way": true,
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-11-02"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "verified",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt, auth.md, SKILL.md, markdown versions of the docs pages checked (.md and Accept: text/markdown), OpenAPI for the Backend, Frontend and Platform APIs."
  },
  "signup": {
   "status": "n/a",
   "note": "Not needed: a documented route works without an account.",
   "way": "claimable",
   "no_account": true,
   "note_driver": "The documented accountless route (auth.md: POST /v1/accountless_applications, no authentication) gives working keys without an account. The Clerk Dashboard sign-up itself refused our agent's browser silently on both our domains (see routes.json email_password).",
   "status_driver": "n/a"
  },
  "verify": {
   "status": "n/a",
   "note": "Not needed: a documented route works without an account.",
   "no_account": true,
   "note_driver": "No email needed on the accountless route.",
   "status_driver": "n/a"
  },
  "credentials": {
   "status": "headless",
   "note": "POST https://api.clerk.com/v1/accountless_applications returned a full-scope development secret key and publishable key; `clerk init --accountless` does the same from the CLI. Scoped machine keys are made, used and revoked without a browser via /v1/machines.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /v1/users and GET /v1/instance answered 200 with the accountless key.",
   "route": "no_account"
  },
  "first_action": {
   "status": "headless",
   "note": "POST /v1/users created a user, read back with GET /v1/users/{id}."
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [],
   "rail_ids": [],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "route": "portal",
   "checkout": {
    "reached": "no",
    "processor": "none",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "25.00",
    "currency": "USD",
    "period": "month",
    "plan": "Pro",
    "last_button": ""
   },
   "person": "none",
   "ours": "account",
   "note": "No 402/x402/MPP, no billing API, no Stripe Projects listing. Pro ($25/mo) is bought in the Dashboard of a Clerk workspace, and the Dashboard sign-up refused our agent, so the checkout was not reached and its form was not seen. Free Hobby plan needs no card; all Pro features are free on development instances. We paid nothing."
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "Nothing to cancel: the drive used the free accountless development app. The Clerk plan is managed in the Dashboard's billing page (no billing API or CLI found).",
   "docs_grade": "",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Every user, organization, connection, directory, machine and OAuth app the drive made was deleted by API (GET /v1/users -> []). Two waitlist entries (409 once invited or rejected), one custom role set (no delete operation) and the two unclaimed accountless applications stay, and the application keys still answer 200. auth.md, SKILL.md and cli.md name no delete or expiry for an unclaimed app; removing it needs a claim, i.e. a Clerk account.",
   "left": "stuck",
   "after_hours": null,
   "account": false
  }
 },
 "routes": [
  {
   "route": "keyless",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 3,
   "browser": false
  },
  {
   "route": "claimable",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 2,
   "browser": false
  },
  {
   "route": "email_password",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "refused",
   "wall": {
    "type": "challenge",
    "owner": "product"
   },
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 4,
   "browser": null
  },
  {
   "route": "sso_github",
   "offered": "seen",
   "tried": false,
   "not_tried": "policy",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  },
  {
   "route": "sso_google",
   "offered": "seen",
   "tried": false,
   "not_tried": "policy",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  },
  {
   "route": "device_login",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "consent_needs_account",
    "owner": "product"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 0.5,
   "browser": null
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "consent_needs_account",
    "owner": "product"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 2,
   "browser": null
  },
  {
   "route": "sso_enterprise",
   "offered": "documented",
   "tried": false,
   "not_tried": "assisted_only",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  },
  {
   "route": "enterprise",
   "offered": "documented",
   "tried": false,
   "not_tried": "assisted_only",
   "result": null,
   "wall": null,
   "person": null,
   "brings": null,
   "fresh": null,
   "minutes": null,
   "browser": null
  }
 ],
 "checkout": {
  "reached": "no",
  "rail_offer": "none",
  "period": "month",
  "price": "25.00",
  "currency": "USD",
  "plan": "Pro"
 },
 "docs": {
  "at": "2026-11-01",
  "read": 599,
  "listed": 2796,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "good",
  "freshness": "fresh",
  "newest": "2026-10-30",
  "core_pages": "6 of 6",
  "capabilities": "covered",
  "label": "No gaps in what we read"
 },
 "claims": {
  "claimed": 10,
  "tried": 6,
  "held": 4,
  "broken": 2,
  "unclear": 0,
  "not_tried": 4,
  "undocumented_works": 0
 },
 "pay_options": {
  "checked": "2026-11-01",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": true,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": true
 },
 "urls": {
  "docs": "https://clerk.com/docs",
  "llms_txt": "https://clerk.com/llms.txt",
  "mcp": "https://mcp.clerk.com/mcp"
 },
 "surface_notes": {
  "api": "REST Backend API, 263 operations (the 20 Aug 2026 MCP spec); Frontend API 214; Platform API 70 (BETA)",
  "openapi": "3.0.3 for all three specs",
  "cli": "clerk 4.1.0 (npm), agent mode, accountless init",
  "mcp": "official remote server, 21 tools in the docs, OAuth sign-in",
  "llms_txt": "https://clerk.com/llms.txt plus /docs/llms.txt",
  "webhooks": "Svix-delivered events",
  "sandbox": "development instances with test emails (+clerk_test, code 424242)"
 },
 "surface_sizes": [
  {
   "kind": "api",
   "listed": 549,
   "tested": 349
  },
  {
   "kind": "mcp",
   "listed": 21,
   "tested": 0
  },
  {
   "kind": "cli",
   "listed": 45,
   "tested": 20
  },
  {
   "kind": "sdk",
   "listed": 10,
   "tested": 10
  }
 ],
 "can_do": [
  "Get working Clerk API keys with one unauthenticated call (no account)",
  "Create, read, update and delete end users, and sign them in through the Frontend API",
  "Create organizations, add members, change roles and make custom roles and permissions",
  "Set up SAML enterprise connections and SCIM directories, and provision and deprovision users over SCIM",
  "Start, change and cancel a customer's subscription with custom prices",
  "Ban users, impersonate a user with an actor token, read sign-in logs, run a waitlist",
  "Issue machine keys and M2M tokens and revoke them"
 ],
 "cannot_do": [
  {
   "what": "Make a Clerk Dashboard account",
   "why": "The sign-up answered \"For your security, this request could not be completed\" for both our addresses, with no challenge shown"
  },
  {
   "what": "Turn sign-in methods on or off, set MFA or session lifetime",
   "why": "Only in the account-level config (Platform API, MCP, Dashboard), which needs a Clerk account"
  },
  {
   "what": "Use the MCP server",
   "why": "Its OAuth consent needs a Clerk Dashboard account"
  },
  {
   "what": "Buy a Clerk plan",
   "why": "Only in the Dashboard of a Clerk account; no billing API or agent rail"
  },
  {
   "what": "Delete an unclaimed accountless application",
   "why": "No documented delete or expiry without claiming it"
  }
 ],
 "blockers": [
  "Account-level config, MCP and Platform API all need that account"
 ],
 "tips_for_agents": [
  "Skip the Dashboard: POST https://api.clerk.com/v1/accountless_applications (no auth) returns a full-scope development secret key; or run `npx -y clerk@latest init --accountless` in a supported framework folder.",
  "Use +clerk_test addresses on example.com for test users: no mail is sent and code 424242 passes email verification and second-factor checks.",
  "Run the CLI with `--mode agent` and close stdin (`</dev/null`): `clerk api … -X DELETE` waits on an open stdin.",
  "Change user metadata through PATCH /v1/users/{id}/metadata: public_metadata on PATCH /v1/users/{id} is refused as deprecated.",
  "Start or change a customer's subscription with POST /v1/billing/subscription_items/{id}/price_transition (a custom $0 price works on development); there is no POST /v1/billing/subscriptions.",
  "Pass permission ids (perm_…), not keys, when creating organization roles.",
  "Browser-free sign-ups through the Frontend API can be refused as suspicious; create users with POST /v1/users instead."
 ],
 "selfhost": null,
 "edge_case": "none",
 "summary": "An agent gets real Clerk keys with one unauthenticated call (or `clerk init`) and can then run users, organizations, roles, SSO connections, SCIM, billing subscriptions and machine auth without a browser through a well-documented API, CLI and SDK. The Clerk Dashboard account is out of reach: its sign-up refused our agent with no challenge, so the MCP server, account-level config (sign-in methods, MFA, sessions), plan purchase and deleting the unclaimed apps are blocked.",
 "wall": "Deleting the account didn't go through for our agent; cause not confirmed",
 "plan_scope": "free plan (unclaimed development application; Pro features are free in development)",
 "robots_stop": null,
 "robots": null,
 "terms": null,
 "terms_read": "2026-11-01",
 "email_gate": null,
 "plain": {
  "summary": "Clerk handles sign-in, organizations and billing for other people's apps. An agent got working keys with one call and no account, then ran users, organizations, roles, SSO set-up and subscriptions on its own.",
  "can_do": [
   "Get working Clerk keys with one call and no account",
   "Create, read, update and delete users, and sign them in",
   "Create organizations, add members and change their roles",
   "Set up SSO and user-sync connections for a customer",
   "Start, change and cancel a customer's subscription",
   "Ban users, impersonate a user, read sign-in logs and run a waitlist",
   "Make and revoke machine keys"
  ],
  "cannot_do": [
   {
    "what": "Make a Clerk Dashboard account",
    "why": "Sign-up refused our agent's browser twice with no challenge shown"
   },
   {
    "what": "Change sign-in methods, MFA or session length",
    "why": "Those settings need a claimed app with an account"
   },
   {
    "what": "Use Clerk's MCP server",
    "why": "Its sign-in needs a Clerk account"
   },
   {
    "what": "Buy a Clerk plan",
    "why": "Only the Dashboard sells plans; no billing API found"
   },
   {
    "what": "Delete the two unclaimed apps",
    "why": "The docs we read name no delete or expiry without claiming them"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Authenticate your app's end users with Clerk's components and API",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/users",
    "mcp": "list_users",
    "cli": "npx clerk@latest init",
    "ui": "Dashboard > prebuilt <SignIn />/<SignUp /> components"
   },
   "check": "GET /v1/users/{id} shows the created user record",
   "capability_id": "cap_hmk55v09",
   "unmapped": null,
   "source": "https://clerk.com/, https://clerk.com/docs/guides/users/managing.md",
   "result": "done",
   "via": "api",
   "done_on": [
    "api",
    "cli"
   ]
  },
  {
   "id": "cap-02",
   "capability": "Configure sign-in methods for your app",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PATCH instance config",
    "mcp": "patch_instance_config",
    "cli": null,
    "ui": "Dashboard > User & Authentication > settings"
   },
   "check": "get_instance_config / GET instance settings shows the updated strategy list",
   "capability_id": "cap_ss1c05tf",
   "unmapped": null,
   "source": "https://clerk.com/docs/guides/configure/auth-strategies/sign-up-sign-in-options.md, https://clerk.com/mcp",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-03",
   "capability": "Create and manage organizations for a multi-tenant app",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/organizations",
    "mcp": null,
    "cli": null,
    "ui": "<OrganizationProfile />, Dashboard > Organizations"
   },
   "check": "GET /v1/organizations/{id} shows the organization record",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/multi-tenancy, https://clerk.com/docs/guides/organizations/overview.md",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-04",
   "capability": "Set a member's role or permissions",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PATCH /v1/organizations/{id}/memberships/{user_id}",
    "mcp": null,
    "cli": null,
    "ui": "<OrganizationProfile /> Members tab"
   },
   "check": "GET organization membership shows the new role",
   "capability_id": "cap_bs3hvrpm",
   "unmapped": null,
   "source": "https://clerk.com/multi-tenancy, https://clerk.com/docs/guides/organizations/control-access/roles-and-permissions",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-05",
   "capability": "Set up enterprise SSO (SAML, OIDC, EASIE)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/organizations/{id}/enterprise_connections",
    "mcp": "get_deploy_oauth_providers",
    "cli": null,
    "ui": "Dashboard > SSO Connections, self-serve by customer IT admin"
   },
   "check": "get_domain_status / GET enterprise connection shows active status",
   "capability_id": "cap_pz4pecfg",
   "unmapped": null,
   "source": "https://clerk.com/enterprise-authentication, https://clerk.com/docs/guides/configure/auth-strategies/enterprise-connections/overview",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-06",
   "capability": "Start a subscription for your app's customer",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/billing/subscriptions",
    "mcp": null,
    "cli": null,
    "ui": "<PricingTable />, customer self-service portal"
   },
   "check": "GET subscription shows status active for the customer",
   "capability_id": "cap_jwqb98rz",
   "unmapped": null,
   "source": "https://clerk.com/billing, https://clerk.com/docs/guides/billing/overview.md",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-07",
   "capability": "Style and brand the prebuilt sign-in UI",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Customization > appearance prop"
   },
   "check": "Rendered <SignIn /> reflects the configured logo and colors",
   "capability_id": "cap_28j5w4mh",
   "unmapped": null,
   "source": "https://clerk.com/docs/guides/customizing-clerk/appearance-prop/overview.md",
   "result": "done",
   "via": "sdk",
   "done_on": [
    "sdk"
   ]
  },
  {
   "id": "cap-08",
   "capability": "Set a custom session duration and track devices",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "PATCH instance session settings",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Sessions"
   },
   "check": "GET session shows the configured expire_at matching the new duration",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/pricing",
   "result": "blocked",
   "via": "cli"
  },
  {
   "id": "cap-09",
   "capability": "Invite a member to an organization",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/organizations/{id}/invitations",
    "mcp": null,
    "cli": null,
    "ui": "<OrganizationProfile /> invite flow"
   },
   "check": "GET invitations shows the pending invitation for the email",
   "capability_id": "cap_3w8sjh12",
   "unmapped": null,
   "source": "https://clerk.com/multi-tenancy",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-10",
   "capability": "Provision and deprovision users with SCIM Directory Sync",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "SCIM endpoint per enterprise connection",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > SSO Connections > Directory Sync"
   },
   "check": "GET directory sync connection shows synced user count",
   "capability_id": "cap_m71xhnht",
   "unmapped": null,
   "source": "https://clerk.com/pricing, https://clerk.com/docs/guides/configure/auth-strategies/enterprise-connections/directory-sync",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-11",
   "capability": "Require multi-factor authentication for end users",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "PATCH instance config (mfa)",
    "mcp": "patch_instance_config",
    "cli": null,
    "ui": "Dashboard > User & Authentication > Multi-factor"
   },
   "check": "get_instance_config shows mfa required flag set",
   "capability_id": "cap_9qz744jy",
   "unmapped": null,
   "source": "https://clerk.com/pricing, https://clerk.com/mcp",
   "result": "blocked",
   "via": "cli"
  },
  {
   "id": "cap-12",
   "capability": "Create an API key for machine-to-machine auth",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/api_keys",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > API Keys"
   },
   "check": "GET /v1/api_keys/{id} shows the created key metadata",
   "capability_id": "cap_wbg916v9",
   "unmapped": null,
   "source": "https://clerk.com/docs/guides/development/machine-auth/api-keys",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-13",
   "capability": "Register a webhook for Clerk events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Dashboard-managed webhook endpoint config",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Webhooks"
   },
   "check": "Webhook endpoint receives a test event payload",
   "capability_id": "cap_977hxacb",
   "unmapped": null,
   "source": "https://clerk.com/docs/guides/development/webhooks/overview",
   "result": "partial",
   "via": "api"
  },
  {
   "id": "cap-14",
   "capability": "Set a price for a billing plan",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/billing/plans",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Billing > Plans"
   },
   "check": "GET billing plan shows the configured price",
   "capability_id": "cap_h059vkgb",
   "unmapped": null,
   "source": "https://clerk.com/billing",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-15",
   "capability": "Set up a self-service billing portal for customers",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "<UserProfile /> billing tab / prebuilt components"
   },
   "check": "Customer can view and change their subscription in the portal",
   "capability_id": "cap_5mhrywhw",
   "unmapped": null,
   "source": "https://clerk.com/billing",
   "result": "done",
   "via": "sdk",
   "done_on": [
    "sdk"
   ]
  },
  {
   "id": "cap-16",
   "capability": "Ban or block a user by attribute",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /v1/users/{id}/ban",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Users > ban action"
   },
   "check": "GET /v1/users/{id} shows banned: true",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/pricing, https://clerk.com/docs/reference/backend-api/tag/users/POST/users/%7Buser_id%7D/ban",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-17",
   "capability": "Impersonate a user for support troubleshooting",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST actor token for impersonation",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Users > Impersonate"
   },
   "check": "Impersonation session shows the target user's account in the app",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/pricing",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-18",
   "capability": "Export all user data",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > export request"
   },
   "check": "Exported file contains the full user dataset",
   "capability_id": "cap_8zwmj5wn",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "partial",
   "via": "api"
  },
  {
   "id": "cap-19",
   "capability": "Read application and admin activity logs",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /v1/logs",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Logs"
   },
   "check": "GET /v1/logs returns the recorded sign-in/config-change event",
   "capability_id": "cap_xgs80797",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-20",
   "capability": "Restrict Secret Key access by IP address",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "PATCH secret key ip allowlist",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > API Keys > IP allowlist"
   },
   "check": "A request from a non-allowlisted IP using the key is rejected",
   "capability_id": "cap_wrzp7nnm",
   "unmapped": null,
   "source": "https://clerk.com/docs/guides/secure/secret-key-ip-allowlist",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-21",
   "capability": "Collect sign-ups in a waitlist before launch",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/waitlist_entries",
    "mcp": null,
    "cli": null,
    "ui": "<Waitlist /> component"
   },
   "check": "GET /v1/waitlist_entries shows the new entry",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/docs/guides/secure/waitlist.md",
   "result": "done",
   "via": "api",
   "done_on": [
    "api"
   ]
  },
  {
   "id": "cap-22",
   "capability": "Change the Clerk subscription plan",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Billing & Plans"
   },
   "check": "Dashboard shows the workspace on the newly selected plan",
   "capability_id": "cap_0fp1r7vd",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-23",
   "capability": "Remove Clerk branding from prebuilt UI",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Customization"
   },
   "check": "Rendered components no longer show \"Secured by Clerk\"",
   "capability_id": "cap_n2ya4t0w",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-24",
   "capability": "Connect a custom domain",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /v1/domains",
    "mcp": "list_domains",
    "cli": null,
    "ui": "Dashboard > Domains"
   },
   "check": "get_domain_status shows the domain verified",
   "capability_id": "cap_dj4n5a69",
   "unmapped": null,
   "source": "https://clerk.com/pricing, https://clerk.com/mcp",
   "result": "partial",
   "via": "api"
  },
  {
   "id": "cap-25",
   "capability": "Download the account's invoices",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Billing > Invoices"
   },
   "check": "Downloaded PDF matches the listed invoice amount",
   "capability_id": "cap_39r7q610",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-26",
   "capability": "Read usage and quota consumption",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Dashboard > Usage"
   },
   "check": "Usage page shows current MRU/MRO counts against plan limits",
   "capability_id": "cap_n0zefvzh",
   "unmapped": null,
   "source": "https://clerk.com/pricing",
   "result": "blocked",
   "via": null
  },
  {
   "id": "cap-27",
   "capability": "Provision a Clerk app for a customer via the Platform API",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "Platform API create application",
    "mcp": "Apps tool",
    "cli": null,
    "ui": "Dashboard > Apps"
   },
   "check": "GET application via Platform API shows the newly created app",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://clerk.com/platform",
   "result": "blocked",
   "via": null
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/clerk.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [],
   "stop": "signup",
   "why": "the form refused our agent's browser",
   "tone": "wall",
   "text": "Signing up needs a person: the form refused our agent's browser."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [
    "credentials",
    "first_call",
    "first_action"
   ],
   "stop": "pay",
   "why": null,
   "tone": "neutral",
   "text": "Without an account (no key needed) it gets an API key, makes its first API call and does all of the core work. Payment wasn't tried."
  }
 },
 "sdk": {
  "packages": [
   {
    "ecosystem": "pypi",
    "name": "clerk-backend-api",
    "url": "https://pypi.org/project/clerk-backend-api/",
    "source": "https://raw.githubusercontent.com/clerk/clerk-sdk-python/HEAD/pyproject.toml"
   }
  ],
  "read_at": "2026-11-01T20:54:25Z"
 },
 "surface_reach": {
  "surfaces": {
   "api": true,
   "mcp": true,
   "cli": true
  },
  "read_at": "2026-10-30T02:16:06Z"
 },
 "connect": {
  "mcp": {
   "url": "https://mcp.clerk.com/mcp",
   "transport": "streamable-http",
   "state": "documented",
   "tools": {
    "count": 20,
    "names": [
     "list_applications",
     "get_application",
     "create_application",
     "get_instance_config",
     "get_instance_config_schema",
     "patch_instance_config",
     "put_instance_config",
     "list_users",
     "create_user",
     "list_domains",
     "get_domain_status",
     "check_domain_dns",
     "get_deploy_oauth_providers",
     "create_production_instance",
     "set_oauth_provider_credentials",
     "list_application_feedback",
     "submit_feedback",
     "get_more_tools",
     "clerk_sdk_snippet",
     "list_clerk_sdk_snippets"
    ],
    "read_at": "2026-10-30"
   }
  },
  "cli": {
   "install": "npm install -g clerk",
   "package": "clerk",
   "ecosystem": "npm",
   "source": "https://clerk.com/llms.txt",
   "state": "documented"
  },
  "api": {
   "base_url": "https://api.clerk.com/v1",
   "state": "documented"
  },
  "signup": {
   "url": "https://dashboard.clerk.com/sign-up",
   "state": "documented"
  },
  "docs": {
   "url": "https://clerk.com/docs",
   "state": "tested"
  }
 },
 "surface_sources": {
  "mcp": "https://mcp.clerk.com/mcp",
  "docs": "https://clerk.com/docs",
  "llms_txt": "https://clerk.com/llms.txt",
  "cli": "https://clerk.com/llms.txt",
  "api": "https://clerk.com/docs/reference/backend-api/tag/miscellaneous/GET/public/interstitial",
  "sdk": "https://clerk.com/docs/reference/backend/overview.md",
  "openapi": "https://clerk.com/openapi.json"
 },
 "copilot_connector": null,
 "stripe_directory": null,
 "in_stripe_directory": null,
 "stripe_projects": {
  "provider": "Clerk",
  "free_tier": true,
  "services": 3,
  "source": "https://projects.dev/providers/",
  "checked": "2026-11-01"
 },
 "pay_rails": [],
 "stop_evidence": {
  "at": "delete",
  "date": "2026-11-01",
  "line": "Every user, organization, connection, directory, machine and OAuth app the drive made was deleted by API (GET /v1/users -> [])."
 },
 "wall_vendor": null,
 "mcp_sign_in": {
  "sign_in": true,
  "prm": true,
  "registration": "both",
  "device": false
 },
 "safety_issues": 2,
 "fix_counts": {
  "small": 3,
  "medium": 4,
  "large": 0,
  "total": 7
 },
 "evidence_sha256": "b0d4b225699c94ceac2f85478080d5fd3cc6282e2c19a06fa14a8661a588c3f6",
 "first_seen": "2026-11-01",
 "license": {
  "name": "CC BY 4.0",
  "url": "https://creativecommons.org/licenses/by/4.0/"
 },
 "correction": {
  "status": "none",
  "open": 0,
  "since": null,
  "reply_by": null
 },
 "attribution": {
  "vendor": "Clerk's own sign-up protection",
  "at": "signup",
  "state": "present",
  "stopped": false,
  "line": null
 },
 "confirmation": {
  "state": "awaiting",
  "drives": 2,
  "agree": 2,
  "review": null,
  "text": "2 drives on one day, awaiting confirmation"
 },
 "stop_shot": null,
 "stop_shot_hash": null,
 "attempts_count": 164,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": null,
 "kind": "product",
 "rules_version": "rules-2026-10-30-42",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-30-42",
 "category_median": null,
 "peers": {
  "API-03": {
   "basis": "all",
   "n": 88,
   "below": 35,
   "above": 10,
   "percentile": 64
  },
  "API-04": {
   "basis": "all",
   "n": 86,
   "below": 24,
   "above": 0,
   "percentile": 64
  },
  "API-07": {
   "basis": "all",
   "n": 98,
   "below": 38,
   "above": 0,
   "percentile": 69
  },
  "DOCS-08": {
   "basis": "all",
   "n": 142,
   "below": 0,
   "above": 54,
   "percentile": 31
  },
  "DOCS-10": {
   "basis": "all",
   "n": 142,
   "below": 39,
   "above": 31,
   "percentile": 53
  },
  "DOCS-11": {
   "basis": "all",
   "n": 142,
   "below": 98,
   "above": 0,
   "percentile": 85
  },
  "ERR-01": {
   "basis": "all",
   "n": 128,
   "below": 2,
   "above": 0,
   "percentile": 51
  },
  "ERR-02": {
   "basis": "all",
   "n": 105,
   "below": 84,
   "above": 0,
   "percentile": 90
  },
  "ERR-03": {
   "basis": "all",
   "n": 104,
   "below": 24,
   "above": 23,
   "percentile": 50
  },
  "ERR-04": {
   "basis": "all",
   "n": 36,
   "below": 0,
   "above": 12,
   "percentile": 33
  },
  "ERR-07": {
   "basis": "all",
   "n": 104,
   "below": 34,
   "above": 40,
   "percentile": 47
  },
  "FIND-06": {
   "basis": "all",
   "n": 106,
   "below": 25,
   "above": 0,
   "percentile": 62
  },
  "IN-03": {
   "basis": "all",
   "n": 86,
   "below": 14,
   "above": 0,
   "percentile": 58
  },
  "IN-08": {
   "basis": "all",
   "n": 120,
   "below": 55,
   "above": 0,
   "percentile": 73
  },
  "IN-09": {
   "basis": "all",
   "n": 10,
   "below": 5,
   "above": 0,
   "quartile": 4
  },
  "IN-11": {
   "basis": "all",
   "n": 146,
   "below": 56,
   "above": 38,
   "percentile": 56
  },
  "IN-12": {
   "basis": "all",
   "n": 148,
   "below": 98,
   "above": 0,
   "percentile": 83
  },
  "LEAVE-03": {
   "basis": "all",
   "n": 145,
   "below": 56,
   "above": 28,
   "percentile": 60
  },
  "LIM-02": {
   "basis": "all",
   "n": 48,
   "below": 0,
   "above": 21,
   "percentile": 28
  },
  "PAY-05": {
   "basis": "all",
   "n": 119,
   "below": 85,
   "above": 6,
   "percentile": 83
  },
  "PROTO-02": {
   "basis": "all",
   "n": 94,
   "below": 0,
   "above": 2,
   "percentile": 49
  }
 },
 "probe": null,
 "probe_history": [],
 "surface_changes": [],
 "agent_reports": null,
 "verdict": null,
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261101T064613Z",
    "date": "2026-11-01",
    "level": 4,
    "stop": "delete",
    "entry": "self-start",
    "driver": 5,
    "listed": true,
    "paid": false,
    "agent_paid": null
   },
   {
    "run": "20261101T224859Z",
    "date": "2026-11-01",
    "level": 4,
    "stop": "delete",
    "entry": "self-start",
    "driver": 5,
    "listed": true,
    "paid": false,
    "agent_paid": null
   }
  ],
  "events": [],
  "feed": "https://agentdrives.com/api/tools/clerk/changes.json"
 },
 "agreement": {
  "drives": 2,
  "agree": 2
 },
 "method_release": "2026-Q4.27",
 "found": {
  "agent_blockers": 1,
  "surface_issues": 5
 },
 "agent_surfaces": {
  "api": {
   "state": "tested",
   "reachable": true,
   "documented": 549,
   "tested": 349,
   "source": "https://clerk.com/docs/reference/backend-api/tag/miscellaneous/GET/public/interstitial"
  },
  "mcp": {
   "state": "documented",
   "reachable": true,
   "documented": 21,
   "tested": 0,
   "source": "https://mcp.clerk.com/mcp"
  },
  "cli": {
   "state": "tested",
   "reachable": true,
   "documented": 45,
   "tested": 20,
   "source": "https://clerk.com/llms.txt"
  },
  "sdk": {
   "state": "tested",
   "documented": 10,
   "tested": 10,
   "source": "https://clerk.com/docs/reference/backend/overview.md"
  },
  "docs": {
   "state": "tested",
   "documented": 2796,
   "tested": 599,
   "source": "https://clerk.com/docs"
  },
  "payment": {
   "state": "none_found",
   "documented": null,
   "tested": null,
   "source": null
  }
 },
 "issues_found": 6,
 "rank": 1,
 "rank_of": 1,
 "rank_change": null,
 "rank_since": "2026-11-01",
 "links": {
  "category": [
   {
    "label": "Developer platform",
    "href": "https://agentdrives.com/categories/developer"
   },
   {
    "label": "Auth and identity",
    "href": "https://agentdrives.com/categories/auth"
   }
  ],
  "tasks": [
   {
    "label": "Invite a member",
    "href": "https://agentdrives.com/tasks/invite-a-member"
   },
   {
    "label": "Create an API key",
    "href": "https://agentdrives.com/tasks/create-an-api-key"
   },
   {
    "label": "Set a member's role or permissions",
    "href": "https://agentdrives.com/tasks/set-a-member-s-role-or-permissions"
   },
   {
    "label": "Read the audit log",
    "href": "https://agentdrives.com/tasks/read-the-audit-log"
   },
   {
    "label": "Set the brand logo and colours",
    "href": "https://agentdrives.com/tasks/set-the-brand-logo-and-colours"
   },
   {
    "label": "Sign up and sign in your app's users",
    "href": "https://agentdrives.com/tasks#sign-up-and-sign-in-your-app-s-users"
   }
  ],
  "walls": [
   {
    "label": "Bot checks",
    "href": "https://agentdrives.com/access/get-in/bot-checks",
    "note": "our agent got in another way"
   },
   {
    "label": "Let AI agents delete the account they opened",
    "href": "https://agentdrives.com/guides/let-agents-delete-their-account",
    "note": "fix guide"
   }
  ],
  "vendors": [],
  "standards": [
   {
    "label": "MCP",
    "href": "https://agentdrives.com/standards/mcp",
    "note": "tools an agent can call"
   },
   {
    "label": "OpenAPI",
    "href": "https://agentdrives.com/standards/openapi",
    "note": "its API, described"
   },
   {
    "label": "llms.txt",
    "href": "https://agentdrives.com/standards/llms-txt",
    "note": "its docs, listed for agents"
   }
  ],
  "steps": [
   {
    "label": "Find",
    "href": "https://agentdrives.com/access/find"
   },
   {
    "label": "Get in",
    "href": "https://agentdrives.com/access/get-in"
   },
   {
    "label": "Use",
    "href": "https://agentdrives.com/access/use"
   },
   {
    "label": "Pay",
    "href": "https://agentdrives.com/access/pay"
   },
   {
    "label": "Leave",
    "href": "https://agentdrives.com/access/leave"
   }
  ],
  "rivals": [],
  "compare": [],
  "rail": [
   {
    "label": "Watch this product",
    "href": "https://agentdrives.com/watch"
   },
   {
    "label": "Get the data",
    "href": "https://agentdrives.com/data#plans"
   }
  ]
 },
 "capability_matrix": [
  {
   "id": "cap-01",
   "name": "Authenticate your app's end users with Clerk's components and API",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "done",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Configure sign-in methods for your app",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Create and manage organizations for a multi-tenant app",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Set a member's role or permissions",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Set up enterprise SSO (SAML, OIDC, EASIE)",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Start a subscription for your app's customer",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Style and brand the prebuilt sign-in UI",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-08",
   "name": "Set a custom session duration and track devices",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "blocked",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "Invite a member to an organization",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "Provision and deprovision users with SCIM Directory Sync",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Require multi-factor authentication for end users",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "untried",
    "cli": "blocked",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "Create an API key for machine-to-machine auth",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-13",
   "name": "Register a webhook for Clerk events",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "partial",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-14",
   "name": "Set a price for a billing plan",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-15",
   "name": "Set up a self-service billing portal for customers",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-16",
   "name": "Ban or block a user by attribute",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Impersonate a user for support troubleshooting",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Export all user data",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "partial",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Read application and admin activity logs",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-20",
   "name": "Restrict Secret Key access by IP address",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-21",
   "name": "Collect sign-ups in a waitlist before launch",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-22",
   "name": "Change the Clerk subscription plan",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-23",
   "name": "Remove Clerk branding from prebuilt UI",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-24",
   "name": "Connect a custom domain",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "partial",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-25",
   "name": "Download the account's invoices",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-26",
   "name": "Read usage and quota consumption",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-27",
   "name": "Provision a Clerk app for a customer via the Platform API",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "untried",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  }
 ],
 "category_place": {
  "category": "auth",
  "products": 1,
  "higher": 0,
  "same_level": 0,
  "as_of": "2026-11-01",
  "stop": "delete",
  "rivals_by": "stop",
  "rivals": []
 },
 "page": "https://agentdrives.com/tools/clerk?via=api"
}