{
 "$schema": "https://agentdrives.com/schemas/tool.schema.json",
 "id": "prd_01m57vgtnect30je46veeaxzf4",
 "ids": {
  "org": "org_01m57vgtnenkacej3fsja5f3mm",
  "surfaces": {
   "web": "srf_01m5en8zh3ass3r3k1eyg1g85d",
   "api": "srf_01m5en8zh3z03dx6ems0b48csw",
   "mcp": "srf_01m5en8zh331jm9tk2xct5r103",
   "cli": "srf_01m5en8zh36z53ced6dg47dj52",
   "sdk": "srf_01m5en8zh3r7tq9td5fgxkgjbj"
  },
  "slugs": [
   "gocardless"
  ],
  "domain": "gocardless.com"
 },
 "slug": "gocardless",
 "name": "GoCardless",
 "url": "https://gocardless.com",
 "domain": "gocardless.com",
 "category": "payments",
 "category_name": "Payments",
 "tested_at": "2026-10-21",
 "run": "20261021T055731Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261021T055731Z",
   "date": "2026-10-21",
   "level": 4,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 4,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip"
   },
   "stop": "delete"
  }
 ],
 "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: MCP sign-in, sign-up in a browser",
   "way": "email_code"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 89% of the core"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Ready to pay: payment not yet proven; stopped at the pay button",
   "value": "ready",
   "route": "portal"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; deletes its data, but the login stays",
   "at": "delete",
   "left": "data_only",
   "delete": {
    "state": "part",
    "text": "Deletes its data, but the login stays",
    "why": "Closing the account is a support ticket (Company settings > Close Account > Request Account Closure); the support form showed a Cloudflare interstitial that did not clear."
   }
  }
 ],
 "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: MCP sign-in, sign-up in a browser",
   "way": "email_code",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "yes",
   "text": "Work done: 89% of the core",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "part",
   "text": "Ready to pay: payment not yet proven; stopped at the pay button",
   "value": "ready",
   "route": "portal",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; deletes its data, but the login stays",
   "at": "delete",
   "left": "data_only",
   "delete": {
    "state": "part",
    "text": "Deletes its data, but the login stays",
    "why": "Closing the account is a support ticket (Company settings > Close Account > Request Account Closure); the support form showed a Cloudflare interstitial that did not clear."
   },
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "mcp_signin",
   "label": "MCP sign-in",
   "routes": [
    "oauth_consent"
   ],
   "minutes": 12,
   "core": "4/9"
  },
  {
   "key": "browser_signup",
   "label": "Sign-up in a browser",
   "routes": [
    "email_code"
   ],
   "minutes": 10,
   "core": "8/9"
  }
 ],
 "minutes": 10,
 "next": {
  "to": 5,
  "text": "Next: pay without a person"
 },
 "stop": "delete",
 "core": "8/9",
 "scores": {
  "coverage": 81,
  "reliability": 79,
  "resilience": 73,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": 76,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP",
    "state": "behind",
    "behind": 1,
    "value": "2025-11-25"
   },
   {
    "standard": "MCP discovery",
    "state": "behind",
    "behind": null,
    "value": "legacy"
   },
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 2,
    "value": "3.0.0"
   }
  ]
 },
 "reliability_method": "pass^k",
 "resilience": {
  "parts": {
   "error_legibility": 87,
   "recovery": 64,
   "idempotency": 67
  },
  "summary": {
   "error_legibility": "clear",
   "recovery": "good",
   "idempotency": "safe",
   "rate_limits": "none-seen",
   "notes": "Errors are JSON with a reason, request_pointer and a docs link (not problem+json); a repeated create with the same Idempotency-Key returns 409 with the original id, without a key it duplicates. 15 quick reads all 200 with ratelimit-limit 1600 / ratelimit-remaining / ratelimit-reset headers (the old draft names). Feature-gated endpoints answer a bare 401/403."
  }
 },
 "stress": [
  {
   "capability": "Accept a one-off bank payment (Pay by Bank)",
   "probe": "payment missing links.mandate",
   "outcome": "422 ['content-type: application/json'] {\"error\": {\"message\": \"One of your parameters was incorrectly typed\", \"errors\": [{\"message\": \"\\\"links\\\" wasn't supplied.\", \"request_pointer\": \"/payments\"}], \"doc",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Start a recurring subscription for a customer",
   "probe": "subscription with bad interval_unit enum",
   "outcome": "422 ['content-type: application/json'] {\"error\": {\"message\": \"One of your parameters was incorrectly typed\", \"errors\": [{\"field\": \"interval_unit\", \"message\": \"\\\"fortnightly\\\" is not a valid value. Mus",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Accept a one-off bank payment (Pay by Bank)",
   "probe": "well-formed payment id that does not exist",
   "outcome": "404 ['content-type: application/json'] {\"error\": {\"message\": \"Resource not found\", \"errors\": [{\"reason\": \"resource_not_found\", \"message\": \"Resource not found\"}], \"documentation_url\": \"https://develope",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Create a customer",
   "probe": "repeat a create with the same Idempotency-Key",
   "outcome": "1st 201 CU01M5EJMZ8M713Y0N9S695YSTSE; 2nd 409 idempotent_creation_conflict with links.conflicting_resource_id = the first id (no duplicate)",
   "grade": "clear",
   "idempotent": "yes",
   "rate_limit": null
  },
  {
   "capability": "Create a customer",
   "probe": "repeat a create without Idempotency-Key",
   "outcome": "201 CU01M5EJN9RPPNY4Q91EJ149F35G and 201 CU01M5EJNAB7Q5WTXPTJY6FT87NW: two customers (duplicate without a key)",
   "grade": "silent",
   "idempotent": "no",
   "rate_limit": null
  },
  {
   "capability": "Create a customer",
   "probe": "burst of 15 sequential GET /customers?limit=1",
   "outcome": "[200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200]; last headers ['ratelimit-limit: 1600', 'ratelimit-remaining: 1582', 'ratelimit-reset: Wed, 21 Oct 2026 06:35:00 GMT']",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": "none-seen"
  },
  {
   "capability": "Create a customer",
   "probe": "call with a wrong token",
   "outcome": "401 ['content-type: application/json'] {\"error\": {\"message\": \"The access token you've used is not a valid sandbox API access token\", \"errors\": [{\"reason\": \"access_token_not_found\", \"message\": \"The acc",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "Start a recurring subscription for a customer",
   "probe": "subscription on a cancelled mandate (state left consistent?)",
   "outcome": "422 ['content-type: application/json'] {\"error\": {\"message\": \"Mandate is failed, cancelled, expired or blocked\", \"errors\": [{\"reason\": \"mandate_is_inactive\", \"message\": \"Mandate is failed, cancelled, ",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": null,
 "coverage_core": 89,
 "coverage_own": 89,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 4,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "b15524093c45",
  "kb_version": "3+overlay-433b0645d9",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 24,
 "rules_date": "2026-10-20",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 4,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "skip"
 },
 "same_level_drives": 0,
 "drives": 2,
 "same_stop_drives": 1,
 "works_assisted": null,
 "freshness": "fresh",
 "newer_drives": {
  "count": 1,
  "newest": "2026-10-24"
 },
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-24"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt at docs.gocardless.com/llms.txt, an OpenAPI 3.0.0 spec (109 paths), .md versions of every docs page, a CLI reference and an MCP page; all fetched without a browser."
  },
  "signup": {
   "status": "browser",
   "note": "Sandbox sign-up form at manage-sandbox.gocardless.com/sign-up (business name, country, business type, email, password, terms); no CAPTCHA; no sign-up API.",
   "way": "email_code"
  },
  "verify": {
   "status": "browser",
   "note": "A 6-digit code mailed to the agent's inbox within a minute, valid 5 minutes, typed into the sign-up page."
  },
  "credentials": {
   "status": "browser",
   "note": "Read-write access token made in the dashboard (Developers > Create access token); no API to create tokens. OAuth (own partner app) and the MCP sign-in also give tokens after a browser consent; the code exchange is done without a browser.",
   "via": ""
  },
  "first_call": {
   "status": "headless",
   "note": "GET /creditors on api-sandbox.gocardless.com with the token: 200.",
   "route": "account"
  },
  "first_action": {
   "status": "headless",
   "note": "POST /customers created a customer, read back with GET."
  },
  "pay": {
   "status": "browser",
   "grade": "P2",
   "rails": [
    "per-transaction fees deducted from collected payments"
   ],
   "rail_ids": [
    "other"
   ],
   "first_party": true,
   "rail_scope": "none",
   "trial_path": "free tier",
   "3ds": "none",
   "route": "portal",
   "checkout": {
    "reached": "last_click",
    "processor": "own",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "1.0% + €0.20",
    "currency": "EUR",
    "period": "usage",
    "plan": "Standard",
    "last_button": "Confirm downgrade"
   },
   "person": "none",
   "ours": "rule: stopped at the 'Confirm downgrade' button without clicking it, to avoid changing the live sandbox plan",
   "note": "No 402, x402, MPP or Stripe Projects listing (our payment check; our payment check paid nothing). Plans are per-transaction fees taken from collected payments; the plan is changed in the dashboard (Plan and add-ons > Change plan), with no card form. The sandbox starts on Pro, so the walk ended at \"Confirm downgrade\" (not clicked); add-ons (Custom branding €50/month, Custom payment experience €200/month) are added on the same page, Custom goes to sales. No billing API.",
   "ready": {
    "kind": "checkout",
    "plan": "Standard",
    "processor": "own"
   }
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent used the free plan.",
   "docs_note": "Nothing to cancel: the drive started no paid plan or add-on. Plan and add-on changes are made in the dashboard (Plan and add-ons); there is no billing API.",
   "docs_grade": "",
   "nothing": "free_plan"
  },
  "delete": {
   "status": "blocked",
   "note": "Closing the account is a support ticket (Company settings > Close Account > Request Account Closure); the support form showed a Cloudflare interstitial that did not clear. No API or CLI route. All data was deleted over the API and every token and grant revoked; the login still works.",
   "left": "data_only",
   "after_hours": null,
   "account": true
  }
 },
 "routes": [
  {
   "route": "keyless",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "network",
    "owner": "product"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 0.5,
   "browser": null
  },
  {
   "route": "email_code",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 10,
   "browser": true
  },
  {
   "route": "device_login",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "not_reached",
   "wall": {
    "type": "robots",
    "owner": "platform"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 1,
   "browser": null
  },
  {
   "route": "oauth_consent",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "in",
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 12,
   "browser": true
  }
 ],
 "checkout": {
  "reached": "last_click",
  "processor": "own",
  "captcha": "none",
  "three_ds": "not_seen",
  "phone_field": "none",
  "rail_offer": "none",
  "period": "usage",
  "card_form": false,
  "plan": "Standard",
  "last_button": "Confirm downgrade"
 },
 "docs": {
  "at": "2026-10-21",
  "read": 598,
  "listed": 7642,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "some",
  "freshness": "fresh",
  "newest": "2026-10-20",
  "core_pages": "9 of 9",
  "capabilities": "covered"
 },
 "claims": {
  "claimed": 17,
  "tried": 14,
  "held": 12,
  "broken": 1,
  "unclear": 1,
  "not_tried": 3,
  "undocumented_works": 0
 },
 "pay_options": {
  "checked": "2026-10-21",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "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
 },
 "surface_notes": {
  "api": "REST, 109 paths in the public OpenAPI; sandbox at api-sandbox.gocardless.com",
  "openapi": "declares 3.0.0; some paths drift (payer_themes 403 for non-Embed, mandate_imports 403 with no restriction named)",
  "mcp": "official, 24 tools, OAuth (DCR), the older 25 Nov 2025 spec",
  "cli": "official gocardless CLI, sandbox only, distributed via brew tap / GitHub releases"
 },
 "can_do": [
  "Create customers, add bank accounts and set up Bacs and SEPA mandates over the API",
  "Take one-off Direct Debit payments in GBP and EUR, update and cancel them",
  "Create a hosted checkout link (billing request + flow) and cancel it",
  "Start, change, pause, resume and cancel subscriptions",
  "Refund a collected payment once refunds are switched on in the dashboard",
  "Set up and cancel instalment schedules",
  "Read balances, payouts and payout items, events and webhook deliveries",
  "Drive sandbox scenarios (mandate activated, payment confirmed, paid out, failed)",
  "Create payments and refunds through the official MCP server after an OAuth sign-in"
 ],
 "cannot_do": [
  {
   "what": "Send outbound payments",
   "why": "Needs a payment account GoCardless sets up during onboarding for the feature; the sandbox account has none (GET /outbound_payments 401)"
  },
  {
   "what": "Create an API token without the dashboard",
   "why": "No token endpoint; tokens and OAuth consent are browser-only"
  },
  {
   "what": "Close the account",
   "why": "Only through a support ticket whose form sits behind a Cloudflare interstitial"
  },
  {
   "what": "Confirm MCP subscription creation or mandate cancellation on its own",
   "why": "The MCP refuses a confirm that arrives within about a second of its preview"
  },
  {
   "what": "Install the CLI",
   "why": "Only on brew tap and GitHub releases, which robots.txt closes to our agent"
  }
 ],
 "blockers": [
  "Account closure only via a support form behind a Cloudflare interstitial",
  "Access tokens only from the dashboard",
  "Outbound payments need GoCardless to onboard the account"
 ],
 "tips_for_agents": [
  "Use the sandbox (manage-sandbox / api-sandbox.gocardless.com): free, no card, every core endpoint works.",
  "Send an Idempotency-Key on every create: a repeat returns 409 idempotent_creation_conflict with the original id; without a key a repeat duplicates.",
  "Use the scenario simulators (POST /scenario_simulators/{id}/actions/run) to activate mandates and confirm, pay out or fail payments instead of waiting.",
  "Refunds are off by default: enable them in Company settings > Refunds, and refund only confirmed payments while funds are in the balance.",
  "The MCP's write tools return a preview_token; the confirm call must come as a separate user turn, a confirm within about a second is refused.",
  "Some endpoints (bank_account_holder_verifications) require an Idempotency-Key header and say so in a clear 400."
 ],
 "selfhost": null,
 "summary": "An agent can open a free GoCardless sandbox account (form plus email code, no CAPTCHA), make a token in the dashboard and then run the core payment work without a browser over a clean, well-documented REST API: customers, mandates, one-off and EUR payments, checkout links, subscriptions and refunds, all three trials passing. Outbound payments need GoCardless to onboard the account, tokens and OAuth consent are browser-only, and closing the account is a support form that a Cloudflare check blocked.",
 "wall": "Account closure behind Cloudflare support form",
 "plan_scope": "free sandbox account (default Pro package, no card)",
 "robots_stop": null,
 "robots": {
  "rule": "star",
  "step": null,
  "seen": "2026-10-24",
  "held": false
 },
 "terms": null,
 "plain": {
  "summary": "GoCardless lets a software agent set up a free account by filling in a form and typing an emailed code, then create an access key by hand in the online dashboard. After that, it can do almost all the everyday payment work (customers, payments, refunds, subscriptions, checkout links) itself by calling the API directly. It stopped only at sending money out to someone else's bank account (GoCardless has to turn that on manually) and at closing the account, which is blocked by a security check on the support form.",
  "can_do": [
   "Open a free account and get an access key (with some manual dashboard steps)",
   "Create customers and save their bank details for Direct Debit",
   "Take one-off payments and recurring subscriptions, in pounds and euros",
   "Create a payment link a customer could click to pay",
   "Issue refunds once refunds are turned on",
   "Check balances, payouts, and set up test scenarios without waiting for real bank timing"
  ],
  "cannot_do": [
   {
    "what": "Send money out to someone else's bank account",
    "why": "GoCardless has to turn this feature on for the account first"
   },
   {
    "what": "Get an access key without using the website",
    "why": "Keys are only created by hand in the online dashboard"
   },
   {
    "what": "Close the account",
    "why": "A support form is protected by a security check that didn't let the agent through"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "Customise checkout branding",
   "plan": "GoCardless Embed",
   "evidence": "POST /branding/payer_themes -> 403; docs: \"This endpoint is restricted to GoCardless Embed customers\""
  },
  {
   "capability": "Export account data to a file",
   "plan": "GoCardless Embed",
   "evidence": "GET /exports -> 403; docs: restricted to GoCardless Embed customers"
  },
  {
   "capability": "Verify a bank account holder's identity",
   "plan": "Outbound Payments enabled",
   "evidence": "422 feature_disabled; docs: restricted to organisations with Outbound Payments enabled"
  },
  {
   "capability": "Success+ intelligent retries",
   "plan": "Success+ add-on",
   "evidence": "paid add-on; dashboard menu only"
  },
  {
   "capability": "Protect+",
   "plan": "Protect+ add-on",
   "evidence": "paid add-on per docs test-bank-details"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "capability": "Accept a one-off bank payment (Pay by Bank)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /payments",
    "mcp": "GoCardless MCP (create payment)",
    "cli": "gocardless create payment",
    "ui": "Payment Builder / hosted payment page"
   },
   "check": "GET /payments/{id} shows status confirmed/paid_out",
   "capability_id": "cap_aaqynfpf",
   "unmapped": null,
   "source": "https://gocardless.com/; https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-02",
   "capability": "Create a hosted checkout/billing request flow",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /billing_requests, POST /billing_request_flows",
    "mcp": "GoCardless MCP (create billing request)",
    "cli": null,
    "ui": "Customisable checkout / Payment Builder"
   },
   "check": "GET /billing_requests/{id} shows status fulfilled",
   "capability_id": "cap_3pzb6461",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/; https://gocardless.com/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-03",
   "capability": "Start a recurring subscription for a customer",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /subscriptions",
    "mcp": "GoCardless MCP (list/manage subscriptions)",
    "cli": null,
    "ui": "Dashboard subscriptions"
   },
   "check": "GET /subscriptions/{id} shows status active with upcoming_payments",
   "capability_id": "cap_jwqb98rz",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Automated recurring payments\"); https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-04",
   "capability": "Change, pause or cancel a subscription",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /subscriptions/{id}, POST /subscriptions/{id}/actions/cancel",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard: set up, pause, edit, schedule or cancel payments"
   },
   "check": "GET /subscriptions/{id} shows status cancelled or updated amount",
   "capability_id": "cap_sqfsx6h2",
   "unmapped": null,
   "source": "https://gocardless.com/pricing (\"Full payment management: Set up, pause, edit, schedule or cancel\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-05",
   "capability": "Create a customer",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /customers",
    "mcp": "GoCardless MCP (listing customers)",
    "cli": null,
    "ui": "Dashboard customers"
   },
   "check": "GET /customers/{id} returns the created record",
   "capability_id": "cap_fb0t855z",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-06",
   "capability": "Save a customer's bank payment method (mandate)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /mandates, POST /customer_bank_accounts",
    "mcp": "GoCardless MCP (cancel mandate)",
    "cli": "gocardless list mandates",
    "ui": "Flexible Direct Debit setup: online, paper, or phone"
   },
   "check": "GET /mandates/{id} shows status active",
   "capability_id": "cap_4ar7xk9e",
   "unmapped": null,
   "source": "https://gocardless.com/pricing (\"Flexible Direct Debit setup\"); https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-07",
   "capability": "Refund a payment",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /refunds",
    "mcp": "GoCardless MCP (issue refunds)",
    "cli": null,
    "ui": "Dashboard payment detail"
   },
   "check": "GET /refunds/{id} returns amount matching the refund; payment total_amount_confirmed reduced",
   "capability_id": "cap_ew004scw",
   "unmapped": null,
   "source": "https://docs.gocardless.com/docs/developer-resources/mcp.md; https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "browser"
  },
  {
   "id": "cap-08",
   "capability": "Send an outbound payment to a third party",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /outbound_payments",
    "mcp": null,
    "cli": null,
    "ui": "Outbound payments dashboard"
   },
   "check": "GET /outbound_payments/{id} shows status executed",
   "capability_id": "cap_1jfvpw42",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Outbound payments: Send payments to your customers, suppliers, or any third party in seconds\")",
   "result": "blocked",
   "via": "api"
  },
  {
   "id": "cap-09",
   "capability": "Collect payments across 30+ countries in multiple currencies",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /payments (currency field), GET /currency_exchange_rates",
    "mcp": null,
    "cli": null,
    "ui": "International payments: GBP/EUR/USD/AUD/NZD/CAD/SEK/DKK"
   },
   "check": "GET /payments/{id} shows the requested non-default currency",
   "capability_id": "cap_4fxjmw4g",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Collect from 30+ countries using the real mid-market exchange rate\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-10",
   "capability": "Pay out the collected balance to a bank account",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /payouts, GET /payout_items",
    "mcp": "GoCardless MCP (list payouts)",
    "cli": null,
    "ui": "Dashboard payouts"
   },
   "check": "GET /payouts/{id} shows status paid with arrival_date",
   "capability_id": "cap_r8zh8zgt",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-11",
   "capability": "Read the account balance",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /balances",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard balance"
   },
   "check": "GET /balances returns amount and currency",
   "capability_id": "cap_mgmpzty8",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-12",
   "capability": "List and search payments",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /payments",
    "mcp": "GoCardless MCP (\"Show me all confirmed payments from this month\")",
    "cli": "gocardless list payments",
    "ui": "Dashboard payments list"
   },
   "check": "GET /payments returns a paginated array filtered by status",
   "capability_id": "cap_8g3wgzg8",
   "unmapped": null,
   "source": "https://docs.gocardless.com/docs/developer-resources/mcp.md",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-13",
   "capability": "Recover failed payments with intelligent retries (Success+)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Success+ add-on dashboard"
   },
   "check": "Dashboard shows a failed payment retried and marked paid on a later date",
   "capability_id": "cap_xprvms25",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Success+ recovers up to 70% of failed payments by automatically retrying them\")",
   "result": "plan_gated",
   "via": "browser"
  },
  {
   "id": "cap-14",
   "capability": "Screen payments for fraud and challenge chargebacks (Protect+)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Protect+ add-on dashboard"
   },
   "check": "Dashboard fraud events chart reflects a blocked payer",
   "capability_id": "cap_q2dvg2nj",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Protect+ automatically blocks fraudulent payers and helps you challenge fraudulent chargebacks\")",
   "result": "plan_gated",
   "via": "browser"
  },
  {
   "id": "cap-15",
   "capability": "Apply for business financing (Pipe)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "\"Access capital With Pipe\" dashboard panel"
   },
   "check": "Pipe application state visible in dashboard capital panel",
   "capability_id": "cap_46n491rg",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Access capital: With Pipe\")",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-16",
   "capability": "Customise checkout branding",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /creditors (logo), POST /logos",
    "mcp": null,
    "cli": null,
    "ui": "Checkout branding settings"
   },
   "check": "Hosted payment page at pay.gocardless.com/preview shows uploaded logo/colours",
   "capability_id": "cap_91k54rav",
   "unmapped": null,
   "source": "https://gocardless.com/ (\"Customise your checkout branding, or build a fully custom solution using our API\")",
   "result": "plan_gated",
   "via": "api"
  },
  {
   "id": "cap-17",
   "capability": "Sync with accounting apps or build a custom integration",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "Full REST API (api.gocardless.com)",
    "mcp": "GoCardless MCP",
    "cli": "gocardless CLI",
    "ui": "350+ integrations directory (Xero, QuickBooks, Zuora)"
   },
   "check": "Connected integration (e.g. Xero) shows synced invoices/payments in both systems",
   "capability_id": "cap_x4n6bnwy",
   "unmapped": null,
   "source": "https://gocardless.com/pricing (\"350+ integrations: Easily sync with apps like Xero and QuickBooks, or build a custom integration with our API\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-18",
   "capability": "Register and receive webhooks for payment/mandate events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /webhooks, GET /events",
    "mcp": "GoCardless MCP (\"handle GoCardless webhooks in Node.js\")",
    "cli": "gocardless CLI (stream and forward webhooks)",
    "ui": "Developer settings webhooks"
   },
   "check": "GET /events lists the webhook delivery with resource_type and action matching the triggered event",
   "capability_id": "cap_977hxacb",
   "unmapped": null,
   "source": "https://docs.gocardless.com/docs/developer-resources/mcp.md; https://docs.gocardless.com/docs/developer-resources/gc-cli.md",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-19",
   "capability": "Trigger test scenarios and webhooks in a sandbox",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /scenario_simulators/{identity}/actions/run (sandbox)",
    "mcp": null,
    "cli": "gocardless CLI (\"trigger events to test your webhooks\")",
    "ui": "Sandbox dashboard scenario simulator"
   },
   "check": "Scenario Simulator run produces the expected event in GET /events on api-sandbox.gocardless.com",
   "capability_id": "cap_kmxgb7gj",
   "unmapped": null,
   "source": "https://docs.gocardless.com/docs/developer-resources/mcp.md (\"Scenario Simulators: Trigger sandbox scenarios\"); https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-20",
   "capability": "Complete end-to-end payments initiated and authorised by an AI agent (Agentic Payments)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "https://mcp.gocardless.com",
    "cli": null,
    "ui": "https://gocardless.com/checkout/agentic-commerce"
   },
   "check": "A payment created via the agent flow shows metadata/source indicating it was authorised by an AI agent",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://gocardless.com/checkout/agentic-commerce (\"Enable AI agents to discover, authorise, and execute payments autonomously\")",
   "result": "partial",
   "via": "mcp"
  },
  {
   "id": "cap-21",
   "capability": "Look up local bank account details before collecting a payment",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /bank_details_lookups",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "POST /bank_details_lookups returns available_debit_schemes for the submitted account/sort code",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://docs.gocardless.com/api-reference/ (\"Bank Details Lookup\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-22",
   "capability": "Verify a bank account holder's identity",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /bank_account_holder_verifications",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "GET /bank_account_holder_verifications/{id} returns a match result (full_match/partial_match/no_match)",
   "capability_id": "cap_q2dvg2nj",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"Bank Account Holder Verification\")",
   "result": "plan_gated",
   "via": "api"
  },
  {
   "id": "cap-23",
   "capability": "Import mandates or outbound payments in bulk",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /mandate_imports, POST /outbound_payment_imports",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "GET /mandate_imports/{id} shows status processed with created entry count",
   "capability_id": "cap_a8damn1w",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"Mandate Import\", \"Outbound Payment Import\")",
   "result": "failed",
   "via": "api"
  },
  {
   "id": "cap-24",
   "capability": "Set up an instalment schedule for a customer",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /instalment_schedules",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard: instalment payments"
   },
   "check": "GET /instalment_schedules/{id} shows status active with linked payments",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://gocardless.com/pricing (\"Collect one-off, subscription, membership, and instalment payments\"); https://docs.gocardless.com/api-reference/",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-25",
   "capability": "Export account data to a file",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /exports, GET /exports/{id}",
    "mcp": null,
    "cli": null,
    "ui": "Dashboard exports"
   },
   "check": "GET /exports/{id} shows status created with a download link",
   "capability_id": "cap_8zwmj5wn",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"Export\")",
   "result": "plan_gated",
   "via": "api"
  },
  {
   "id": "cap-26",
   "capability": "Block specific payers or bank accounts",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "POST /blocks",
    "mcp": null,
    "cli": null,
    "ui": "Protect+ settings"
   },
   "check": "GET /blocks/{id} shows active status for the blocked identifier",
   "capability_id": "cap_q2dvg2nj",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"Block\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-27",
   "capability": "Configure OAuth apps for partner integrations",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "OAuth Reference",
    "mcp": null,
    "cli": "gocardless login --app",
    "ui": "Partner app settings"
   },
   "check": "OAuth token exchange returns an access_token scoped to the connected merchant account",
   "capability_id": "cap_rw58zb2y",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"OAuth Reference\"); https://docs.gocardless.com/docs/developer-resources/gc-cli.md",
   "result": "not_tried",
   "via": null
  },
  {
   "id": "cap-28",
   "capability": "Set a tax rate applied to a payment",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "GET /tax_rates",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "GET /payments/{id} shows a linked tax_amount matching the configured tax_rate",
   "capability_id": "cap_zvbkqf0q",
   "unmapped": null,
   "source": "https://docs.gocardless.com/api-reference/ (\"Tax Rate\")",
   "result": "done",
   "via": "api"
  },
  {
   "id": "cap-29",
   "capability": "Generate a mandate PDF for a customer",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "POST /mandate_pdfs",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "Response includes a url to a downloadable PDF of the mandate",
   "capability_id": null,
   "unmapped": "own_feature",
   "source": "https://docs.gocardless.com/api-reference/ (\"Mandate PDF\")",
   "result": "done",
   "via": "api"
  }
 ],
 "stale": false,
 "unreachable_since": null,
 "not_driven_since": null,
 "icon": "/logos/gocardless.png",
 "agent_kinds": {
  "browser": {
   "who": "An assistant in a browser",
   "passed": [
    "signup",
    "verify",
    "first_action"
   ],
   "stop": "pay",
   "why": "ready to pay, payment not yet proven; stopped at the pay button",
   "tone": "warn",
   "text": "Signs up, confirms its email and does 89% of the core work. Payment: ready to pay, payment not yet proven; stopped at the pay button."
  },
  "direct": {
   "who": "An agent talking to it directly",
   "passed": [],
   "stop": "signup",
   "why": "it works only in a browser",
   "tone": "wall",
   "text": "Stops at sign-up: it works only in a browser."
  }
 },
 "stop_evidence": {
  "at": "delete",
  "date": "2026-10-21",
  "line": "Closing the account is a support ticket (Company settings > Close Account > Request Account Closure); the support form showed a Cloudflare interstitial that did not clear. No API or CLI route. All data was deleted over the API and every token and grant revoked; the login still works."
 },
 "stop_shot": null,
 "attempts_count": 186,
 "detail": {
  "public": false,
  "in": [
   "report",
   "api"
  ],
  "since": "2026-10-17"
 },
 "what_it_does": "GoCardless is a Direct Debit payments platform with a REST API, MCP server and CLI for collecting customer payments, mandates, subscriptions, refunds and payouts.",
 "rules_version": "rules-2026-10-20-24",
 "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-20-24",
 "category_median": null,
 "verdict": "Our agent got in on its own and ran the core payment work without a browser: L4 · Runs on its own. Signing up took a form and an emailed code, with no CAPTCHA, then a token made by hand in the dashboard. Pay stopped at \"Confirm downgrade\" on the plan page, never clicked, with no card form and no billing API. Through the API it created customers and mandates, took one-off and recurring payments, and issued checkout links and refunds. It ran the sandbox on the free plan, so there was nothing to cancel, and closing the account is a support form that a Cloudflare check never cleared.",
 "changes": {
  "source": "store",
  "drives": [
   {
    "run": "20261021T055731Z",
    "date": "2026-10-21",
    "level": 4,
    "stop": "delete",
    "entry": "self-start",
    "driver": 4,
    "listed": true
   },
   {
    "run": "20261024T014911Z",
    "date": "2026-10-24",
    "level": 3,
    "stop": "delete",
    "entry": "self-start",
    "driver": 4,
    "listed": true
   }
  ],
  "events": [
   {
    "property": "level",
    "before": 4,
    "after": 3,
    "cause": "drive",
    "before_run": "20261021T055731Z",
    "after_run": "20261024T014911Z",
    "at": "2026-10-24",
    "methodology": 24,
    "methodology_before": null,
    "rules_version": "rules-2026-10-20-24",
    "rules_url": "https://agentdrives.com/method/changelog#rules-2026-10-20-24"
   }
  ],
  "feed": "https://agentdrives.com/api/tools/gocardless/changes.json"
 },
 "agreement": null,
 "method_release": "2026-Q4.9",
 "rank": 1,
 "rank_of": 2,
 "rank_change": 0,
 "rank_since": "2026-10-24",
 "capability_matrix": [
  {
   "id": "cap-01",
   "name": "Accept a one-off bank payment (Pay by Bank)",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-02",
   "name": "Create a hosted checkout/billing request flow",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-03",
   "name": "Start a recurring subscription for a customer",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-04",
   "name": "Change, pause or cancel a subscription",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-05",
   "name": "Create a customer",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-06",
   "name": "Save a customer's bank payment method (mandate)",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-07",
   "name": "Refund a payment",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "untried",
    "mcp": "untried",
    "cli": "none",
    "ui": "done"
   }
  },
  {
   "id": "cap-08",
   "name": "Send an outbound payment to a third party",
   "core": true,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-09",
   "name": "Collect payments across 30+ countries in multiple currencies",
   "core": true,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-10",
   "name": "Pay out the collected balance to a bank account",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-11",
   "name": "Read the account balance",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-12",
   "name": "List and search payments",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-13",
   "name": "Recover failed payments with intelligent retries (Success+)",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "plan"
   }
  },
  {
   "id": "cap-14",
   "name": "Screen payments for fraud and challenge chargebacks (Protect+)",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "plan"
   }
  },
  {
   "id": "cap-15",
   "name": "Apply for business financing (Pipe)",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "none",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-16",
   "name": "Customise checkout branding",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "plan",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-17",
   "name": "Sync with accounting apps or build a custom integration",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-18",
   "name": "Register and receive webhooks for payment/mandate events",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "untried",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-19",
   "name": "Trigger test scenarios and webhooks in a sandbox",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-20",
   "name": "Complete end-to-end payments initiated and authorised by an AI agent (Agentic Payments)",
   "core": false,
   "result": "partial",
   "surfaces": {
    "api": "none",
    "mcp": "partial",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-21",
   "name": "Look up local bank account details before collecting a payment",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-22",
   "name": "Verify a bank account holder's identity",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "plan",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-23",
   "name": "Import mandates or outbound payments in bulk",
   "core": false,
   "result": "blocked",
   "surfaces": {
    "api": "blocked",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-24",
   "name": "Set up an instalment schedule for a customer",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-25",
   "name": "Export account data to a file",
   "core": false,
   "result": "plan",
   "surfaces": {
    "api": "plan",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-26",
   "name": "Block specific payers or bank accounts",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "untried"
   }
  },
  {
   "id": "cap-27",
   "name": "Configure OAuth apps for partner integrations",
   "core": false,
   "result": "untried",
   "surfaces": {
    "api": "untried",
    "mcp": "none",
    "cli": "untried",
    "ui": "untried"
   }
  },
  {
   "id": "cap-28",
   "name": "Set a tax rate applied to a payment",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  },
  {
   "id": "cap-29",
   "name": "Generate a mandate PDF for a customer",
   "core": false,
   "result": "done",
   "surfaces": {
    "api": "done",
    "mcp": "none",
    "cli": "none",
    "ui": "none"
   }
  }
 ],
 "category_place": {
  "category": "payments",
  "products": 5,
  "higher": 0,
  "same_level": 0,
  "as_of": "2026-10-21",
  "stop": "delete",
  "rivals_by": "stop",
  "rivals": [
   "stripe"
  ]
 },
 "page": "https://agentdrives.com/tools/gocardless?via=api"
}