A keyless HTTP API built for agents. Give a destination wallet address and get back a shareable payment link, an embeddable button, and an agent-readable dashboard, in one call. No account, no dashboard, no API key. Non-custodial: funds settle straight to the address you provide. Base URL: https://shieldz.cash
email so the owner can later claim a full dashboard via magic link, settlement keeps working either way.Any tool that can build a URL, an agent with only fetch, a browser, a link pasted into a chat, can create a payment method. No JSON body, no client. The response is JSON with the payment URL and a manage_token claim code.
# Reusable tip jar (the payer picks the amount)
GET https://shieldz.cash/api/v1/tip-jars?to=0xWALLET&title=Buy+me+a+coffee&amounts=1,5,20
# Fixed-amount payment link
GET https://shieldz.cash/api/v1/links?to=0xWALLET&amount=25&chain=BASE&asset=USDC
Tip jars are idempotent per wallet, and to / amount are hand-writable aliases. Full parameters in the numbered reference below.
POST /api/v1/links, a one-time invoice for a fixed amount.
curl https://shieldz.cash/api/v1/links \
-H "Content-Type: application/json" \
-d '{
"settlement": { "chain": "BASE", "asset": "USDC", "address": "0xYourWallet…" },
"amount_usd_cents": 2500,
"memo": "Invoice #1234",
"email": "[email protected]"
}'
Required: settlement.address (a 0x EVM address) and amount_usd_cents ($1 to $100k). Optional: settlement.chain (Base, Arbitrum, Optimism, Polygon, Ethereum, default Base), settlement.asset (USDC or USDT, default USDC), memo, email.
Response:
{
"id": "I8DrmEZ_pFsmZqknbmZc",
"status": "pending",
"amount_usd_cents": 2500,
"settlement": { "chain": "BASE", "asset": "USDC", "address": "0xYourWallet…" },
"pay_url": "https://shieldz.cash/pay/I8DrmEZ_pFsmZqknbmZc",
"manage_url": "https://shieldz.cash/a/8_ah9oJ4WcvZnJRTDxD-8xSjVUiPYcwA",
"manage_token": "8_ah9oJ4WcvZnJRTDxD-8xSjVUiPYcwA",
"embed": "<script src=\"https://shieldz.cash/embed/button.js\" data-href=\"https://shieldz.cash/pay/I8DrmEZ_pFsmZqknbmZc\" data-label=\"Pay\"></script>"
}
Send the payer to pay_url, or drop the embed snippet on any page. Keep manage_token, it is how you read status later.
No JSON body? Any tool that can build a URL can mint the same link with a plain GET: GET https://shieldz.cash/api/v1/links?to=0x…&amount=25&chain=BASE&asset=USDC. Same response, including the manage_token claim code. to and amount are hand-writable aliases.
POST /api/v1/tip-jars, a reusable "pay what you want" page where the payer chooses the amount. Idempotent per wallet address: calling again updates the same jar.
curl https://shieldz.cash/api/v1/tip-jars \
-H "Content-Type: application/json" \
-d '{
"settlement": { "chain": "BASE", "asset": "USDC", "address": "0xYourWallet…" },
"title": "Buy me a coffee",
"brand": "Acme Store",
"description": "Support my open-source work",
"suggested_amounts_usd_cents": [300, 500, 1000],
"logo": "https://you.com/logo.png",
"image_url": "https://you.com/hero.png",
"accent": "#7c3aed",
"social": { "website": "https://you.com", "x": "https://x.com/you" },
"email": "[email protected]"
}'
Optional: title, description, suggested_amounts_usd_cents (up to 8 preset buttons), and a custom slug.
White-label (all optional): image_url (a logo/hero image), accent (one #RRGGBB that themes the whole page and the checkout it leads to), and social (website, x, instagram, telegram, youtube). The page wears the creator's brand, and the accent carries through to the hosted checkout.
{
"object": "tip_jar",
"slug": "tip-10851092bec481a4",
"url": "https://shieldz.cash/tip/tip-10851092bec481a4",
"settlement": { "chain": "BASE", "asset": "USDC", "address": "0xYourWallet…" },
"suggested_amounts_usd_cents": [300, 500, 1000],
"manage_url": "https://shieldz.cash/a/8_ah9oJ4WcvZnJRTDxD-8xSjVUiPYcwA",
"manage_token": "8_ah9oJ4WcvZnJRTDxD-8xSjVUiPYcwA"
}
Plain GET too: GET https://shieldz.cash/api/v1/tip-jars?to=0x…&title=Buy+me+a+coffee&amounts=1,5,20&accent=%237c3aed&image=https://you.com/logo.png&website=https://you.com&x=https://x.com/you mints the same white-labeled jar from a single URL, so even a fetch-only tool can do it. Prefer a form? Use the tip jar generator or the payment link generator, no code.
The manage_token resolves to a dashboard with no login. Two shapes from the same URL:
| URL | For |
|---|---|
https://shieldz.cash/a/<token> | Clean semantic HTML, every value carries a data-* attribute an agent can parse. |
https://shieldz.cash/a/<token>.json | Structured JSON: settlement, tip jars, totals, and the full invoice list. |
curl https://shieldz.cash/a/8_ah9oJ4WcvZnJRTDxD-8xSjVUiPYcwA.json
{
"object": "link_account",
"claimed": false,
"email_on_file": true,
"settlement": { "chain": "BASE", "asset": "USDC", "address": "0xYourWallet…" },
"tip_jars": [
{ "slug": "tip-10851092bec481a4", "url": "https://shieldz.cash/tip/tip-10851092bec481a4", "title": "Buy me a coffee" }
],
"totals": {
"currency": "usd",
"paid_count": 1, "paid_amount_usd_cents": 2500,
"pending_count": 1, "pending_amount_usd_cents": 1000,
"invoice_count": 2
},
"invoices": [
{ "id": "I8DrmEZ_pFsmZqknbmZc", "status": "paid", "amount_usd_cents": 2500,
"paid_at": 1750000000000, "pay_url": "https://shieldz.cash/pay/I8DrmEZ_pFsmZqknbmZc" }
]
}
The optional email and the manage_token let an agent hand an account to its human owner. The owner signs in (wallet or email) and claims a full dashboard:
POST /api/v1/links/claim with Authorization: Bearer <session> and body { "manage_token": "…" }.
manage_token is the capability secret. A keyless account's id is derived from the public wallet address, so it is guessable, the token is 192 bits of entropy and is not. Claiming therefore requires the token: no one can take over an account by knowing only the wallet address, and once claimed it cannot be re-claimed by a different login.
Shieldz exposes three tools, create_payment_link, create_tip_jar, and get_account_status, with no API key required. Two ways to connect any MCP client.
Remote (no install), point your client at the hosted Streamable HTTP server at https://shieldz.cash/mcp:
{
"mcpServers": {
"shieldz": { "url": "https://shieldz.cash/mcp" }
}
}
Local (stdio), run the @shieldz/mcp package via npx:
{
"mcpServers": {
"shieldz": {
"command": "npx",
"args": ["-y", "@shieldz/mcp"]
}
}
}
Set SHIELDZ_API_KEY (stdio) to additionally enable full invoice management tools for merchants with an account.
Goose is MCP-native. Click to install the remote server (opens Goose Desktop):
Or from the CLI: run goose configure → Add Extension → Remote Extension (Streamable HTTP) → URL https://shieldz.cash/mcp. No key, no args.
You do not need MCP. Because every endpoint is a plain keyless HTTP call, you can expose Shieldz as a tool to any function-calling model, OpenAI, Anthropic, LangChain, or the Vercel AI SDK, with the same schema. Register the tool, then have your handler POST to /api/v1/links (above):
{
"type": "function",
"function": {
"name": "create_payment_link",
"description": "Create a one-time crypto payment link. Funds settle non-custodially straight to the given wallet. No API key needed.",
"parameters": {
"type": "object",
"properties": {
"address": { "type": "string", "description": "0x EVM wallet address to settle to" },
"amount_usd_cents": { "type": "integer", "description": "Amount in USD cents (100 to 10000000)" },
"chain": { "type": "string", "enum": ["BASE","ARBITRUM","OPTIMISM","POLYGON","ETHEREUM"], "default": "BASE" },
"asset": { "type": "string", "enum": ["USDC","USDT"], "default": "USDC" },
"memo": { "type": "string" }
},
"required": ["address", "amount_usd_cents"]
}
}
}
create_tip_jar and get_account_status follow the same shape. Your tool handler just forwards the arguments to the matching endpoint and returns pay_url / url to the model.
Yes. Shieldz is keyless: an agent POSTs a wallet address and gets back a working payment link, no signup, no API key, no dashboard. Funds settle straight to that wallet.
Non-custodial. Payments settle directly to the address the agent provides; Shieldz never holds funds and there is no platform fee (network gas only). You can verify that yourself.
GET /a/<manage_token>.json returns structured status, totals, and the invoice list, an agent-readable dashboard. There is also a signed webhook for account holders.
Yes, natively. Point any MCP client at https://shieldz.cash/mcp (remote) or run @shieldz/mcp locally. See the overview for AI agents.
Funds are never held by Shieldz, they settle directly to the address you pass. There is no fee on the payment (network gas only). The same payment link and tip jar surfaces work for human checkout, so anything an agent creates is immediately usable by a person. Prefer a full account with API keys, webhooks, and a hosted dashboard? See the developer quickstart.
Machine-readable discovery: llms.txt · openapi.json · apis.json. Related reading: crypto payments for AI agents and the step-by-step how-to.