Sign in

For agents

Toll for agents

The Toll check and the deployer history, as paid API calls an agent can make on its own. Pay per call in USDG on Robinhood Chain, over x402.

On this page

Endpoints

EndpointWhat you getPrice
GET /api/x402/check/{token}The full token check: launch, dev history, holders, liquidity and red flags. The same JSON as /check.$0.05 USDG
GET /api/x402/dev/{wallet}Every launch by one deployer, how many graduated, and how they ended. The same JSON as a deployer page on Toll (see the dev wall).$0.05 USDG

Network eip155:4663 (Robinhood Chain). Asset USDG 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168, 6 decimals, so $0.05 is 50000.

Payments settle through the Priors facilitator; the money goes to Toll’s wallet.

How paying works

  1. Call the endpoint with no payment. You get 402 and what to pay: x402 v2 in the PAYMENT-REQUIRED header, the v1 shape in the body.
  2. Sign a USDG transfer authorization (EIP-3009) for that amount and send it in PAYMENT-SIGNATURE (v2) or X-PAYMENT (v1).
  3. We verify it, read the chain, and only then settle. You get the JSON and a receipt in PAYMENT-RESPONSE and X-PAYMENT-RESPONSE.

You are only charged for an answer. If the read fails you get 503 and nothing is settled. If a coin is new to us and the read is still running, you get 402 with {"pending": true} and a Retry-After: resend the same signed header. Never sign a second payment for the same call.

Every payment, on chain

Still reading the chain. Reload in a moment.

Read from Robinhood Chain: every USDG transfer into Toll's agent wallet 0xdC36…7F40. Anyone can check it on the explorer.

Try it

curl -i https://t0ll.xyz/api/x402/check/<token address>

HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: <base64 JSON, x402 v2: scheme "exact", network "eip155:4663",
                   asset USDG, amount "50000", payTo Toll's wallet>

{"x402Version":1,"error":"Payment required","accepts":[{"scheme":"exact",
 "network":"robinhood","maxAmountRequired":"50000","asset":"0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168", ...}]}

Client example

With @priors/x402, which pays USDG on Robinhood Chain and resends a pending payment for you:

import { ethers } from "ethers";
import { createPayer, robinhood } from "@priors/x402";

const provider = new ethers.JsonRpcProvider(robinhood.rpcUrl);
const signer = new ethers.Wallet(process.env.AGENT_KEY, provider); // holds USDG
const payer = createPayer({ signer, maxPrice: "$0.05" });

const r = await payer.pay("https://t0ll.xyz/api/x402/check/<token address>");
if (r.pending) throw new Error("still reading: resend r.signed.paymentHeaders");
console.log(await r.response.json()); // the check; receipt in PAYMENT-RESPONSE

It also works with wrapFetchWithPayment from @x402/fetch and createUsdgClient from @priors/x402, but that wrapper does not resend a pending payment.

Notes

  • Addresses are 0x followed by 40 hex characters, e.g. 0x0000000000000000000000000000000000000000. Anything else is a 400, before any payment.
  • Machine-readable list: /.well-known/x402 and /llms.txt.
  • Using Claude, ChatGPT, Cursor or another AI app? The same reads are free over MCP: Use Toll in your AI.
  • Information only. Facts read from the chain, not advice.