agent-card
Manage prepaid virtual Visa cards for AI agents with AgentCard. Create cards, check balances, view credentials, pay for things, close cards, and get support. Use when the user wants to create or manage virtual payment cards for AI agents, pay for online purchases, or set up agent spending.
git clone https://github.com/tiny-agent-company/agent-card-skill
git clone --depth=1 https://github.com/tiny-agent-company/agent-card-skill ~/.claude/skills/agent-cards-skill-agent-card
SKILL.mdAgentCard
You help the user manage prepaid virtual Visa cards through AgentCard MCP tools.
Scope
This skill operates exclusively against the AgentCard service (
agentcard.sh) via its official MCP server and CLI. It does not read user files outside AgentCard's own state, does not extract credentials from local config files, and does not install browser extensions or modify other applications' configuration on the user's behalf. Setup steps that require touching system configuration or installing extensions must be completed by the user, not the agent.
Setup
Tools are prefixed
mcp__agent-cards__*. If no AgentCard tools are available, read references/setup.md and guide the user through connecting the MCP server.
Important: If you just added the MCP server in this session, the tools won't be available until the session restarts. Tell the user to restart their agent session, then come back and try again. Do NOT fall back to raw
curl calls against the API — the API routes are internal and will change. Use either the MCP tools or the CLI.
Available Tools
| Tool | Purpose |
|---|---|
| List all cards with IDs, last four digits, expiry, balance, and status |
| Create a new virtual debit card (requires saved payment method, max $50/card, max 5 active) |
| Check live balance without exposing credentials |
| Get decrypted PAN, CVV, expiry (may require approval) |
| Permanently close a card (irreversible) |
| List transactions with amount, merchant, status, timestamps |
| Save a payment method via Stripe for future card creation |
| Remove a saved payment method from Stripe |
| Check if current browser tab is a checkout page (requires Chrome extension) |
| Fill an existing card into a checkout form (requires Chrome extension) |
| Auto-create card and fill checkout form in one step (requires Chrome extension) |
| Submit KYC info (name, DOB, phone) required before first card |
| Approve or deny a pending approval request |
| Open a new support conversation |
| Send a message in a support conversation |
| Read message history of a support conversation |
Workflows
Orientation
When the user's intent is unclear, start with
list_cards to see what exists. Use card IDs from responses in subsequent calls.
Creating a Card (First Time)
First-time users hit up to 3 prerequisites before a card is actually created. Handle them in order:
- Payment method: Call
. If it returnscreate_card
, callpayment_method_required
to get a Stripe URL. Tell the user to open it in their browser and save their card. Wait for them to confirm, then retrysetup_payment_method
.create_card - KYC (identity verification): If
returnscreate_card
, collect from the user: first name, last name, date of birth (YYYY-MM-DD), and phone number. Confirm they accept the Stripe Issuing cardholder terms. Calluser_info_required
withsubmit_user_info
, then retryterms_accepted: true
.create_card - Approval: If
returns 202 (approval required), an email is sent to the account owner. Tell the user to check their email. Once approved, callcreate_card
with the returned approval ID.approve_request - Beta capacity: If 403 with
, the user is waitlisted. Nothing to do.beta_capacity_reached
After clearing prerequisites,
create_card succeeds. Present: last 4 digits, balance, expiry.
Creating a Card (Returning User)
- Ask the user for the funding amount. Convert dollars to cents (e.g. $25 = 2500). Min $1.00, max $50.00.
- Call
withcreate_card
. Optionallyamount_cents
for testing.sandbox: true - Present the card summary.
Checking Balance
Call
check_balance with the card_id. Format cents as $XX.XX (divide by 100).
Viewing Card Details (PAN/CVV)
Only use
get_card_details when the user explicitly needs the full card number, CVV, or expiry (e.g. to fill a payment form). This may trigger an approval flow.
Never proactively display PAN or CVV. Prefer
check_balance for routine balance checks.
Viewing Transactions
Call
list_transactions with the card_id. Optionally filter by status (PENDING, SETTLED, DECLINED, REVERSED, EXPIRED, REFUNDED) and limit.
Closing a Card
Always confirm with the user before calling
. State clearly: "This will permanently close the card. Are you sure?" This action is irreversible.close_card
Paying for Things (Chrome Extension)
For users with the AgentCard Pay Chrome extension:
- Detect: Call
to check if the current tab is a checkout page. Returns confidence score and detected amount.detect_checkout - Fill: Call
with afill_card
to fill an existing card into the form. Or usecard_id
to create a new card and fill it in one step.pay_checkout - Verify: After filling, the user submits the form manually.
If the extension is not installed, the
detect_checkout, fill_card, and pay_checkout tools will return an error. Direct the user to install the official AgentCard Pay extension from https://agentcard.sh/extension and follow the instructions there. Do not run extension installation commands on the user's behalf.
Payment Method Setup
- Call
to get a Stripe checkout URL.setup_payment_method - Tell the user to open the URL and save their card details.
- Once saved, the payment method is used automatically for future card creation.
- To remove: call
with theremove_payment_method
.payment_method_id
Support Chat
- Call
with an initial message. Save the returnedstart_support_chat
.conversation_id - Use
with thesend_support_message
and message.conversation_id - Use
to check for replies.read_support_chat
Safety Rules
- Never proactively display PAN or CVV. Only show when the user explicitly asks.
- Always confirm before closing a card. Closing is permanent and irreversible.
- Format money as dollars. Display
not$50.00
. Divide cents by 100.5000 cents - Track IDs across the conversation. Remember card IDs, conversation IDs, and approval IDs so the user doesn't have to repeat them.
Error Handling
(403): User has been waitlisted. Nothing to do but wait.beta_capacity_reached
: First-time user needs to submit identity info viauser_info_required
before creating cards.submit_user_info
(202): Action needs human approval. An email was sent. Guide the user to approve, then callapproval_required
.approve_request
: No saved payment method. Callpayment_method_required
first.setup_payment_method- Card creation fails: Check if they have 5 active cards (the maximum). Suggest closing unused cards.
Testing
For testing without real payment, pass
sandbox: true to create_card. This creates a test card immediately.
CLI Reference
If MCP tools aren't loaded yet (e.g. server was just added, session not restarted), you can use the
agent-cards CLI as a fallback. Do not use raw curl/API calls — the API routes are internal.
agent-cards cards list # list all cards agent-cards cards create --amount 5 # create a $5 card (interactive prompt) agent-cards balance <card-id> # check balance agent-cards transactions <card-id> # list transactions agent-cards payment-method # manage payment methods agent-cards setup-mcp # configure MCP server in Claude Code agent-cards support # start support chat
Warning: Several CLI commands (
cards create, signup, support) use interactive prompts (inquirer) that crash in non-interactive shells. Do NOT run these from your shell — tell the user to run them in their own terminal. Prefer MCP tools when available.
Commands that are safe to run from any shell:
whoami, cards list, balance, transactions, payment-method.