Desktop guide · AI agents

AI agents (MCP)

Give an AI agent on your computer, such as Claude Code, Claude Desktop or Cursor, its own wallet. It can check the balance, pay your contacts, ask to be paid and follow those payments, inside limits that SpiffyVault checks before every payment. It never sees your other wallets, your keys or your recovery phrase.

Agent access is in the desktop app only, and it is off until you turn it on. It speaks the Model Context Protocol (MCP), so any agent that supports MCP servers can use it.

How it works

Set up in five steps

1. Make an Agent wallet

Click New wallet…, give it a name, choose Agent under What is it for? and click Create Wallet. To turn a wallet you already have into one, open it and choose Wallet kind: … in its More (⋯) menu.

The limits bind agents only. You spend an Agent wallet like any other, and its recovery phrase restores it as a normal wallet.

2. Turn on agent access

Open Settings › Agent access (MCP) and turn on the switch. The Agents section appears in the sidebar.

3. Choose the agent's wallet and fund it

Under Agents may use, choose your Agent wallet. Only Agent wallets are listed. Then click Move money in… to move some coins into it from another of your wallets.

Keep the Agent wallet small and top it up when needed. The wallet's balance is the most an agent could ever spend.

4. Add an agent

Click Add an agent…, type a name (for example Claude Code), choose its access level and click Add. The Connect dialog opens.

5. Connect it

Choose your agent under Which agent? and follow the steps shown: see Connect your agent. Then ask it: "What is my SpiffyVault balance?"

Check and change the limits before the agent pays anyone: see Limits.

Connect your agent

The Connect dialog shows the exact steps for each agent, with your access key filled in. Copy always copies the full key, although the screen hides most of it. To see the steps again later, click Connect… on the agent's row. Below, <key> stands for that agent's access key.

Claude Desktop (easiest)

  1. Click Download SpiffyVault.mcpb and save the file.
  2. Click Open it, or double-click SpiffyVault.mcpb. Claude Desktop shows Install SpiffyVault: click Install.
  3. Ask Claude: "What is my SpiffyVault balance?"

Claude Desktop runs the extension with the Node.js it ships, so there is nothing else to install.

The .mcpb file holds the agent's access key. Do not share it, and delete it once Claude has installed it.

Claude Code

Run this in a terminal, then start a new session. /mcp lists the server.

claude mcp add --transport http spiffyvault http://127.0.0.1:47321/mcp --header "Authorization: Bearer <key>"

Cursor

Add this to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project), then restart Cursor.

