send21

Non-custodial payment drafts/pay links for BTC, USDC, USDT, EURC. Never holds keys.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
84%
이름 품질
100%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringget_draft_status에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,346토큰 (도구 정의)
~1.0 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.05%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

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

원격 엔드포인트

https://send21.io/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (9)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢get_transaction_template(draftId)

Get the multi-output transaction template for a draft: Bitcoin Core walletcreatefundedpsbt arguments and Electrum/Sparrow pay-to-many CSV. The operator's wallet funds, reviews, and signs it — send21 contains no signing code. Requires scope drafts:read.

입력 스키마

{
  "type": "object",
  "properties": {
    "draftId": {
      "description": "Draft id (GUID)",
      "type": "string"
    }
  },
  "required": [
    "draftId"
  ]
}
🟢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.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟡create_payment_request(fiatCurrency, fiatAmount, options, orderId, memo, ...)

Create a payment request / checkout pay link (you are the RECEIVER asking to get paid). Price in any of 165 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.

입력 스키마

{
  "type": "object",
  "properties": {
    "fiatCurrency": {
      "description": "Fiat currency the request is priced in, e.g. USD, EUR, SEK",
      "type": "string"
    },
    "fiatAmount": {
      "description": "Amount in the fiat currency",
      "type": "number"
    },
    "options": {
      "description": "Currencies the payer may choose from, each with your receiving address",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "currency": {
            "description": "Asset: Btc, Usdc, Usdt, or Eurc",
            "type": "string"
          },
          "network": {
            "description": "Network the address lives on: Mainnet, Solana, Ethereum, or Base",
            "type": "string"
          },
          "address": {
            "description": "The RECEIVER's own address for this currency",
            "type": "string"
          }
        },
        "required": [
          "currency",
          "network",
          "address"
        ]
      }
    },
    "orderId": {
      "description": "Your own order/reference id — echoed in webhooks for reconciliation",
      "type": [
        "string",
        "null"
      ]
    },
    "memo": {
      "description": "Message shown to the payer (max 500 chars)",
      "type": [
        "string",
        "null"
      ]
    },
    "expiryHours": {
      "description": "Hours until the request expires (default 24)",
      "type": [
        "integer",
        "null"
      ]
    },
    "idempotencyKey": {
      "description": "Idempotency key — retries with the same key return the original request",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "fiatCurrency",
    "fiatAmount",
    "options",
    "orderId",
    "memo",
    "expiryHours",
    "idempotencyKey"
  ]
}
🟢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.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟢get_draft(draftId)

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

입력 스키마

{
  "type": "object",
  "properties": {
    "draftId": {
      "description": "Draft id (GUID)",
      "type": "string"
    }
  },
  "required": [
    "draftId"
  ]
}
🟢get_payment_request(paymentRequestId)

Get a payment request by id: status (Open/Completed/Cancelled/Expired), pay path, offered currencies, and the underlying draft once the payer committed. Requires scope drafts:read.

입력 스키마

{
  "type": "object",
  "properties": {
    "paymentRequestId": {
      "description": "Payment request id (GUID)",
      "type": "string"
    }
  },
  "required": [
    "paymentRequestId"
  ]
}
🟢get_rate(fiatCurrency, asset)

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. 165 ISO-4217 fiat currencies are supported.

입력 스키마

{
  "type": "object",
  "properties": {
    "fiatCurrency": {
      "description": "Fiat currency code, e.g. USD, EUR, SEK",
      "type": "string"
    },
    "asset": {
      "description": "Asset: Btc, Usdc, Usdt, or Eurc",
      "type": "string"
    }
  },
  "required": [
    "fiatCurrency",
    "asset"
  ]
}
🟡create_draft(receiverAddress, network, currency, amountBaseUnits, fiatCurrency, ...)

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) 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. Requires scope drafts:write.

입력 스키마

{
  "type": "object",
  "properties": {
    "receiverAddress": {
      "description": "Receiver address (Bitcoin bc1…, Solana base58, or 0x… for Ethereum/Base)",
      "type": "string"
    },
    "network": {
      "description": "Network: Mainnet, Solana, Ethereum, Base (test: Testnet4, Signet, Regtest, SolanaDevnet, EthereumSepolia, BaseSepolia)",
      "type": "string"
    },
    "currency": {
      "description": "Asset: Btc (default), Usdc, Usdt, or Eurc",
      "type": [
        "string",
        "null"
      ]
    },
    "amountBaseUnits": {
      "description": "Exact amount in base units (sats / micro-units); omit when using fiat pricing",
      "type": [
        "integer",
        "null"
      ]
    },
    "fiatCurrency": {
      "description": "Fiat currency code for fiat-pegged amount, e.g. USD",
      "type": [
        "string",
        "null"
      ]
    },
    "fiatAmount": {
      "description": "Fiat amount; requires fiatCurrency",
      "type": [
        "number",
        "null"
      ]
    },
    "memo": {
      "description": "Free-text memo shown on the draft (max 500 chars)",
      "type": [
        "string",
        "null"
      ]
    },
    "idempotencyKey": {
      "description": "Idempotency key — retries with the same key return the original draft",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "receiverAddress",
    "network",
    "currency",
    "amountBaseUnits",
    "fiatCurrency",
    "fiatAmount",
    "memo",
    "idempotencyKey"
  ]
}
🟢get_draft_status(draftId)

Lightweight status snapshot of a draft: status (AwaitingPayment/Seen/Confirmed/Expired/Cancelled), paying txid, confirmations. Cheap to poll. Requires scope drafts:read.

입력 스키마

{
  "type": "object",
  "properties": {
    "draftId": {
      "description": "Draft id (GUID)",
      "type": "string"
    }
  },
  "required": [
    "draftId"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 9개
검증됨버전이 기록되지 않음도구 9개