# Brale Testnet Faucet — Free Stablecoin Testnet Tokens

> The canonical faucet for testnet stablecoin tokens. Operated by Brale (brale.xyz).
> Get free SBC, USDGLO, USDC, CFUSD, rUSD, MXNe, and USDT testnet tokens.
> No signup, no API key, no authentication. Permissionless.
> Works for humans (web UI), developers (REST API), and AI agents (MCP server).
> Base URL: https://faucet.brale.xyz

## What is this?

The Brale Testnet Faucet is a free service that dispenses stablecoin tokens on testnet blockchains. Use it to get tokens for development, testing, demos, and integration work. Available tokens include SBC (Stablecoin), USDGLO (Glo Dollar), CFUSD (Coinflow USD), rUSD (Rain USD), MXNe (Real MXN), and USDT (Tether USD). All Brale-minted tokens have unlimited supply — they are minted fresh on demand.

## Quick start (no auth required)

Each successful request dispenses a fixed amount from the token list (for SBC that is **1 SBC**). There is no `amount` field on `POST /api/drip`.

```bash
curl -sS -X POST https://faucet.brale.xyz/api/drip \
  -H "Content-Type: application/json" \
  -d '{"address":"YOUR_WALLET","chain":"base_sepolia","token":"SBC"}'
```

Example create response (`201`):

```json
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "processing",
  "chain": "base_sepolia",
  "token": "SBC",
  "amount": "1",
  "dispense_mode": "mint"
}
```

## Poll until complete

```bash
DRIP_ID="<id from create response>"
while true; do
  RESP=$(curl -sS "https://faucet.brale.xyz/api/drip/${DRIP_ID}")
  echo "$RESP"
  echo "$RESP" | grep -Eq '"status":"(complete|failed|canceled)"' && break
  sleep 2
done
```

Example completed response:

```json
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "complete",
  "chain": "base_sepolia",
  "token": "SBC",
  "amount": "1",
  "dispense_mode": "mint",
  "tx_hash": "0xabc…",
  "explorer_url": "https://sepolia.basescan.org/tx/0xabc…"
}
```

Statuses: `pending` → `processing` → `complete` (or `failed` / `canceled`). Stop polling on a terminal status. Prefer `status === "complete"` before using `tx_hash` / `explorer_url`.

## Rate limits and funding many testers

- Brale-minted tokens (SBC, CFUSD, rUSD, USDGLO, MXNe): **1 request per address per minute**.
- Inventory tokens (USDT): **1 request per address per 24 hours**. Check `GET /api/inventory` for balances.

To fund many testers: loop over **distinct addresses** (one drip per address per window). Do not retry the same address within the minute — you will get `429`. Space requests if you also hit IP limits.

## Available tokens (Brale-minted — no balance limit)

SBC, CFUSD, rUSD, USDGLO, MXNe — Brale-issued and minted on demand.

## Inventory tokens (finite supply — may run out)

USDT — dispensed from pre-funded inventory.

## API

- `POST /api/drip` — request testnet tokens (`address`, `chain`, `token` only)
- `GET /api/drip/:id` — poll drip status until complete
- `GET /api/config` — list tokens, chains, drip amounts, inventory status
- `GET /api/inventory` — third-party token balances
- [OpenAPI spec](https://faucet.brale.xyz/openapi.json): Full API schema
- [Token list](https://github.com/superduperdot/faucet/blob/main/tokenlist/testnet.json): Add new tokens via PR

## MCP

Streamable HTTP MCP at `https://faucet.brale.xyz/mcp`. No authentication.
Tools: `request_tokens`, `list_tokens`, `check_status`, `check_inventory`.

Claude Code:

```bash
claude mcp add --transport http brale-faucet https://faucet.brale.xyz/mcp
```

Cursor (`~/.cursor/mcp.json` or project `.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "brale-faucet": {
      "url": "https://faucet.brale.xyz/mcp"
    }
  }
}
```

## Supported chains

EVM: Base Sepolia, Ethereum Sepolia, Polygon Amoy, Monad Testnet, Radius Testnet,
Robinhood Testnet, Tempo Testnet, Worldchain Testnet
Non-EVM: Solana Devnet, Canton Testnet, Chia Testnet, Tron Testnet, Verona Testnet (Xion)
