Skip to content

send21 changelog

io.github.send21io/mcp

17 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • llms.txt +1 −1

    https://send21.io/llms.txt

    − - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, list_draft_quotes, get_transaction_template, submit_lightning_proof, create_payment_request, get_payment_request, list_address_book, propose_receiving_address, get_account_status, create_account, get_rate, get_fee_schedule. New accounts let API keys use only addresses the owner approved: an agent proposes an address (propose_receiving_address), the owner approves + - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, list_draft_quotes, get_transaction_template, submit_lightning_proof, create_payment_request, get_payment_request, list_address_book, propose_receiving_address, get_account_status, create_account, get_rate, get_fee_schedule. New accounts let API keys use only addresses the owner approved: an agent proposes an address (propose_receiving_address), the owner approves 

  • llms.txt +11 −4

    https://send21.io/llms.txt

    − > send21 is non-custodial payment software for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH on Bitcoin, Solana, Ethereum, Base, Arbitrum and Polygon. It creates payment requests, pay links and payment drafts, priced in a crypto amount or in any of 161 fiat currencies with a locked exchange rate, and watches the chain until the payment confirms. The payer signs and sends from their own wallet. send21 never holds private keys or funds, never signs and never broadcasts. It is not a c− - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, list_draft_quotes, get_transaction_template, submit_lightning_proof, create_payment_request, get_payment_request, list_address_book, get_rate, get_fee_schedule. `tools/list` and get_fee_schedule work without a key. Listed on [Smithery](https://smithery.ai/servers/send21io/mcp) and [Glama](https://glama.ai/mcp/servers/send21io/mcp).− - [Crypto payment links in your own currency](https://send21.io/crypto-payment-links.md)− - [send21 vs hosted crypto gateways](https://send21.io/compare/hosted-crypto-gateways.md)+ > send21: crypto pay links and API for people and AI agents. It is non-custodial payment software for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH on Bitcoin, Solana, Ethereum, Base, Arbitrum and Polygon. It creates payment requests, pay links and payment drafts, priced in a crypto amount or in any of 161 fiat currencies with a locked exchange rate, and watches the chain until the payment confirms. The payer signs and sends from their own wallet. send21 never holds private keys or+ - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, list_draft_quotes, get_transaction_template, submit_lightning_proof, create_payment_request, get_payment_request, list_address_book, propose_receiving_address, get_account_status, create_account, get_rate, get_fee_schedule. New accounts let API keys use only addresses the owner approved: an agent proposes an address (propose_receiving_address), the owner approves + - [Crypto payment link generator](https://send21.io/crypto-payment-links.md)+ - [Crypto invoice generator](https://send21.io/crypto-invoice-generator.md)+ - [How to accept crypto payments on your website](https://send21.io/accept-crypto-payments-on-your-website.md)+ - [x402, AP2 and send21: AI agent payments explained](https://send21.io/x402-ap2-agent-payments.md)+ - [Lightning invoice decoder](https://send21.io/tools/lightning-invoice-decoder): read a BOLT11 invoice in the browser+ - [Non-custodial alternative to crypto payment gateways](https://send21.io/compare/hosted-crypto-gateways.md)+ - [send21 as a Coinbase Commerce alternative](https://send21.io/compare/coinbase-commerce.md)+ - [send21 as a NOWPayments alternative](https://send21.io/compare/nowpayments.md)+ - [send21 as a BitPay alternative](https://send21.io/compare/bitpay.md)
  • Resources +11
    • + logo-horizontal-on-dark
    • + wordmark-on-light
    • + webhook-guide
    • + icon-on-dark
    • + overview
    • + wordmark-on-dark
    • + brand-guidelines
    • + fee-schedule
    • + currencies
    • + logo-stacked-on-dark
    • + logo-horizontal-on-dark-png
  • Prompts +3
    • + handle_amount_mismatch
    • + check_payment
    • + create_pay_link
  • Tools +3
    • + propose_receiving_address
    • + get_account_status
    • + create_account

  • server.json 2 fields changed
    icon_url
    https://send21.io/branding/send21-icon-new.svg https://send21.io/favicon-new.svg
    version
    1.5.0 1.7.0

  • server.json 1 field changed
    version
    1.4.1 1.5.0

  • server.json 4 fields changed
    description
    Non-custodial pay links: BTC, Lightning, USDC, EURC, SOL, ETH, USDT on Solana/Ethereum. Crypto pay links and API for people and AI agents. BTC, Lightning, USDC, USDT, EURC, SOL, ETH.
    icon_url
    — https://send21.io/branding/send21-icon-new.svg
    repository_url
    https://github.com/send21io/mcp —
    version
    1.3.1 1.4.1

  • llms.txt +14 −5

    https://send21.io/llms.txt

    − > send21 is non-custodial payment software for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH on Bitcoin, Solana, Ethereum, Base, Arbitrum and Polygon. It creates payment requests, pay links and payment drafts, priced in a crypto amount or in any of 165 fiat currencies with a locked exchange rate, and watches the chain until the payment confirms. The payer signs and sends from their own wallet. send21 never holds private keys or funds, never signs and never broadcasts. It is not a c− - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, get_transaction_template, create_payment_request, get_payment_request, list_address_book, get_rate, get_fee_schedule. `tools/list` and get_fee_schedule work without a key. Listed on [Smithery](https://smithery.ai/servers/send21io/mcp) and [Glama](https://glama.ai/mcp/servers/send21io/mcp).− - Idempotency: send an `Idempotency-Key` header on `POST /drafts` and `POST /payment-requests`. The same key returns the same object.− - Status: poll `GET /drafts/{id}/status`, or better, register webhooks with `POST /webhooks`. Events: draft.created, draft.seen, draft.confirmed, draft.amount_mismatch, draft.expired, draft.cancelled, test. Each delivery is signed with `X-Send21-Signature: sha256=<hex>` (HMAC-SHA256 of the raw body); any 2xx counts as delivered, otherwise up to 8 attempts with growing delays. draft.amount_mismatch means a transfer within 10% of the billed amount arrived; it pays the draft only after the owner ca− - Shopify: no App Store app. A merchant builds their own custom Shopify app that marks orders paid on the draft.confirmed webhook; reference code from integration@send21.io.+ > send21 is non-custodial payment software for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH on Bitcoin, Solana, Ethereum, Base, Arbitrum and Polygon. It creates payment requests, pay links and payment drafts, priced in a crypto amount or in any of 161 fiat currencies with a locked exchange rate, and watches the chain until the payment confirms. The payer signs and sends from their own wallet. send21 never holds private keys or funds, never signs and never broadcasts. It is not a c+ - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, list_draft_quotes, get_transaction_template, submit_lightning_proof, create_payment_request, get_payment_request, list_address_book, get_rate, get_fee_schedule. `tools/list` and get_fee_schedule work without a key. Listed on [Smithery](https://smithery.ai/servers/send21io/mcp) and [Glama](https://glama.ai/mcp/servers/send21io/mcp).+ - Different amounts: a transfer within 10% of the billed amount never confirms on its own. The draft keeps its status; `amountMismatch.reviewState` (also on `GET /drafts/{id}/status`) is `pending`, then `accepted` (`POST /drafts/{id}/accept-received`, `acceptReason`), `rejected` (`POST /drafts/{id}/reject-received`, `rejectReason` required) or `unresolved` (the draft expired undecided; it can still be accepted). Events: draft.amount_mismatch, draft.mismatch_accepted, draft.mismatch_rejected, dra+ - One link per order: `reuseOpenForOrder: true` on `POST /payment-requests` returns the open link for the same `orderId` instead of creating a second; a new Idempotency-Key alone creates a new link. `GET /payment-requests?orderId=` lists them.+ - Signer safety: `declineNote` on payment requests (what happens if the human does not pay, shown on the pay page as "If you don't pay:"); `changeSignals` / `changeNotes` on payment requests and drafts (`new_address`, `new_asset`, `unusual_amount`; empty when nothing is unusual, and the pay page shows the same lines); optional `shortfallPolicy` `{ absorbUpToPercent: 0-10, absorbedBy: "receiver" }` accepts small short payments automatically (never overpayments); `acceptReason` on `POST /drafts/{i+ - Integrity: a draft's `core` never changes after creation (a change means a new draft); `coreSha256` is SHA-256 over its RFC 8785 (JCS) form. A fiat-priced draft's rate lock is an immutable `quote` (15 minutes) with its own id and `sha256`; a re-quote records a new one (`GET /drafts/{id}/quotes`) and payment webhooks carry `quoteId`. The draft's expiry (`expiryHours`) never moves. Timestamps everywhere are UTC with three fraction digits and `Z`. Hash base units, never `amountFormatted` or `amou+ - Idempotency: send an `Idempotency-Key` header on `POST /drafts` and `POST /payment-requests`. The same key with the same request returns the same object; the same key with another amount, currency or address is refused with 422 (nothing is created). `reuseOpenForOrder` only returns an open link that asks for the same amount and addresses.+ - Unique amounts: two open payments to one address never share an amount, because payments are matched by exact amount. A fiat-priced amount may be raised by a few base units (at most 1000) to make it unique; an exact amount another account already waits for on that address is refused with 409.+ - Confirmation: before a payment is marked confirmed, send21 looks the transaction up once more at a second source; a replaced or reorged-out payment sends the draft back to AwaitingPayment. Native ETH seen only as a balance increase (no explorer) waits for the receiver (`reviewReason: "balance_check"`).+ - Pasted Lightning invoices must carry the draft amount, and one invoice backs one draft. Token contracts, mints and the zero address are refused as receivers.+ - Pay-link rate lock: a pay-link payment of the exact amount that arrives more than 10 minutes after its rate lock ended waits for the receiver like a different amount (`draft.amount_mismatch` with `reviewReason: "rate_lock_expired"`).+ - Status: poll `GET /drafts/{id}/status`, or better, register webhooks with `POST /webhooks`. Events: draft.created, draft.seen, draft.confirmed, draft.amount_mismatch, draft.mismatch_accepted, draft.mismatch_rejected, draft.mismatch_reminder, draft.mismatch_unresolved, draft.expired, draft.cancelled, payment_request.expired, test. Each delivery is signed with `X-Send21-Signature: sha256=<hex>` (HMAC-SHA256 of the raw body) and `X-Send21-Signature-V2: t=<unix>,v1=<hex>` (HMAC of `<t>.<delivery i+ - Shopify: no App Store app. A merchant builds their own custom Shopify app that marks orders paid on the draft.confirmed webhook; open reference code at https://github.com/send21io/send21-examples/tree/main/examples/shopify-app and setup help from integration@send21.io.+ - [Draft integrity and hashing](https://send21.io/docs/draft-integrity.md): immutable core and quotes, JCS hashes, test vectors
  • Tools +1
    • + list_draft_quotes

  • server.json 2 fields changed
    description
    Non-custodial payment links and drafts for BTC, Lightning, USDC, USDT, EURC, SOL and ETH. Non-custodial pay links: BTC, Lightning, USDC, EURC, SOL, ETH, USDT on Solana/Ethereum.
    version
    1.2.1 1.3.1
  • server.json 2 fields changed
    description
    Non-custodial payment links and drafts for BTC, Lightning, USDC, EURC, SOL and ETH. Payer signs. Non-custodial payment links and drafts for BTC, Lightning, USDC, USDT, EURC, SOL and ETH.
    version
    1.2.0 1.2.1

  • server.json 3 fields changed
    description
    Non-custodial pay links and drafts, each with a published SHA-256 hash. A human signs every payment. Non-custodial payment links and drafts for BTC, Lightning, USDC, EURC, SOL and ETH. Payer signs.
    version
    1.1.0 1.2.0
    website_url
    https://send21.io https://send21.io/docs/mcp
  • server.json 2 fields changed
    description
    Non-custodial pay links: BTC + Lightning, USDC, USDT, EURC, SOL, ETH. Payer signs; never holds keys. Non-custodial pay links and drafts, each with a published SHA-256 hash. A human signs every payment.
    version
    1.0.1 1.1.0

  • llms.txt +41 −67

    https://send21.io/llms.txt

    − > send21 is a non-custodial payment-draft platform for BTC, USDC, USDT, and EURC (on Bitcoin, Solana,− > Ethereum, and Base) with a first-class REST API for AI agents. Agents create payment drafts (fixed− > amount or fiat-pegged with a locked exchange rate). The sender pays from their own wallet− > (PSBT-enabled for multi-output drafts: Bitcoin Core, Sparrow, Electrum). send21 is software− > that prepares payment instructions only. It is not a custodian, exchange, broker, or payment− > service provider. It never holds private keys or funds, never signs, and never broadcasts or− > executes transactions. Signing and broadcasting always happen in the sender's wallet.− - Base URL: `https://send21.io/api/v1`− - OpenAPI spec: `https://send21.io/swagger/v1/swagger.json` (UI at `/swagger`, aliases `/openapi.json`, `/swagger.json`)− - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless. Authenticate with the same−   `Authorization: Bearer s21_<key>` header. Tools: create_draft, get_draft, get_draft_status,−   get_transaction_template, create_payment_request, get_payment_request, list_address_book,−   get_rate, get_fee_schedule. tools/list works unauthenticated, tool calls require a key.− - Supported assets: BTC native on Bitcoin (on-chain PSBT, or Lightning against a−   receiver-supplied BOLT11 invoice). USDC, USDT, and EURC as tokens on BOTH Solana and−   Ethereum. USDC and EURC also on Base (Coinbase's Ethereum L2, EIP-681 chain id 8453).−   Wrapped BTC on Solana (Portal) and Ethereum (WBTC). When a checkout offers the−   same currency on several networks, pass `network` in `POST /checkout/{token}/select`.− - Auth: `Authorization: Bearer s21_<key>`, scoped API keys created by a human account owner− - Scopes: `drafts:read`, `drafts:write`, `addressbook:read`, `addressbook:write`, `webhooks:manage`− - Idempotency: send an `Idempotency-Key` header on `POST /drafts`. Identical keys return the same draft− - Batch: `POST /drafts/batch` accepts up to 25 drafts per call with per-item results− - Recurring: `POST /recurring-templates` generates drafts daily/weekly/monthly automatically− - Status: poll `GET /drafts/{id}/status` or register HMAC-SHA256 signed webhooks−   (`X-Send21-Signature: sha256=<hex>` over the raw body. Events: draft.created, draft.seen,−   draft.confirmed, draft.expired, draft.cancelled)− - Payment instructions: `GET /drafts/{id}/tx-template` returns a multi-output template−   (receiver gets the exact billed amount, the platform fee is a separate transparent output)−   as Bitcoin Core `walletcreatefundedpsbt` arguments and Electrum/Sparrow pay-to-many CSV− - Checkout: `POST /payment-requests` creates fiat-priced, multi-currency (BTC/USDC/USDT/EURC) pay−   links. The payer scans one standard QR (BIP-21 / Solana Pay / EIP-681) and sends a single−   transfer, which works with any wallet and needs no PSBT. Supports `Idempotency-Key` for safe retries.− - Shopify: a ready-made app integrates send21 as a manual payment method with automatic−   order reconciliation (order marked paid on the draft.confirmed webhook). See−   `https://send21.io/business#shopify`− - Fiat pricing: 165 world currencies (the full active ISO 4217 set) with locked exchange−   rates and recorded quote provenance on every draft− - Fees: tiered by USD value at creation (0.49% under $10 down to 0.01% above $100k, min $0.01,−   max $100, sub-dust fees waived up to 5 times per account per day, then accrued). Priced in USD,−   displayed in the draft's fiat currency too.+ > send21 is non-custodial payment software for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH on Bitcoin, Solana, Ethereum, Base, Arbitrum and Polygon. It creates payment requests, pay links and payment drafts, priced in a crypto amount or in any of 165 fiat currencies with a locked exchange rate, and watches the chain until the payment confirms. The payer signs and sends from their own wallet. send21 never holds private keys or funds, never signs and never broadcasts. It is not a c+ - Base URL: `https://send21.io/api/v1`. OpenAPI: `https://send21.io/openapi.json` (Swagger UI at `/swagger`).+ - Auth: `Authorization: Bearer s21_<key>`. Scoped API keys are created by the human account owner. Scopes: `drafts:read`, `drafts:write`, `addressbook:read`, `addressbook:write`, `webhooks:manage`. No key can move funds.+ - MCP server: `https://send21.io/mcp`, Streamable HTTP, stateless, same bearer key. Tools: create_draft, get_draft, get_draft_status, get_transaction_template, create_payment_request, get_payment_request, list_address_book, get_rate, get_fee_schedule. `tools/list` and get_fee_schedule work without a key. Listed on [Smithery](https://smithery.ai/servers/send21io/mcp) and [Glama](https://glama.ai/mcp/servers/send21io/mcp).+ - Assets per network: Bitcoin: BTC. Lightning: BTC to a Lightning address. Solana: USDC, USDT, EURC, SOL, wrapped BTC (Portal). Ethereum: USDC, USDT, EURC, ETH, WBTC. Base: USDC, EURC, ETH. Arbitrum: native USDC, ETH. Polygon: native USDC. Decimals: BTC 8, USDC/USDT/EURC 6, SOL 9 (lamports), ETH 9 (stored in gwei, sent in wei).+ - Payment requests (`POST /payment-requests`): a fiat-priced pay link that offers several currencies. The payer scans one standard QR (BIP-21, Solana Pay, EIP-681 or a Lightning invoice) and sends a single transfer from any wallet. When one currency is offered on several networks, pass `network` to `POST /checkout/{token}/select`.+ - Drafts (`POST /drafts`): one payment to one receiver, exact or fiat-pegged. `GET /drafts/{id}/tx-template` returns a multi-output template for PSBT wallets (Bitcoin Core `walletcreatefundedpsbt` arguments, Electrum and Sparrow pay-to-many CSV). Batch up to 25 drafts with `POST /drafts/batch`. Recurring drafts with `POST /recurring-templates` (daily, weekly, monthly).+ - Lightning: pass the receiver's Lightning address (name@wallet.com) as `receiverAddress` with `paymentMethod: "Lightning"`. send21 fetches the invoice and confirms the payment when the provider supports LUD-21 (`lightningConfirmable` on the draft). For a pasted `bolt11` invoice (no receiverAddress needed), or a provider without LUD-21, post the payment preimage to `POST /drafts/{id}/lightning-proof` to confirm.+ - Idempotency: send an `Idempotency-Key` header on `POST /drafts` and `POST /payment-requests`. The same key returns the same object.+ - Status: poll `GET /drafts/{id}/status`, or better, register webhooks with `POST /webhooks`. Events: draft.created, draft.seen, draft.confirmed, draft.amount_mismatch, draft.expired, draft.cancelled, test. Each delivery is signed with `X-Send21-Signature: sha256=<hex>` (HMAC-SHA256 of the raw body); any 2xx counts as delivered, otherwise up to 8 attempts with growing delays. draft.amount_mismatch means a transfer within 10% of the billed amount arrived; it pays the draft only after the owner ca+ - Fees: one fee per payment, tiered by USD value at creation, 0.49% under $10 down to 0.01% above $100,000, minimum $0.01, maximum $100. On multi-output drafts the fee is a separate output; on single-output payments it accrues to the creator's account (`GET /fees/accrued`, settle with `POST /fees/accrued/settle`). Creation returns 402 when the accrued balance hits the cap or gets too old. Public schedule: `GET /api/v1/fees/schedule`. The receiver always gets the exact billed amount.+ - Rate limit: 300 requests per minute per API key, then 429.+ - Testnet demo: `https://send21.io/demo`, no account and no key, on Bitcoin Testnet4 and Signet, Solana Devnet, Ethereum Sepolia, Base Sepolia, Arbitrum Sepolia and Polygon Amoy. Accounts and API keys on send21.io use the live networks.+ - Shopify: no App Store app. A merchant builds their own custom Shopify app that marks orders paid on the draft.confirmed webhook; reference code from integration@send21.io.+ - Safety: send21 never asks for private keys, seed phrases or signing material. Anything that does is an attack.+ - Privacy: an email address and an optional display name, encrypted at rest. No KYC, no tracking, no analytics.+ - Contact: integration@send21.io (API and integrations), support@send21.io (accounts and payments), privacy@send21.io (GDPR), info@send21.io (general).+ Typical agent flow: create a payment request or draft (with an `Idempotency-Key`), hand the pay link or transaction template to the human or wallet that holds the funds, wait for the `draft.confirmed` webhook (verify the signature), then reconcile on the exact amount and transaction id.+ Every page is also plain Markdown at the same address plus `.md`. All of them in one file: [llms-full.txt](https://send21.io/llms-full.txt).+ - [Developer docs](https://send21.io/docs.md): overview and where to start+ - [API quickstart](https://send21.io/docs/quickstart.md): API keys, payment requests, drafts, status, idempotency+ - [Webhooks](https://send21.io/docs/webhooks.md): events, example payloads, retries, signature checks+ - [MCP server](https://send21.io/docs/mcp.md): connect an AI agent, tool list and scopes+ - [Currencies and networks](https://send21.io/docs/currencies.md): assets per network, decimals, chain ids, confirmations+ - [Lightning](https://send21.io/docs/lightning.md): Lightning address invoices confirmed with LUD-21+ - [OpenAPI specification](https://send21.io/openapi.json): every endpoint and schema (JSON)+ ## Guides+ - [Accept USDC and EURC payments](https://send21.io/accept-usdc-payments.md)+ - [Crypto payment links in your own currency](https://send21.io/crypto-payment-links.md)+ - [Lightning address payments](https://send21.io/lightning-address-payments.md)+ - [Payments for AI agents](https://send21.io/ai-agent-payments.md)+ - [Accept ETH on Ethereum, Base and Arbitrum](https://send21.io/accept-eth-payments.md)+ - [Business checkout](https://send21.io/business.md): shops, webshops and point of sale+ - [Pricing](https://send21.io/pricing.md): one fee per payment, 0.49% down to 0.01%, capped at $100+ ## Optional+ - [send21 vs BTCPay Server](https://send21.io/compare/btcpay-server.md)+ - [send21 vs hosted crypto gateways](https://send21.io/compare/hosted-crypto-gateways.md)+ - [About send21](https://send21.io/about.md)+ - [Testnet demo](https://send21.io/demo.md)+ - [Terms of service](https://send21.io/terms.md)

    Showing the first 40 of each.

  • Tools +1
    • + submit_lightning_proof

  • server.json 2 fields changed
    description
    Non-custodial payment drafts/pay links for BTC, USDC, USDT, EURC. Never holds keys. Non-custodial pay links: BTC + Lightning, USDC, USDT, EURC, SOL, ETH. Payer signs; never holds keys.
    version
    1.0.0 1.0.1