Your agent opens its own Solana wallet through MCP. The key is made on your machine and never leaves it. You decide how much it can spend.
$ npm install -g keyhole-money
Works with any client that speaks MCP
No account to make. No company holding your keys. No dashboard to log in to. Your agent asks for a wallet, gets one in a second, and works inside limits that only you can change.
Agents now buy data, pay for APIs and tip other agents. Pasting your own private key into a config file gives them everything you own. A separate wallet with hard limits gives them only what you put in it.
Keys are created and encrypted on the machine the agent runs on and never leave it. No sign-up, no account, no tracking.
Per-send caps, a daily cap that counts fees, token limits, an allowlist and a freeze switch. The agent can read its limits. Only you can change them, and edits made behind Keyhole's back are caught and refused.
Add it to Claude Code, Cursor, Codex or anything else that supports MCP. Eight tools appear and your agent can use them straight away.
Install the package and create your vault with a passphrase. That passphrase encrypts every key.
keyhole init
Register the MCP server with your client. The agent now has wallet tools.
claude mcp add keyhole -- keyhole-mcp
Ask the agent to open a wallet, send a little SOL to the address it gives you, and set limits if the defaults don't suit.
keyhole policy bot --daily 2
wallet_createOpens a fresh wallet with its own keypair and returns the address to fund.
wallet_balanceSOL and every token it holds, including Token-2022.
wallet_send_solSends SOL with an optional memo, checked against your limits first.
wallet_send_tokenSends USDC or any SPL token you've allowed, and creates the recipient's token account if needed.
wallet_sign_messageSigns plain-text log-in messages, only once you switch it on. Anything shaped like a transaction is refused.
wallet_limitsShows the agent its caps and what it has spent in the last 24 hours.
wallet_historyRecent transactions with times and status.
wallet_listEvery wallet on this machine, by label and address.
Limits live in the encrypted vault, not in the agent's reach. Change them from the owner CLI and they apply at once, even mid-conversation.
Defaults are 0.1 SOL per send and 0.5 SOL a day, all fees included. Tokens can't move and messages can't be signed until you allow them.
Generated on your machine, encrypted with scrypt and AES-256-GCM, stored in a file only your user can read.
your machineSet in your MCP client's config on your own machine. It unlocks the vault when the server starts, and the wallet never stores it.
your machineKept next to the vault and sealed with a key from your passphrase. The agent can read them through MCP, has no tool that writes them, and hand edits are refused.
your machineGo to the Solana RPC you choose. Point it at your own node and no third party sees them.
your RPCPaid on chain to one public Keyhole fee address. Anyone can see that a wallet uses Keyhole, but not who owns it.
publicThere aren't any.
noneNo. The server runs on your computer and talks to your agent over a local connection. There is no hosted part that could see a key.
Not through MCP. None of the eight tools can change limits, and if the files are edited by hand Keyhole refuses to send. If your agent can also run shell commands as you, keep your Keyhole folder and MCP config outside its sandbox. The security model explains how.
The worst case is spending up to the limits you set, to addresses on your allowlist if you've switched that on. That's the reason for the limits. Keep only what the agent needs in each wallet.
Yes. keyhole export <wallet> prints the secret key so you can import it anywhere.
Devnet is the default. Point KEYHOLE_RPC at a mainnet RPC when you're ready.
Keyhole adds 1% on top of each send on mainnet, in the same transaction, so the recipient still gets the full amount. Those fees buy the KEY token for the treasury. Devnet is free. Normal Solana network fees apply too, a fraction of a cent.
Install, connect, fund. Your keys stay where they are.