PROVEN CCTP V2 cross-chain · 30 paths settled on-chain

The independent payment layer for AI agents.

Pay for any API. Get paid for yours. Same endpoint, two rails — Stripe for humans, tools402 for agents. Multi-chain USDC, verifiable on-chain, no lock-in.

159 endpoints 6 chains 9 facilitators 3% take
two rails · one dev

Already on Stripe? Keep it.

Stripe for humans. tools402 for agents. Same endpoint, two payment surfaces.

Stripe (humans)
Your existing Stripe Connect. Cards, Apple Pay, monthly invoices. Your KYC, your dashboard, your dispute flow. We don't touch any of it.
Same endpoint
One upstream URL, two payment surfaces. Same business logic, same code path. Pick the rail per call based on who's knocking — humans get a Stripe checkout link, agents get a 402 quote.
tools402 (agents)
Wallet-only, no KYC, USDC settlement. Wire protocol HTTP 402. Choose your payout chain (Base, Polygon, Arbitrum, Optimism, Avalanche, or Solana) — paid in USDC there; cross-chain via CCTP. Settlement runs daily at 00:00 UTC, in USDC. A balance ≥ 1 USDC is paid at the next run (within 24h). A balance below 1 USDC carries over until it reaches 1 USDC, then it's paid. EIP-712 sign. ~10s onboarding.

We complement Stripe, we don't replace it.

two standards · one bridge

Coinbase x402 + Google AP2. Both live.

The only bridge between the two standards of agent payments. tools402 was wire-protocol-first since day one; AP2 is the mandate layer that wraps it. 3 of 4 AP2 touchpoints live today.

Announced September 2025 with 60 partners — Visa · Mastercard · Stripe · Adyen · Coinbase.

for sellers

Wrap. Price. Get paid.

Any HTTPS endpoint becomes a paid API in ~10s. EIP-712 sign once. Choose your payout chain (Base, Polygon, Arbitrum, Optimism, Avalanche, or Solana) — paid in USDC there; cross-chain handled via CCTP. Settlement runs daily at 00:00 UTC, in USDC. A balance ≥ 1 USDC is paid at the next run (within 24h). A balance below 1 USDC carries over until it reaches 1 USDC, then it's paid. No KYC.

Take rate
3-4%
paywall / proxy
Listing
~10s
EIP-712 sign
Settlement
≥1USDC
00:00 UTC · <1 carries
Identity
Wallet
no KYC
TypeScript 2 calls · viem
// npm i viem — register a seller slug (multi-wallet body, payout_chain set)
import { keccak256, toBytes } from "viem";
import { privateKeyToAccount } from "viem/accounts";

const DOMAIN = { name: "tools402", version: "1", chainId: 8453 } as const;
const TYPES = {
  SellerAction: [
    { name: "wallet", type: "address" },
    { name: "action", type: "string" },
    { name: "payloadHash", type: "bytes32" },
    { name: "timestamp", type: "uint256" },
  ],
} as const;

const SLUG = "your-slug";              // ^[a-z0-9-]{3,32}$
const payoutChain = "base";            // base · polygon · arbitrum · optimism · avalanche · solana
const account = privateKeyToAccount(process.env.KEY as `0x${string}`);
const ts = Math.floor(Date.now() / 1000);

// payout_chain set → hash binds slug:payoutChain (hash and body MUST match)
const payloadHash = keccak256(toBytes(`${SLUG}:${payoutChain}`));

// 1. Sign EIP-712 SellerAction (wallet = primary identity)
const sig = await account.signTypedData({
  domain: DOMAIN, types: TYPES, primaryType: "SellerAction",
  message: { wallet: account.address, action: "register", payloadHash, timestamp: BigInt(ts) },
});

// 2. POST /v1/_seller/register (add solana/polygon to wallets+signatures for multi-chain receive)
// EIP-712 message.wallet = primary_wallet for ALL EVM chains (not the per-chain address)
await fetch("https://api.tools402.dev/v1/_seller/register", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    primary_wallet: account.address,
    wallets: { base: account.address },
    signatures: { base: sig },
    slug: SLUG,
    ts,
    payout_chain: payoutChain,
  }),
});
// → 200 · seller active in ~10s
Platform Take Type Payout
RapidAPI 25% off-chain monthly invoice
tools402 3-4% on-chain daily wallet
8× cheaper
for buyers

HTTP that pays per call.

HTTP 402 + a USDC transfer. No account, no key — your wallet is your identity.

