send21

io.github.send21io由 GitHub 账号 send21io 发布v1.7.0更新于 Nov 8, 2026

Crypto pay links and API for people and AI agents. BTC, Lightning, USDC, USDT, EURC, SOL, ETH.

已验证Streamable HTTP可网页运行金融商业与电商

概览

AI 生成的概览

远程 send21 服务器,让助手为 BTC、闪电网络、USDC、USDT、EURC、SOL 和 ETH 准备加密收款链接与非托管的付款草稿。

可以做什么
  • 创建与查看付款草稿:生成草稿、读取状态、报价以及供发送方钱包使用的交易模板
  • 创建与跟踪收款请求(结账付款链接),以法币计价,并对异常付款给出变更提示
  • 查询支持资产在 161 种法币下的汇率,并读取公开的费用表
  • 地址管理:列出地址簿,并提交收款地址供账户所有者审批
  • 账户操作:为所有者创建账户、查看账户状态,并用付款原像确认闪电网络草稿
适用场景
适合让助手帮个人或代理以加密货币收款,或在不交出私钥的前提下准备付款,例如生成付款链接、法币计价草稿,或由用户在自己钱包中签名的付款指令。
运行要求
远程 Streamable HTTP 端点;需要账户中创建的、带作用域的 API 密钥,通过 Authorization Bearer 请求头发送,或使用无需请求头的 OAuth 登录端点。创建任何内容前需要所有者通过邮件确认的账户;tools/list 与费用表无需认证。
安装前请注意
涉及真实资金:用户在自己钱包签名后,草稿和付款链接会实际转账,并产生费用。API 密钥应视为机密。地址须由所有者审批,未审批地址会被拒绝。创建账户时返回的引导 API 密钥只显示一次。付款与地址数据会发送给 send21。

安装

在 SourceWeft 中

  1. 打开 控制台中的 send21,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.send21io%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "send21": {
      "type": "http",
      "url": "https://send21.io/mcp"
    }
  }
}

README

[send21]

send21 MCP

[send21 MCP server] [Listed on mcpservers.org]

Remote Model Context Protocol server for send21: crypto pay links and API for people and AI agents.

send21 prepares payment instructions for BTC (on-chain and Lightning), USDC, USDT, EURC, SOL and ETH. The payer signs in their own wallet. send21 never holds keys, never signs, and never broadcasts.

Live endpoint (Streamable HTTP): https://send21.io/mcp (API key), https://send21.io/mcp/oauth (OAuth sign-in)
Descriptor: https://send21.io/.well-known/mcp.json
Agent docs: https://send21.io/llms.txt
OpenAPI: https://send21.io/swagger/v1/swagger.json
Site: https://send21.io

Connect

Point an MCP client at the remote server:

json
{  "mcpServers": {    "send21": {      "url": "https://send21.io/mcp",      "transport": "streamable-http",      "headers": {        "Authorization": "Bearer s21_YOUR_API_KEY"      }    }  }}

Auth: API key or OAuth sign-in.

  • API key: create scoped keys at https://send21.io/api-keys (s21_…) and send them as above.
  • OAuth sign-in: use https://send21.io/mcp/oauth with no headers; see Sign in instead of an API key below.
  • Scopes such as drafts:write, drafts:read, webhooks:manage cannot move funds.
  • tools/list and get_fee_schedule work without authentication.

Sign in instead of an API key

Clients that support MCP sign-in (OAuth) can connect to https://send21.io/mcp/oauth with no key and no headers. The client opens send21 in your browser; you sign in, see what the app asks for, and approve. A connected app only ever uses receiving addresses you approved. It is listed under API keys as a connected app, where Disconnect ends it at once, and a connection nobody uses for 90 days ends by itself.

Claude Code

bash
claude mcp add --transport http send21 https://send21.io/mcp/oauth# then run /mcp in Claude Code and choose send21 to sign in# (or, from your shell: claude mcp login send21)

Cursor (.cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects)

json
{  "mcpServers": {    "send21": {      "url": "https://send21.io/mcp/oauth"    }  }}

VS Code (.vscode/mcp.json)

json
{  "servers": {    "send21": {      "type": "http",      "url": "https://send21.io/mcp/oauth"    }  }}

