Give Your Agents Power to Purchase: Agentcard.sh Go-To Guide
ByManish ShahiSoftware Engineer • AI Developer
Table of contents(25)
I was sipping morning filter coffee and scrolling Product Hunt when agentcard.sh showed up. One look and I got flashbacks to a headache I fought last year.
I was building a procurement agent in Node.js. Find office supplies. Fill the cart. Check out alone. The model was great at shopping. The payment screen killed the whole flow.
That is the real problem: agents got good at everything before pay. Paying still needed a human — or a dangerous hack like pasting your real debit card into the agent.
Agentcard is built for that gap — give your agents power to purchase, without handing over the whole bank account. This is the practical guide I wish I had on day one.
The problem agentcard.sh solves
Picture the happy path people sell in demos:
- User: “Buy printer paper under $50.”
- Agent searches, compares, fills the cart.
- Agent… stops. Or asks you to paste a card. Or loops and double-charges.
Step 3 is where most “autonomous” agents die.
| Hack people try | Why it breaks |
|---|---|
| Hardcode your personal debit / credit card | Agent can drain the account; retries = duplicate charges |
| Share a corporate Brex / Ramp card | Onboarding is slow; limits are for humans, not tool loops |
| Stop and ping a human at checkout | Automation dies on the last step — the one that matters |
| Fake “pay later” / store credit | Does not work on normal web checkout |
What you actually need: a payment method the agent can mint in code, with a hard spend cap, that dies after one charge, so a retry cannot bill you twice.
That is what agentcard.sh ships: virtual Visa cards for AI agents, funded from a wallet, created over MCP / CLI / API.
In one line: Agentcard turns “pay” into a tool call, not a bank-account handoff.
What is Agentcard (and what is it not)?
From their own product framing:
- Network: Visa — virtual, card-not-present (online) only
- Lifecycle: single-use — card closes after the first approved charge; leftover money returns to the wallet
- Funding: you (or your user) fund a wallet; each card’s limit is taken from that balance
- Control: budgets, approvals, KYC, fraud checks
Two products on one platform (docs intro):
| Personal | Companies | |
|---|---|---|
| Problem it solves | My agent needs to buy something | My product’s users need their agents to buy |
| Package | agent-cards |
agent-cards-admin |
| Auth | Magic link → OAuth MCP | Per-user OAuth (“Connect with Agentcard”) |
| Start here | Personal quickstart | Companies + wizard |
When should you use Agentcard?
- Buy something online (API credits, domains, SaaS, data, licenses, delivery)
- Need a hard-capped virtual card for one task
- A human asked the agent to purchase something and it needs real credentials
- You are building a product whose agents purchase for end users (Companies)
When should you not use it?
- In-store / physical POS
- Recurring auto-renew billing (cards are single-use)
- Sending money to a person
- Merchants that force interactive 3DS / SMS OTP
How does the money flow work?
You fund wallet (Apple Pay / Google Pay) ↓Agent creates card for $X → $X reserved from wallet ↓Agent pays online with PAN / CVV / expiry ↓First charge succeeds → card closes ↓Unused amount returns to walletOne-time gates on first live use (agent will ask you):
- Phone verify before first wallet fund (stays fresh ~60 days)
- KYC (ID + short face scan) before first live card
Treat PAN/CVV like passwords — use them to fill checkout, never write them to logs, chats, or analytics.
Units gotcha (this bites everyone):
- Personal CLI uses dollars:
--amount 25= $25 - MCP tools use cents:
amount_cents: 2500= $25
If you copy 25 into MCP, you get a $0.25 card. Always convert.
Path A — Personal: give your agent a card
Best if you use Cursor, Claude Code, or Claude Desktop and want your own agent to finish checkout.
1. Sign up + fund
npm install -g agent-cardsagent-cards signupagent-cards wallet fund --amount 50 # DOLLARS — opens Apple Pay / Google Payagent-cards wallet # check balance2. Connect MCP (same URL everywhere)
Endpoint: https://mcp.agentcard.sh/mcp
Auth: OAuth — no API key in config. Sandbox vs live comes from the credential, not the URL.
Cursor / Windsurf (.cursor/mcp.json):
{ "mcpServers": { "agent-cards": { "url": "https://mcp.agentcard.sh/mcp" } }}Claude Desktop — same block in claude_desktop_config.json.
Claude Code:
agent-cards setup-mcp# orclaude mcp add --transport http agent-cards https://mcp.agentcard.sh/mcpRestart the agent. First tool call opens the browser sign-in.
3. Typical agent flow (copy this into your mental model)
- Agent calls
get_instructions fund_walletif balance is low (you pay in the browser)create_cardwithamount_cents(e.g.5000= $50)- Finish KYC if asked
get_card_detailsonly when filling a form (may needapprove_request)- Pay — or use conversational
buy/pay_checkout - Card auto-closes after first charge
Useful tools: create_card, get_card_details, check_balance, close_card, buy, approve_request, list_cards.
Try this prompt after MCP is connected:
Call get_instructions, then create a $20 Agentcard (2000 cents).Use buy to order something under that limit.Confirm the total with me before paying. Never log the full card number.CLI without an agent:
agent-cards cards create --amount 20agent-cards cards listagent-cards cards details <card_id>agent-cards cards close <card_id>Path B — Companies: card issuing for agent-first startups
This is the agentcard.sh product for platforms. Your users keep their own Agentcard. Your app never needs to store card numbers.
Problem it solves for startups: “Our agent can shop for the user, but we cannot take their real card into our servers — and we cannot stop at ‘please pay yourself’.”
Fastest path: the wizard (~5–20 min)
npx agent-cards-admin wizard --agent --yes --email you@company.com --app-url http://localhost:3000What you get:
- Sandbox only (no real money)
- Org + OAuth client; secrets written to
.env/.env.local(not shown to the AI) - Idiomatic code edits for Connect with Agentcard
- A real sandbox card as proof
- Dashboard link like
app.agentcard.sh/org/…
Edits stay uncommitted — review, then commit. Re-runs are safe.
Interactive:
npm install -g agent-cards-admincd /path/to/your/appagent-cards-admin wizardHow does your product call Agentcard?
Every request uses the user’s access token:
curl -X POST https://mcp.agentcard.sh/mcp \ -H "Authorization: Bearer <user_access_token>" \ -H "Accept: application/json, text/event-stream"Rules that keep you out of trouble:
- Register tools from
tools/listdynamically — do not hardcode forever approval_requiredmeans nothing moved yet — resolve withapprove_requestafter the human says yes- Your token only sees cards your app created for that user
- If KYC / funding is needed, tell the user; they finish it in their Agentcard account, then retry
Going live: subscribe → agent-cards-admin env production → create a separate production OAuth client. Keep sandbox for day-to-day.
Full Companies docs: docs.agentcard.sh/companies.
How do you create a card from code (when you are not on MCP)?
Prefer MCP + OAuth for agents. If you still need a raw create call (as on the marketing site):
curl -X POST https://api.agentcard.sh/api/v1/cards \ -H "Authorization: Bearer $AGENTCARD_API_KEY" \ -H "Content-Type: application/json" \ -d '{"amountCents": 5000}'Slim TypeScript sketch:
async function provisionAgentCard(amountCents: number) { const response = await fetch("https://api.agentcard.sh/api/v1/cards", { method: "POST", headers: { Authorization: `Bearer ${process.env.AGENTCARD_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ amountCents }), });
if (!response.ok) { throw new Error(`Card create failed: ${response.status}`); }
// Keep PAN/CVV in memory for checkout only — never log them. return response.json();}
await provisionAgentCard(4500); // $45.00Why is this design safer than “just give the agent a card”?
| Guardrail | What it means in practice |
|---|---|
| Fixed limit | Card cannot spend more than you set |
| Single-use | Retry after success hits a dead card |
| Wallet | Money is staged; unused returns after close |
| Approvals | Big or sensitive actions wait for a human |
| Isolation (Companies) | App A cannot see App B’s cards for the same user |
| Fraud controls | Unusual patterns can be blocked (see product on agentcard.sh) |
Still start small: $10–$20 cards, approvals on, secrets out of logs.
Useful things to do with Agentcard this week
1. Delivery under a hard budget
Get me sushi for less than $40 from my usual place.Use Agentcard buy. Confirm total before checkout.2. Finish the procurement agent (the one that used to break)
Order 5 packs of A4 paper.Create a one-time Agentcard capped at cart total + 10%.Ask me to approve if it crosses my limit.3. Weekly groceries
Restock milk, eggs, bread. Budget $60.Use my default address. Ask before paying.4. Messaging product (“text me toilet paper”)
Companies examples (Twilio, chat SDKs, iMessage bridges): user texts a buy request → agent collects details → Agentcard pays → confirmation stays in the same chat. That is the product story agentcard.sh is selling to agent-first startups.
5. Browser agent without wasting tokens on forms
Create a capped card → Chrome extension / fill_card / pay_checkout → agent skips fighting checkout DOM.
6. Solo founder SaaS checkout
Buy the cheapest monthly plan that unlocks API access.Cap the card at $30. Close after success.Plans (Personal)
| Plan | Price | Cards / month | Max per card |
|---|---|---|---|
| Free | $0 | 5 | $50 |
| Basic | $15 / mo | 15 | $500 |
| Pro | $100 / mo | 50 | $1,000 |
Check live limits with agent-cards plan. Companies billing is separate — see agentcard.sh or schedule a call.
Checklist
If you are a person with an agent
-
agent-cards signup - Fund wallet
- Connect
https://mcp.agentcard.sh/mcp -
get_instructions→ small card → one real buy - Remember: MCP = cents, CLI = dollars
If you are building a product
- Run
agent-cards-admin wizardin sandbox - Review the uncommitted diff
- Prove a sandbox card
- Subscribe + separate production OAuth client before live money
Always
- Tiny limits first
- Never log PAN / CVV
- Read docs.agentcard.sh
Final thought
The agent economy was missing boring plumbing: a safe way to pay.
agentcard.sh does one job well — issue a capped virtual Visa your agent can use today, then throw the card away. Personal for your own agent. Companies for startups that need “Connect with Agentcard” inside the product.
I am dusting off that old procurement script this weekend. If you are shipping an agent-first app, start with the wizard. If you just want dinner ordered by Claude, connect MCP and try a $20 card first.
More links I keep open:
- Product: agentcard.sh
- Docs: docs.agentcard.sh
- Dashboard: app.agentcard.sh
- Launch page: Product Hunt — Agentcard
Pinch or double-tap to zoom · tap outside to close
FAQ
Frequently asked questions
What problem does Agentcard solve?
Agents can find products and fill carts, but checkout needs a real card. Agentcard gives the agent a capped, single-use virtual Visa so it can pay without access to your full bank account.
What is Agentcard?
Agentcard (agentcard.sh) issues virtual Visa cards for AI agents. Cards are funded from a wallet, have a fixed spend limit, work online wherever Visa is accepted, and close after the first charge.
Personal vs Companies — which do I need?
Personal is for giving your own agent a card (CLI agent-cards + MCP). Companies is for products that let users Connect with Agentcard so your agent issues cards and buys on their behalf (agent-cards-admin + wizard).
Is it safe to let an agent pay?
Each card has a hard limit and is usually single-use. Unspent money returns to the wallet. Sensitive steps can require human approval. Never log the full card number or CVV.
How do I start on agentcard.sh?
For yourself — sign up with agent-cards, fund the wallet, connect https://mcp.agentcard.sh/mcp. For a product — run the agent-cards-admin wizard in sandbox, then go live with a subscription.
When should I not use Agentcard?
Skip it for in-store payments, auto-renewing subscriptions, sending money to people, or merchants that need interactive 3DS or SMS OTP.
Research this topic further
- Click a tool below (ChatGPT, Perplexity, Claude, or Gemini).
- We copy the full article + companion guide prompt to your clipboard.
- A new chat tab opens — if the message box is empty or only shows a short note, press Ctrl+V (Windows/Linux) or Cmd+V (Mac) to paste.
- Send the message. The model already has the article text — it does not need to open this website.
Related posts
Comments
Share a thought on this post — keep it useful and kind. Comments are moderated before they appear.
Loading comments…