Example cost 1,000 calls/day · medium tier · 30 days
tools402 $22.50/month
Typical stack (Twilio + Clearbit + GPT) $180/month
8× cheaper
bash 3 steps · 402 → settle → retry
# Rail EXACT — you broadcast USDC and pay gas. Needs: foundry (cast), jq, python3.
# Prereq: curl -L https://foundry.paradigm.xyz | bash && foundryup

export USDC=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
export RPC=https://mainnet.base.org
export KEY=$PRIVATE_KEY  # never commit, never paste in clear

ENDPOINT=https://api.tools402.dev/v1/pdf-md

# 1. POST → 402 quote (body JSON)
RESP=$(curl -si -X POST "$ENDPOINT" -F "file=@doc.pdf")
BODY=$(echo "$RESP" | awk 'BEGIN{b=0} /^\r?$/{b=1;next} b{print}')
QUOTE=$(echo "$BODY" | jq '.accepts[] | select(.network=="base" and .scheme=="exact")')
RECIPIENT=$(echo "$QUOTE" | jq -r .payTo)
AMOUNT=$(echo "$QUOTE" | jq -r .maxAmountRequired)
ASSET=$(echo "$QUOTE" | jq -r .asset)

# 2. Settle USDC on-chain (you pay gas)
TX_HASH=$(cast send $USDC "transfer(address,uint256)" \
  $RECIPIENT $AMOUNT \
  --private-key $KEY --rpc-url $RPC)
FROM=$(cast wallet address --private-key $KEY)

# X-Payment is base64url(JSON) — encode it:
X_PAYMENT=$(TX_HASH="$TX_HASH" FROM="$FROM" RECIPIENT="$RECIPIENT" \
  AMOUNT="$AMOUNT" ASSET="$ASSET" python3 -c "
import json, base64, os
p = {'x402Version': 1, 'scheme': 'exact', 'network': 'base',
     'payload': {'txHash': os.environ['TX_HASH'], 'from': os.environ['FROM'],
                 'to': os.environ['RECIPIENT'], 'amount': os.environ['AMOUNT'],
                 'asset': os.environ['ASSET']}}
print(base64.urlsafe_b64encode(json.dumps(p).encode()).decode().rstrip('='))
")

# 3. Retry with X-Payment header
curl -X POST "$ENDPOINT" \
  -F "file=@doc.pdf" \
  -H "X-Payment: $X_PAYMENT"
# → 200 OK · markdown returned

# ─────────────────────────────────────────────
# Rail GASLESS (EIP-3009) — Base — scheme "transfer-with-authorization"
# Sign offline (see https://tools402.dev/docs/integrations#session-token), then:
curl -X POST "$ENDPOINT" \
  -F "file=@doc.pdf" \
  -H "X-Session-Token: $TOOLS402_SESSION_TOKEN"
# Token chain field must be "base" · tools402 pays gas

# ─────────────────────────────────────────────
# Rail GASLESS (EIP-3009) — Polygon — scheme "transfer-with-authorization"
# Sign offline (see https://tools402.dev/docs/integrations#session-token), then:
curl -X POST "$ENDPOINT" \
  -F "file=@doc.pdf" \
  -H "X-Session-Token: $TOOLS402_SESSION_TOKEN"
# Token chain field must be "polygon" · tools402 pays gas

# ─────────────────────────────────────────────
# Rail GASLESS (spl-transfer) — Solana — see integrations #curl for full walkthrough
# Scheme "spl-transfer" · network "solana" · X-Payment header
moat · multi-facilitator

Never goes silent.

Buyers pay across 3 chains, 9 facilitators. Sellers settle across 6.

Probes / week
451669
Uptime
99.17%
p50
6ms
p95
113ms
p99
236ms

9 facilitators · 3 per chain · sub-500ms failover · 1,649 tests / 0 fail · Sentry 22 metrics

Cross-chain · CCTP V2

Pay on one chain. Settle on another.

Cross-chain settlement live via CCTP V2. Atomic, ~15s, zero protocol fee, zero inventory. 30 cross-chain settlement paths · CCTP V2 across 6 chains.

Live · proven Base→Solana on-chain today.

Proven on-chain

settlement · CCTP V2 · Base → Solana

Settlement flow

Burn on sourceBase
Attestation~15s
Mint on destSolana
Seller creditedUSDC

            
Multi-chain guide

Positioning

Independent by design.

A chain's own marketplace keeps value on its chain. We don't. Route payments wherever they need to go — across any catalog, any chain. We're not aligned to one network; we're aligned to you.

Not a chain marketplace. A neutral payment layer agents can route through.

Proof

Verify everything.

Every transaction is on-chain and queryable: 159 endpoints, real-time facilitator health, signed events.

Open /proof

Ship your endpoint. Pay your agent. Same rail.

Wire your agent in five minutes. Publish your API in ten seconds.