# Show HN: Send21 – Crypto pay links an AI agent can create but can't spend

> Source: <https://send21.io/demo>
> Published: 2026-10-30 08:26:44+00:00

**Testnet demo.** You sign with your own wallet, on test networks only. The coins are free test coins from public faucets and have no value.

# Try send21 with a real test payment

See the whole flow in a few minutes, with no account and no email. send21 creates a payment draft, you pay it from your own wallet, and the page shows the confirmation from a public test network.

## How it works

1. send21 **creates a payment draft** , with the same draft-only access an AI agent gets. Nothing here can spend.
2. You **check and sign in your own wallet** . send21 never holds keys, never signs and never broadcasts.
3. send21 **watches the chain** until the payment confirms. In a real integration your backend gets a signed draft.confirmed webhook at that moment.

## Need test coins? Faucets

## For AI agents: the same flow over API or MCP

An agent gets a scoped API key that can **create and track drafts but never spend**. A person always signs in their own wallet. Test networks on send21.io are for this demo only, and account drafts use the live networks. That is still safe while you integrate: a draft moves no money until someone signs it, so create small drafts to your own address and cancel them.

```
# an AI agent (or your backend) creates the draft with a scoped key.
# draft-only scopes: the key can create and track drafts but can never spend
# a draft moves no money until a human signs it, so a small live draft is a safe test
curl -X POST https://send21.io/api/v1/drafts \
  -H "Authorization: Bearer s21_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: agent-demo-001" \
  -d '{
    "receiverAddress": "0x...your-own-address",
    "network": "Base",
    "currency": "Usdc",
    "paymentMethod": "MultiOutput",
    "singleOutput": true,
    "amountSats": 1000000,
    "memo": "agent integration test, 1 USDC"
  }'
// MCP (Streamable HTTP), same key, same draft-only scopes
{
  "mcpServers": {
    "send21": {
      "url": "https://send21.io/mcp",
      "headers": { "Authorization": "Bearer s21_YOUR_KEY" }
    }
  }
}
// then call the create_draft tool with { "network": "Base", "currency": "Usdc", ... }
```

Full API: [/swagger](https://send21.io/swagger/index.html) | agent overview: [/llms.txt](https://send21.io/llms.txt) | status via GET /drafts/{id}/status or signed webhooks (draft.confirmed).

## Ready for real payments?

Create a free account and send your first pay link. No subscription, only a small fee per payment.
