Local MCP wallet · Solana devnet

Your agent can spend.It can’t drain your wallet.

Give Claude Code, Cursor, Cline, or Zed a budget-capped USDC wallet for x402 APIs. Every payment is checked against a per-call cap and a daily cap before it is ever signed.

Per-call capchecked first
Daily policyledger-backed
SettlementUSDC devnet
ReceiptsSolscan links
agentspay · pre-sign audit
toolagentspay_pay_url
amount_usdc0.00
per_call_cap1.00
cap 1.00
evaluating per-call policy…
ssrf_guard passasset USDCdecimals 6 no signature emitted

Live transaction card

Solscan-confirmed rows from the devnet ledger

full ledger
0
caps before signing
0
MCP tools
0
Rust tests pass
~0ms
cold start
Runs in your stack
Claude CodeCursorClineZedx402Solana devnetUSDCSPL transfer_checkedClaude CodeCursorClineZedx402Solana devnetUSDCSPL transfer_checked
Live proof

The product surface is the receipt trail.

No static screenshots. The homepage reads the same devnet ledger as the proof page and rotates recent Solscan-confirmed agent payments as they land.

Audit invariant

A signed payment creates a ledger row and a Solscan link.

View ledger
Runtime contract

Small payment path, strict enough for autonomous agents.

The implementation is deliberately narrow: a local signer, a budget policy, x402 settlement, and receipts a developer can audit from the source or the browser.

snake_case response shapes
one subprocess per call
SeaORM ledger writes
typed SDK errors
01

Host invokes MCP

Claude Code, Cursor, Cline, or Zed calls one of five stdio JSON-RPC tools. The agent talks to the local binary, not a hosted wallet API.

02

Policy blocks bad spend

max_amount_usdc, per-call cap, daily cap, SSRF, asset mint, and decimals are checked before a Solana transaction exists.

03

x402 gets retried with proof

AgentsPay probes the URL, parses the 402 requirements, signs a devnet USDC transfer, and retries with X-Payment.

04

Ledger records the outcome

Paid, rejected, and no-payment calls are written into SQLite so the SDK, CLI, MCP host, and proof page all see the same truth.

Developer install

One local binary, three ways to integrate.

The MCP server is the product surface. The SDK and CLI wrap the same subprocess so your app, terminal, and agent host share one wallet boundary and one audit trail.

Open full docs

MCP host

Claude Code, Cursor, Cline, Zed

path 01

$ cargo build --release -p agentspay-mcp
claude mcp add agentspay $PWD/target/release/agentspay-mcp

TypeScript SDK

Node.js apps without an MCP host

path 02

$ pnpm add @agentspay/sdk-js

import { AgentsPayClient } from "@agentspay/sdk-js";
const client = new AgentsPayClient({ network: "solana-devnet" });
await client.payUrl({ url, maxAmountUsdc: "0.50" });

CLI

Shell scripts and smoke tests

path 03

$ pnpm add -g @agentspay/cli
agentspay balance
agentspay pay-url <url> --max 0.50
Why it exists

Built for developers who are about to let agents touch money.

AgentsPay is not a broad wallet dashboard. It is a narrow security boundary around one job: let an AI agent pay for useful APIs while keeping the spend policy obvious and enforceable.

Mainnet status

Devnet today, v0.5 review first

releasev0.3
networksolana-devnet
signinglocal keypair
mainnetgated

The agent never gets the credit line

A tool call can ask to spend, but the local signer enforces the cap before any transaction is assembled.

The quote cannot mutate the asset

The x402 requirement must match the devnet USDC mint and six decimals. Weird mints and decimal inflation are rejected.

The browser demo is not the product path

Production signing stays local. The hosted web stack exists to demonstrate the flow and publish proof, not custody funds.

The audit log mirrors the wire

Snake_case responses keep Rust, SDK output, CLI output, and ledger rows easy to compare during a review.