Skip to main content
Glama
CardOS MCP Server

CardOS MCP Server

Official
by CMSCardOS

CardOS MCP Server

Issue and manage virtual cards from any AI assistant — over the Model Context Protocol.

CI npm MCP License: MIT Node

cardos-mcp connects CardOS to Claude, Cursor, Windsurf, VS Code and any MCP client. Point your assistant at it and ask, in plain language, to check a balance, issue a card, pull transactions, file a dispute, or start KYC.

It's a thin, safe client over the public CardOS REST API: no provider internals, no secrets in the repo, money operations are idempotent, card details stay masked, and a cms_sk_test_… key runs in sandbox (no real money).


Quick start

  1. Get an API key → cardos.dev/partner/developers (a cms_sk_test_… key = sandbox).

  2. Run it — published to npm:

CARDOS_API_KEY=cms_sk_test_xxx npx -y cardos-mcp

…or straight from source:

git clone https://github.com/CMSCardOS/cardos-mcp && cd cardos-mcp
npm install && npm run build
CARDOS_API_KEY=cms_sk_test_xxx node dist/index.js

Related MCP server: ASG Card

Add to your client

Drop this into your client config (env holds your key — see examples/ for Claude Desktop, Cursor, Windsurf and VS Code):

{
  "mcpServers": {
    "cardos": {
      "command": "npx",
      "args": ["-y", "cardos-mcp"],
      "env": { "CARDOS_API_KEY": "cms_sk_test_xxx" }
    }
  }
}

Client

Config file

Claude Desktop

claude_desktop_config.json (Settings → Developer → Edit Config)

Cursor

~/.cursor/mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json

VS Code

.vscode/mcp.json (use the examples/vscode.json shape)

Tools (26)

Tool

Description

list_products

Card products: code, currency, limits, KYC requirement

get_merchant_rates

Per-merchant pricing

get_balance

End-user available balance

Tool

Description

issue_card 💳

Issue a virtual card (idempotent; sandbox with a test key)

get_card

Masked details (last4, expiry, status)

freeze_card / unfreeze_card / close_card

Lifecycle (idempotent)

set_card_pin

Set a 4-digit PIN (not stored by CardOS)

set_card_controls

Spend limits + blocked MCC/countries (auto-freeze on breach)

reveal_card

One-time hosted PAN/CVV link (PCI on CardOS)

create_card_session

Hosted manage + transactions screens for the end user

list_card_transactions

Transactions (amount, FX, commission, merchant, MCC, decline)

Tool

Description

create_deposit 💳

Crypto deposit invoice (idempotent)

confirm_deposit_sandbox

[sandbox] confirm a pending deposit

simulate_transaction_sandbox

[sandbox] inject a test transaction

Tool

Description

get_statement

Statement (spent/received/fees + lines)

get_spending_analytics

Spending by category

file_dispute / list_disputes / get_dispute / update_dispute

Disputes

start_kyc / get_kyc_status

Hosted KYC flow

register_webhook / list_webhooks

Signed outbound events

Resources & prompts

  • Resources — cardos://docs (auth/idempotency/webhooks orientation) and cardos://openapi (the live OpenAPI 3 spec). Clients can read these for context.

  • Prompts — issue_card_for_user (guided end-to-end issuance) and integrate_cardos (integration walkthrough).

Example prompts

  • "What card products are available?" → list_products

  • "Issue a sandbox card for user 123456, then show its details." → issue_card → get_card

  • "Top up user 123456 with $100 and confirm it." → create_deposit → confirm_deposit_sandbox

  • "Freeze card <id> and set a $50 daily limit." → freeze_card → set_card_controls

Safety

  • Sandbox-first — a cms_sk_test_… key never moves real money.

  • No secrets in the repo — the key lives in your client config / env.

  • Idempotent money ops — issue_card / create_deposit won't double-apply on retry.

  • Masked card data — full PAN/CVV only via a one-time hosted link, never through this server or the model.

  • See SECURITY.md.

Configuration

Env var

Default

Description

CARDOS_API_KEY

—

Your CardOS API key (required).

CARDOS_BASE_URL

https://cardos.dev/api/v1

Override the API base.

Develop

npm install
npm run build        # tsc → dist/
npm test             # vitest (network mocked)
npm run typecheck

See CONTRIBUTING.md.

License

MIT

Available Tools

26 tools
close_cardA

Close a card permanently (irreversible). Idempotent.

Inputs: card_id (required).

confirm_deposit_sandboxA

[SANDBOX] Simulate confirmation of a pending deposit (test key only). In live, an on-chain watcher credits it.

