@curless/agentbank-mcp
v0.6.2
Published
MCP server for agentbank — let your AI agent discover Curless merchants and pay them.
Readme
@curless/agentbank-mcp
MCP server for agentbank — Curless's gateway for AI-agent payments. Lets your local AI agent (Claude Desktop, Cursor, etc.) discover Curless merchants and pay them through agent payment protocols.
Install
npx @curless/agentbank-mcpClaude Desktop config
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"agentbank": {
"command": "npx",
"args": ["-y", "@curless/agentbank-mcp"],
"env": {
"AGENTBANK_API_URL": "https://api.agentbank.example",
"AGENTBANK_AGENT_TOKEN": "agt_..."
}
}
}
}Tools
Merchant discovery
list_merchants— list merchants, optionally by categoryget_merchant— full merchant infoget_merchant_catalog— items + prices for a merchantget_agent_card— A2A / ACP compatible agent cardinvoke_skill— call a skill (search_availability,book_room,order_item, …)
ACP checkout (the buyer's main path — discovers, orders, and pays in one go)
acp_checkout⚠️ — open an ACP checkout session for a merchant + items and complete it with a card token (Stripe Shared Payment Token; sandbox defaultpm_card_visa). Real money on capture.
PaymentIntents (the rail-agnostic money primitive — capture moves real money ⚠️)
create_payment_intent— create a PI; passidempotencyKeyfor safe retriesget_payment_intent/list_payment_intents— status + historycapture_payment_intent⚠️ — charge the rail and book the ledger
Payment Links (shareable, Stripe Payment Links)
create_payment_link— a shareableurlfor a merchant + fixed amountget_payment_link— view a link before payingpay_payment_link⚠️ — pay a shared link (mints a PI)
Wallet & paywalls (this agent's own budget)
get_my_balance— this agent's wallet budget (available / held)top_up— get a hosted top-up link to fund this agent's walletpay_payment_gate⚠️ — pay apayment_requiredgate from a paywalled MCP tool (drives the MPP two-step charge), so the gated tool runs
Buyer wallet (the PERSON's own money — a shopper, not a merchant)
wallet_login— sign in with the buyer's email, for this session. Required before any otherwallet_*tool. Demo sign-in: it does not verify the address, so it works in test mode only — a live deployment refuses it.wallet_me— profile, spend limits, spent-today / spent-this-month, and whether a card is boundwallet_balance— the buyer's own balance per currencywallet_orders— what this buyer has boughtwallet_set_limits— the buyer caps their own spending. No merchant admin scope involved: before this existed the only way to change a spend policy wasupdate_agent, which needsagentbank:admin.wallet_cards— which cards are bound. Anunavailablefield means the list could not be read: that is unknown, not "no cards bound".wallet_bind_card— bind a card so the wallet can pay with it again. Takes a Stripe reference (pm_…/tok_…) only. Never send a card number, expiry or CVC — those are tokenized in the buyer's browser and are refused by the API. Test mode only; use Stripe'spm_card_visa.wallet_unbind_card— forget a bound card (detach, not delete)wallet_pay_credential— turn the bound card into a one-off credential (a Stripe shared payment token) for one merchant, one amount, 15 minutes, then hand it to that merchant's checkout. The buyer's own spend limits are checked here — this is the only place they bind, and a refusal is their own limit, not a payment failure.
These use a session obtained at runtime, not AGENTBANK_AGENT_TOKEN. The
agent token is configuration set by whoever installed the connector; the wallet
session is the person signing in, and it expires. When it does, the tools say
so — "your session expired" is never rendered as an empty balance or an empty
order list.
Resources (read-only / admin)
get_wallet_balances— admin/treasury only: the org's Curless balances (fiat + crypto). A plainagent:executetoken gets 403 here — useget_my_balancefor the agent's own budget.list_agents/get_agent/update_agent— your spending entitieslist_customers/get_customer/update_customer— end users / payers
What you can actually do is gated by the scope of the AGENTBANK_AGENT_TOKEN
you set — give it agent:execute for buyer flows, agentbank:admin to
manage agents/customers.
Local dev
export AGENTBANK_API_URL=http://localhost:3000
pnpm dev