Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@visa/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@visa/cli
AI-powered payments over MCP. Exposes Visa card payment tools as MCP (Model Context Protocol) tools so your AI assistant can pay for image generation, video, music, onchain data queries, and more — charged to a Visa card with authentication confirmation at the point of invocation.
Platform support
| Platform | Credential Storage | Payment Auth | Install |
|---|---|---|---|
| macOS | Keychain | Touch ID / Secure Enclave | bash <(curl -fsSL ...) or npm i -g @visa/cli |
| Windows | ACL-restricted file | Server-verified (restricted limits) | npm i -g @visa/cli or `iwr -useb https://visacli.sh/install.ps1 |
| Linux | libsecret (GNOME Keyring / KDE Wallet) | Server-verified (restricted limits) | bash <(curl -fsSL ...) or npm i -g @visa/cli |
Install
npm install -g @visa/cliMCP setup
Add to your MCP client config:
{
"mcpServers": {
"visa": {
"command": "visa-cli",
"args": ["mcp"]
}
}
}Once connected, your assistant will have access to all payment tools. The first time you use a paid tool, you'll be prompted to log in and enroll a card.
CLI commands
visa-cli login # GitHub OAuth — opens browser, stores session token
visa-cli add-card # Enroll a Visa card via VGS secure form
visa-cli status # Show auth state, enrolled cards, daily spend remaining
visa-cli api-key create my-demo-app
# Create an API key for an app or agent
visa-cli history # Recent transactions with amounts and any generated media URLs
visa-cli hud enable # Explicitly pin the Visa HUD below Claude Code input
visa-cli hud disable # Remove the Visa HUD from Claude Code
visa-cli statusline # Render the multi-line HUD Claude Code calls automatically
visa-cli mcp # Start the MCP serverAuthentication
Login is GitHub OAuth. Your session token is stored at ~/.visa-mcp/session-token.
visa-cli login # opens github.com/login/oauth/authorize in your browser
visa-cli status # verify you're logged inCard enrollment
Cards are tokenized via VGS — your raw card number never touches Visa servers. add_card opens a hosted VGS Collect form in your browser.
visa-cli add-cardMultiple cards can be enrolled. The first becomes the default; you can switch defaults with set_default_card from within your assistant. To remove a card: remove_card (requires authentication).
Payments & Authentication
Every paid tool call requires authentication. On macOS, this is Touch ID (or device password); on Windows and Linux, payments are server-verified with restricted spending limits. Your assistant will show you the amount and merchant before prompting. If you cancel, the payment is aborted — nothing is charged.
You can set hard limits via the update_spending_controls tool, or check your current limits any time:
visa-cli statusAPI keys for apps and agents
Approved users can create API keys from the CLI with their existing login:
visa-cli api-key create my-demo-app --tools generate_image_card,run_llm --daily-cap 5
visa-cli api-key list
visa-cli api-key revoke 1The create command prints the raw vk_... key once. Store it in your app or agent secret store and send it as X-Api-Key to /v1/api/shortcuts/:tool.
MCP tools
Account
| Tool | Description |
|---|---|
login |
GitHub OAuth login — opens browser |
add_card |
Enroll a card via VGS tokenization |
get_cards |
List enrolled cards (masked) |
remove_card |
Remove an enrolled card (authentication required) |
set_default_card |
Change the default card (authentication required) |
get_status |
Auth, card, spend limits, and budget summary |
update_spending_controls |
Set daily and per-transaction limits (authentication required) |
transaction_history |
Recent transactions with amounts and media URLs |
feedback |
Submit feedback on a tool result |
reset |
Clear auth state and credentials |
Generation
| Tool | Price | Description |
|---|---|---|
generate_image_card |
~$0.06 | FLUX1.1 Ultra — 2K resolution, ~30s |
generate_image_fast_card |
~$0.04 | FLUX1.1 Pro — 1K resolution, ~10s |
generate_video |
$0.10–$0.30 | Text-to-video (Wan / MiniMax / Kling) |
generate_music_tempo_card |
~$0.10 | Suno AI music generation, ~2 min |
check_music_status_tempo_card |
~$0.01 | Poll Suno task for audio URL |
generate_audio |
~$0.03–$0.04 | TTS (MetaVoice) or SFX (Stable Audio) |
generate_3d |
~$0.08 | Text-to-3D mesh (Trellis), returns GLB URL |
upscale_image |
~$0.03 | Image upscaling (Aura SR) |
transcribe_audio |
~$0.02 | Speech-to-text (Whisper) |
Data
| Tool | Price | Description |
|---|---|---|
query_onchain_prices_card |
~$0.02 | Real-time or historical token prices (150+ chains via Allium) |
allium_explorer_card |
~$0.10 | Natural language → SQL blockchain query (step 1) |
allium_explorer_results_card |
up to $3.00 | Fetch results for a submitted query (step 2) |
run_llm |
$0.01–$0.09 | Run a prompt through GPT-4o Mini, Claude, DeepSeek, Perplexity, or Llama |
Utility
| Tool | Description |
|---|---|
pay |
Generic HTTP 402 payment endpoint |
batch |
Execute multiple paid tools in one authentication approval |
discover_tools |
Search the dynamic tool catalog |
execute_tool |
Run a tool from the dynamic catalog by ID |
Dynamic catalog
The tool catalog is fetched live from the auth server at startup (5-minute TTL). If the server is unreachable, it falls back to the compiled-in baseline from @visa/tools.
To see all available tools with current pricing, ask your assistant:
"What tools do you have available?"
Spending controls
Daily limit — hard cap on total spend per day
Max per-transaction — hard cap per single tool callBoth limits are enforced server-side. Authentication is always required per payment regardless of limits — this cannot be disabled. On macOS this means Touch ID; on other platforms, server-side verification with restricted spending limits applies.
Config & data locations
| Path | Contents |
|---|---|
~/.visa-mcp/session-token |
Session token |
~/.visa-mcp/catalog-cache.json |
Cached tool catalog (24h TTL) |
~/.visa-mcp/allium-results/ |
Large query result CSVs |
Troubleshooting
Touch ID prompt doesn't appear (macOS)
Make sure visa-cli mcp is running as a foreground process that has access to the macOS security framework. Running inside some sandboxed environments may prevent Touch ID. On Windows and Linux, biometric prompts are not used — payments are server-verified.
"Not logged in" after visa-cli login
Restart the MCP server after logging in — your MCP client needs to reconnect to pick up the new session.
Card not showing in get_cards
Enrollment is only confirmed after you complete the VGS form in the browser. Call get_cards after finishing the form to verify.
Tool returns an error about daily limit
Check your remaining budget with visa-cli status or ask your assistant: "What's my remaining budget today?"
Catalog shows stale tools
Delete ~/.visa-mcp/catalog-cache.json and restart the MCP server to force a fresh fetch.
Monorepo context
Request routing (MCP vs MPP vs Studio): docs/agents/ARCHITECTURE.md. Branches and deploy: docs/agents/PIPELINE.md. Contributor workflow: AGENTS.md, doc index: docs/agents/README.md.