{
  "mcpServers": {
    "spiffyvault": {
      "url": "http://127.0.0.1:47321/mcp",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

VS Code (Copilot)

Add this to .vscode/mcp.json in your project, or to your user MCP settings.

{
  "servers": {
    "spiffyvault": {
      "type": "http",
      "url": "http://127.0.0.1:47321/mcp",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

Windsurf

Add this to ~/.codeium/windsurf/mcp_config.json.

{
  "mcpServers": {
    "spiffyvault": {
      "serverUrl": "http://127.0.0.1:47321/mcp",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

Gemini CLI

Add this to ~/.gemini/settings.json.

{
  "mcpServers": {
    "spiffyvault": {
      "httpUrl": "http://127.0.0.1:47321/mcp",
      "headers": { "Authorization": "Bearer <key>" }
    }
  }
}

Any other MCP agent

Add a server that uses Streamable HTTP:

Addresshttp://127.0.0.1:47321/mcp
HeaderAuthorization: Bearer <key>

For an agent that can only start local programs, use the open-source mcp-remote bridge (it needs Node.js). For example, in Claude Desktop's claude_desktop_config.json:

{
  "mcpServers": {
    "spiffyvault": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://127.0.0.1:47321/mcp",
               "--header", "Authorization:${SPIFFYVAULT_AUTH}"],
      "env": { "SPIFFYVAULT_AUTH": "Bearer <key>" }
    }
  }
}

Access levels

Each agent has one level. Change it at any time with the Read / Prepare / Pay control on the agent's row. A new agent starts at Prepare.

LevelThe agent can
ReadCheck the balance, payments and contacts, and ask to be paid. It cannot pay.
PrepareAll of Read, and fill in payments for you to send yourself (drafts).
PayAll of Prepare, and pay within your limits.

Limits

Set them under Limits in Settings › Agent access (MCP), then click Save limits. They apply to every agent paying from the Agent wallet, and never to your own payments.

LimitDefaultWhat happens
Largest single payment10,000 satsA bigger payment is refused, not asked about.
Spend per day50,000 satsOver the last 24 hours, rolling.
Spend per week200,000 satsOver the last 7 days, rolling.
Payments per hour6Stops a loop that pays again and again.

Who it may pay:

Agents can never pay a plain BSV address. They pay contacts by name, SpiffyVault payment links and BRC-100 payment keys.

Ask me first: Above an amount (default on, 5,000 sats), and The first payment to anyone (default on).

In what order SpiffyVault checks

Refusals come before questions. SpiffyVault refuses a payment that breaks a limit (single payment, day, week, per hour, who it may pay) or that the wallet cannot cover. Only a payment that passes all of them can come to you as a question. Anything else is paid at once.

When the agent asks you

A payment that needs your yes opens a dialog over SpiffyVault, titled "<agent> asks to pay". It shows the payee, the amount, the agent's reason, the note the payee will see, and how much of your day, week and hour the payment would use.

You have 10 minutes. No answer counts as No. The agent does not wait all that time: after 30 seconds (at most 55, if it asks) it is told the payment waits for you, and it can check again later with get_payment or list_waiting_payments. A count on the toolbar's agent button shows how many payments wait for you.

Drafts

An agent with Prepare access fills in a payment for you: who, how much, and why. Nothing is paid until you send it.

  1. SpiffyVault shows "<agent> prepared a payment". Click Review, or open Agents › Requests.
  2. Under Needs you, click Review & send, or Decline.

You send a draft yourself, so the limits do not apply. A draft waits 24 hours.

Getting paid

An agent can ask to be paid: it makes a payment request, a SpiffyVault payment link with a short reference such as K7Q2M9XD, an optional amount and note, and an expiry (24 hours by default, from 5 minutes to 30 days). The agent gives the link to the payer and follows the request until it is paid.

A request is Open, Paid, Expired or Cancelled. If a payment with the reference arrives in another of your wallets (for example from an older app), the request still counts it and shows which wallet it went into.

Agents › Requests

What your agents ask you to decide, and the payments they asked others to make.

Click a row for its detail: the link and a large QR code, a timeline from the request to the payment, and its facts. Press Esc or click All requests to go back.

Agents › Activity

Every call your agents made to the Agent wallet, in plain words.

Tool reference

What SpiffyVault offers an agent. You do not need to know these: the agent reads them itself. All amounts are in satoshis of BSV (100,000,000 satoshis = 1 BSV).

ToolDoesAccess
get_balanceThe Agent wallet's balance, and how much of the limits is left.Read
list_paymentsPayments in and out, newest first, by date, direction, contact or amount.Read
get_paymentOne payment, by txid or by the agent's request_id.Read
list_contactsYour contacts, with when each was last paid and totals.Read
resolve_recipientChecks a payee without paying; with an amount, whether a payment would go through, ask you, or be refused.Read
request_paymentMakes a payment request: a link and its reference.Read
get_payment_requestOne request's status and the payments it received.Read
list_payment_requestsThe requests, newest first, by status.Read
cancel_payment_requestCancels an open request.Read
prepare_paymentA draft for you to send.Prepare
list_waiting_paymentsDrafts and payments waiting for you, and how they ended.Read
payPays a contact, a SpiffyVault payment link or a BRC-100 payment key, within your limits.Pay

Every pay and prepare_payment call carries the agent's own request_id: the same id never pays twice, so a retry is safe. Payments run one at a time. A link with an amount is paid exactly that amount.

Things to ask

Stay safe

Troubleshooting

"SpiffyVault is not running, or its agent access is off."

Open SpiffyVault and turn on Settings › Agent access (MCP). The agent can reach the wallet only while the app is open.

"SpiffyVault refused the access key."

The key was revoked, or copied wrong. Add the agent again, or click Connect… on its row and copy the key again.

"Port 47321 is in use by another program."

Close the other program, then turn agent access off and on.

Every call is refused

The agent says it may not pay

The agent has Read or Prepare access. Give it Pay on its row, or let it prepare drafts for you.

A payment was refused

Open the entry under Agents › Activity: its rule check says which limit refused it. Click Change limits… if the limit is too tight.

More

Back to Using SpiffyVault, or see Support.