Skip to main content
Connect to https://mcp.agentcard.sh/mcp with the user’s connection token (or a buy_token for org-owned accounts).

What it does

The one card tool: get the user a virtual debit card for a purchase. Cards are live and charged for real when used. For a FIRST-TIME user it starts by putting the user’s OWN card in their Agentcard vault (any Visa, Mastercard, Amex, or Discover from any country, no identity verification (KYC), no balance funding): the call returns a secure link (vault_started); send it to the user (they type the card once and lock it with Face ID; Agentcard never sees the number). A vaulted card pays through the buy tool, where the user approves each purchase with Face ID on their device; it never becomes a card number you type, so after vault_started (or vault_ready, when a card is already in the vault) use buy for purchases instead of calling create_card again. If the user specifically needs a card NUMBER, that is an Agentcard funded from their cash balance, which requires KYC the first time: only after the user agrees, call create_card with source “issued”. Established users: the saved default decides (get_settings default_payment: their chosen added card, or the wallet balance); with no saved default, an active ADDED card wins, otherwise the cash balance. Per-call overrides: connected_card_id issues against a specific added card, source “issued” forces the cash balance, restart_setup mints a fresh vault link. If the balance is short on the issued path, top up with add_funds. Connections through a company OAuth client have NO card count or amount limits; only first-party personal accounts have per-plan caps. Call get_plan for the limits in effect.

Inputs

Returns

Example call

A card with a currency rule says who enforces it. create_card with "preset": { "privileges": [{ "kind": "currency", "currencies": ["USD", "EUR"] }] } on a sandbox connection, captured from a local run; structuredContent.preset.agentcardOnly lists currency:

Example error

scope_preset: "ai_labs" with type: "single_use", captured from a local sandbox. isError is set and structuredContent.status carries the code:
A preset with a currency Agentcard cannot read answers the same way, with policy_invalid. create_card with "preset": { "privileges": [{ "kind": "currency", "currencies": ["ZZZ"] }] }, captured from a local run: