SE

send21

io.github.send21io/mcp

Non-custodial pay links: BTC, Lightning, USDC, EURC, SOL, ETH, USDT on Solana/Ethereum.

Yes, your AI can use this right now.Answered a live MCP handshake in 375 ms with no sign-in needed and exposes 11 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://send21.io/mcp

11 tools, verified live

Pulled straight from the server with tools/list on 2026-10-17.
get_transaction_template

Get the transaction template for an on-chain draft: every output to pay, plus walletcreatefundedpsbt arguments and a pay-to-many CSV on Bitcoin, or payment URIs (and calldata on EVM chains) on Solana, Ethereum, Base, Arbitrum and Polygon. The sender's own wallet funds, reviews and signs it; send21 contains no signing code. Not for Lightning drafts (pay their invoice). Requires scope drafts:read.

get_fee_schedule

Get the public send21 fee schedule: tiered percent by payment size in USD, min/max fee, and dust limit. No authentication needed.

create_payment_request

Create a payment request / checkout pay link (you are the RECEIVER asking to get paid). Price in any of 161 fiat currencies; the payer opens the returned payPath, picks one of the offered currencies (rate locks then), and pays a single QR-scannable transfer straight to your address. Requires scope drafts:write.

list_address_book

List the account's saved addresses (label, address, network, direction: Sending = recipients the owner pays, Receiving = the owner's own addresses). Requires scope addressbook:read.

get_draft

Get a payment draft by id, including amounts, fee, quote, and status. Requires scope drafts:read.

submit_lightning_proof

Confirm a paid Lightning draft with its proof of payment: the 64-character preimage the paying wallet shows after a Lightning payment. Needed for drafts with a pasted bolt11 invoice, and for Lightning addresses whose provider does not report payments. send21 checks that SHA-256 of the preimage equals the invoice's payment hash; the draft then confirms within about 30 seconds. Requires scope drafts

get_payment_request

Get a payment request by id: status (Open/Completed/Cancelled/Expired), pay path, offered currencies, and the underlying draft once the payer committed. Includes changeSignals and changeNotes: what is unusual compared with the account's paid payments (new_address, new_asset, unusual_amount), the same lines the payer sees on the pay page; empty when nothing is unusual. Requires scope drafts:read.

get_rate

Get the current exchange rate for an asset in a fiat currency (rate = fiat units per 1 whole asset unit, with source provenance). Assets: Btc, Usdc, Usdt, Eurc, Sol, Eth. 161 ISO 4217 fiat currencies are supported. Requires an API key.

create_draft

Create a non-custodial payment draft (you are the SENDER paying a receiver address). Amount is either exact base units (sats for BTC, micro-units for stablecoins, lamports for SOL, gwei for ETH) via amountBaseUnits, or fiat-pegged via fiatCurrency+fiatAmount with the exchange rate locked at creation. Returns the draft incl. id, amounts, fee, and status. Funds move only when the sender signs in the

list_draft_quotes

List every quote (rate lock) of a fiat-priced draft, oldest first. Quotes never change; a re-quote adds a new one with its own id. Each has a sha256 (RFC 8785 JCS + SHA-256). Requires scope drafts:read.

get_draft_status

Lightweight status snapshot of a draft: status (AwaitingPayment/Seen/Confirmed/Expired/Cancelled), paying txid, confirmations, and reviewState when a transfer with a different amount arrived (pending = needs the receiver's decision and the draft is not paid; accepted; rejected; unresolved = the draft expired while undecided, the money is with the receiver). Cheap to poll. Requires scope drafts:rea

Alternatives in Crypto & Web3

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”