Any MCP client that supports OAuth: add https://send21.io/mcp/oauth as a remote (Streamable HTTP) MCP server with no headers, then sign in when the client asks.

Prefer an API key? It still works: use https://send21.io/mcp with Authorization: Bearer s21_..., a scoped key you create at https://send21.io/api-keys in your account. tools/list and get_fee_schedule work without either. Details: https://send21.io/docs/mcp

What the tools do

14 tools (see live tools/list): 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. Signing and broadcast stay in the user’s wallet.

Agents onboard themselves; humans approve where the money lands. An agent proposes a receiving address (propose_receiving_address) and the owner approves it after signing in, with a passkey or an authenticator code; no API key can approve an address, and any other address is refused (422 address_not_approved). An agent without a key can sign its owner up (create_account), but it cannot create anything until the owner takes the account over from an emailed link (403 owner_not_confirmed until then). Details: https://send21.io/docs/mcp

Brand

send21: crypto pay links and API for people and AI agents.
Contact: [email protected]

License

MIT

来源:README.md,提交 d03869e

工具

14

get_transaction_template

Get wallet payment instructions

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.

输入参数draftId必填

get_fee_schedule

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 pay link

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. On accounts with the policy ApprovedOnly (see get_account_status) every address must be one of the owner's approved receiving addresses; otherwise the answer is 422 address_not_approved and nothing is created (propose it with propose_receiving_address). Requires scope drafts:write.

输入参数memooptions必填orderIdfiatAmount必填declineNoteexpiryHoursfiatCurrency必填idempotencyKeyreuseOpenForOrdershortfallAbsorbUpToPercent

propose_receiving_address

Propose receiving address

Propose an address for the owner to approve: one of the owner's own receiving addresses (for pay links) or the address of someone the owner pays (for drafts). It is saved unapproved and the owner gets an email. On accounts with the policy ApprovedOnly, API keys can only use approved addresses, and only the owner can approve one, signed in to the send21 app with a passkey or authenticator code. No key can approve an address. Requires scope addressbook:write.

输入参数label必填address必填network必填direction

get_account_status

Get account status

What stands between you and a live pay link: whether the owner's email is confirmed, the receiving-address policy, how many addresses are approved or waiting for approval, unsettled fees, your key's scopes, and the next steps. Requires scope drafts:read.

无需输入参数。

list_address_book

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 payment draft

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

输入参数draftId必填

submit_lightning_proof

Submit Lightning payment 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:write.

输入参数draftId必填preimage必填

create_account

Create send21 account for owner

Create a send21 account for your human owner, without a key. The owner gets an email with a link to take the account over; until they do, nothing can be created. Returns a bootstrap API key ONCE (save it and send it as Authorization: Bearer on every later call; reconnect this MCP client with it). The key can read, propose addresses and check get_account_status; it can create pay links only after the owner took the account over and approved a receiving address you proposed. Agents onboard themselves; humans approve where the money lands. If the email already has an account, ask the owner for an API key instead.

输入参数agentNameownerEmail必填intendedUse

get_payment_request

Get pay link

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.

输入参数paymentRequestId必填

get_rate

Get exchange 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.

输入参数asset必填fiatCurrency必填

create_draft

Create payment 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 their own wallet. send21 never holds keys. On accounts with the policy ApprovedOnly the receiver must be an address the owner approved (422 address_not_approved otherwise). Requires scope drafts:write.

输入参数memonetwork必填currencyfiatAmountfiatCurrencyidempotencyKeyamountBaseUnitsreceiverAddress必填shortfallAbsorbUpToPercent

list_draft_quotes

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.

输入参数draftId必填

get_draft_status

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:read.

输入参数draftId必填

版本历史

9
  1. v1.7.0最新Oct 22, 2026
  2. v1.5.0Oct 20, 2026
  3. v1.4.1Oct 19, 2026
  4. v1.3.1Oct 13, 2026
  5. v1.2.1Oct 13, 2026
  6. v1.2.0Oct 12, 2026
  7. v1.1.0Oct 12, 2026
  8. v1.0.1Oct 6, 2026
  9. v1.0.0Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证不适用

    托管服务按其提供方的条款使用,因此这里不要求许可证。此检查项不计入百分比。