Inputs: deposit_id (required).

create_card_sessionA

Mint hosted card screens (manage + transactions) on real data, to open in a webview for the end user — bypassing you. Returns manage_url / transactions_url.

Inputs: card_id (required).

create_depositC

Create a crypto deposit invoice to top up an end-user balance. Money operation — sandbox with a test key. Idempotent.

Inputs: amount (required), external_user_ref (required), method.

file_disputeC

Open a dispute on a transaction.

Inputs: reason (required), transaction_id (required), note.

freeze_cardB

Freeze a card (reversible). Idempotent.

Inputs: card_id (required).

get_balanceA

Get an end user's available balance.

Inputs: external_user_ref (required).

get_cardA

Masked card details (last4, expiry, status). Raw PAN/CVV are never returned here — use reveal_card.

Inputs: card_id (required).

get_disputeC

Get one dispute by id.

Inputs: dispute_id (required).

get_kyc_statusC

Status of a KYC session by uuid.

Inputs: uuid (required).

get_merchant_ratesA

Per-merchant pricing for products (e.g. for github, google).

Inputs: merchant (required).

get_spending_analyticsC

Spending breakdown by category (from MCC) for an end user.

Inputs: external_user_ref (required), days.

get_statementA

An end user's statement (summary: spent/received/fees/holds + line items + balance).

Inputs: external_user_ref (required), days.

issue_cardA

💳 Issue a virtual card to an end user. Money operation — a test key runs in sandbox (no real money). Idempotent: retries do not double-issue.

Inputs: external_user_ref (required), product.

list_card_transactionsA

List transactions for a card (amount, currency, commission, FX original amount/currency, merchant, MCC, decline reason, status).

Inputs: card_id (required), limit.

list_disputesC

List disputes, optionally filtered by user or status.

Inputs: limit, status, external_user_ref.

list_productsA

List available card products: productCode, currency, issue/topup limits, and whether KYC is required.

Inputs: no named parameters.

list_webhooksA

List registered webhook endpoints (no secrets).

Inputs: no named parameters.

register_webhookA

Register an HTTPS endpoint for outbound events (transaction, balance, issued, card_status, kyc). Returns the signing secret once.

Inputs: url (required), events.

reveal_cardA

Mint a one-time hosted link that shows full card details (PAN/CVV) to the end user, bypassing you (PCI on CardOS). Short-lived, single-use.

Inputs: card_id (required).

set_card_controlsA

Set soft spend controls (per-transaction / daily / monthly limits, blocked MCC/countries). On breach the card is auto-frozen + an alert is sent (no hard auth-time block).

Inputs: card_id (required), blocked_mcc, blocked_country, daily_max_minor, +2 more.

set_card_pinA

Set a 4-digit PIN. The PIN is not stored by CardOS.

Inputs: pin (required), card_id (required).

simulate_transaction_sandboxA

[SANDBOX] Inject a test card transaction (test key only) to exercise webhooks, analytics, controls and cashback.

Inputs: amount (required), card_id (required), mcc, type, +2 more.

start_kycA

Start KYC for an end user. Returns a hosted url_for_user and a uuid to poll.

Inputs: external_user_ref (required), sort.

unfreeze_cardA

Unfreeze a frozen card. Idempotent.

Inputs: card_id (required).

update_disputeC

Update a dispute (status / note / provider reference).

Inputs: dispute_id (required), note, status, provider_ref.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 26 tools

    Disambiguation5/5

    Each tool targets a distinct operation on a specific resource (e.g., card, deposit, dispute, KYC, webhook). No two tools have overlapping purposes; descriptions clearly differentiate them.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern using snake_case. The naming convention is uniform across the entire set, making it predictable and easy to navigate.

    Tool Count4/5

    With 26 tools, the count is slightly above the typical 3-15 range, but the breadth of card operations (issuing, management, disputes, KYC, webhooks) justifies the number. It is still reasonable and not overly bloated.

    Completeness5/5

    The tool surface covers the full lifecycle of card management, deposits, disputes, KYC, webhooks, and analytics. Essential CRUD operations are present, and sandbox tools support testing. Missing operations are minor and non-critical.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • -
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to manage and use prepaid virtual Visa cards with hard budget limits for secure online transactions. It provides tools for creating cards, checking balances, and retrieving payment credentials with human-in-the-loop approvals.
      1
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to perform Nigerian banking operations including account management, payments, and identity verification through the Mono Open Banking API.
      59
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      AI-native payment infrastructure that enables AI agents to make purchases, issue virtual cards, and manage spending within delegated budgets and policy controls.
      7
      1,449 npm
      MIT