{
  "name": "Toll",
  "description": "Safety checks for agents on Robinhood Chain (4663): who is behind a coin, one decision before a buy (BLOCK / WARN / ALLOW / WAIT), a launcher's record, the pre-sign check before signing, ERC-8004 agents, Uniswap v4 hooks, and Robinhood Stock Token data with its sources. Facts read from the chain, not advice. Send a token address in text (add \"should I buy\" for one decision), or a data part {\"skill\": <id>, \"input\": {...}}.",
  "supportedInterfaces": [
    {
      "url": "https://t0ll.xyz/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://t0ll.xyz/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "version": "1.0.4",
  "provider": {
    "organization": "Toll",
    "url": "https://t0ll.xyz"
  },
  "documentationUrl": "https://t0ll.xyz/agents",
  "iconUrl": "https://t0ll.xyz/apple-icon.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain"
  ],
  "skills": [
    {
      "id": "check_coin",
      "name": "Check a coin",
      "description": "Use it when someone asks \"is this a rug?\", \"who made this coin?\", \"was it sniped or bundled?\" or \"can the dev pull the liquidity?\" about a token address. Check one token on Robinhood Chain from the chain itself: who is behind it and how it launched. On Robinhood Chain: where and when it launched, the maker (dev) and its launch record, snipers in the first 3 seconds, wallets the launch made exempt from tax (bundles), flagged wallets, what the maker holds and sold, burned supply, the curve or pool. Toll's findings are tallied as against / careful / clear. On Robinhood Chain a Verdict line (AGAINST / CAREFUL / CLEAR / INCOMPLETE) sits above the tally: INCOMPLETE means some part was not read yet (never read it as clear) and says when to call again. The answer's first line names the chain. Reads Robinhood Chain (4663).",
      "tags": [
        "coin",
        "rug-check",
        "robinhood-chain"
      ]
    },
    {
      "id": "pre_buy_check",
      "name": "Gate before a buy",
      "description": "Use it when someone is about to buy a coin and asks \"should I buy this?\" or \"should I ape this?\": Toll answers with facts, not advice. One call before buying a coin on Robinhood Chain: Toll reads the coin (the same read as check_coin, counted in the same free coins) and answers Decision: BLOCK / WARN / ALLOW / WAIT with up to 3 reasons, most severe first, on the calibrated rules check_tx uses (BLOCK = a finding whose coins rugged at 40% or more within 24 h in Toll's calibration, or sells that fail). WAIT means part of the coin is still being read: call again after the seconds given. Facts, not advice; ALLOW means nothing against was found in what was read, never a promise. Robinhood Chain only.",
      "tags": [
        "coin",
        "trading",
        "gate",
        "robinhood-chain"
      ]
    },
    {
      "id": "check_coins",
      "name": "Many coins at once",
      "description": "Up to 20 Robinhood Chain coins in one call, answered only from checks Toll already holds (read in the last 24 h): for each coin the verdict word (AGAINST / CAREFUL / CLEAR / INCOMPLETE) with its tally and how old the read is, or \"not read yet\". Reads nothing new and uses no free coin. For a coin not read yet, call check_coin or pre_buy_check.",
      "tags": [
        "coin",
        "batch",
        "robinhood-chain"
      ]
    },
    {
      "id": "larp_check",
      "name": "LARP check",
      "description": "LARP check: is there a real product behind a coin on Robinhood Chain? Toll reads the coin's own site, launch post and code README, lists each thing it says it offers, and checks every claim against the chain and against its working parts that Toll tries itself (app page, API, MCP server, x402 payments, Chrome extension, Telegram bot, public code). Answers the label (product found / partly found / not found / not read: what we could check, never a verdict), each claim with found / partly / not found and the line that shows it, and the working parts that answered. A coin nobody asked about yet is queued and read within minutes: the answer says how many seconds to wait before calling again. Free: 10 new coins a day per caller, coins already read are always free.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "dev_record",
      "name": "Deployer record",
      "description": "Every coin one wallet launched on Robinhood Chain. On Robinhood Chain (Pons and Long launchpads): how many, how many graduated from the bonding curve, whether the dev sold, and the latest launches with how each ended. Reads Robinhood Chain.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "wallet_privacy",
      "name": "Wallet privacy check",
      "description": "What anyone can learn about a wallet from Robinhood Chain alone: a privacy grade (A to F), a score out of 100, and each leak found (who funded it, linked wallets, holdings, active hours, launches, trading record, linked accounts) with tips. The grade measures what anyone can see, not whether the wallet is good or bad. Robinhood Chain only.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "wallet_approvals",
      "name": "Wallet approvals",
      "description": "A wallet's live token approvals on Robinhood Chain: ERC-20 allowances, NFT approval-for-all and Permit2 allowances, newest first (at most 200, with how many more). Each one: the token, the spender (plain wallet or contract, and its name when Toll knows it), the amount (unlimited flagged), a risk (high / medium / low), and the revoke transaction (to, data, value 0) with check_tx's answer on it. Revoked, zero and expired allowances are left out. Facts read from the chain, not advice.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "fresh_launches",
      "name": "Newest coins",
      "description": "The newest coins launched on Robinhood Chain, newest first, from Toll's live engine: launchpad, age, pair, and the engine's short notes on each (dev record, first buyers, buyers, curve), with a link to the full check. At most 20. Robinhood Chain only.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "chain_pulse",
      "name": "Chain pulse",
      "description": "How busy Robinhood Chain is right now, as Toll's live engine counts it: launches in the last 5 minutes and hour, graduations, launches by launchpad, new pools, trades a minute and volume. Robinhood Chain only.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "launch_record",
      "name": "Call at launch",
      "description": "The call Toll made a few minutes after a Robinhood Chain coin launched, frozen and never edited: against / careful / clear (or launch facts only), the findings tallied, why, the dev's and funder's other coins of the week, and how it ended 24 hours later. Not the coin now: use check_coin for that. Robinhood Chain only.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "check_agent",
      "name": "Check an agent",
      "description": "One ERC-8004 agent registered on Robinhood Chain (identity registry 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432), by its agent id: whether its registration card loads and from which host, its class (real service / site only / card only / broken card), whether its MCP server answered an initialize call, whether its x402 endpoint answered 402 with payment terms and who it pays, whether that payTo is the registered agentWallet, whether the agent's wallet has sent a transaction, when it was last checked and what changed; read live by the id: its reviews in the ERC-8004 reputation registry (count, wallets, average score), its requests in the ERC-8004 validation registry, and whether its card declares a human behind it (the card's claim, not verified). Plain facts from Toll's agent census, with the date and the source they were read from (the live census, or the 2026-10-28 snapshot), never a verdict. Robinhood Chain only.",
      "tags": [
        "erc-8004",
        "agent"
      ]
    },
    {
      "id": "find_paid_api",
      "name": "Find a paid API",
      "description": "Paid APIs (x402) an agent can buy on Robinhood Chain, by what you need (for example \"weather\", \"stock quotes\", \"BV-7X\", or empty for all): each with its resource URL, price, payTo, whether that payTo is the agent wallet its ERC-8004 identity registered (verified, ERC-8478) and how many payments it settled through Toll's x402 facilitator; verified first, one row per operator unless the query names it. From the agent census's x402 endpoints and resources settled through Toll with the x402 bazaar extension. Facts, not a recommendation: verified does not say the seller delivers. Robinhood Chain only.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "check_hook",
      "name": "Check a hook",
      "description": "One Uniswap v4 hook on Robinhood Chain, by its contract address: its name and where the name was read (the contract's own getter, Blockscout or Sourcify), whether it is a launchpad's shared hook, its 14 permission bits in plain words (runs on every trade, can take a fee or tax, can act when liquidity is removed...), whether its code can be changed by its owner (EIP-1967 proxy) or is a fixed clone, how many pools use it in Toll's chain data, and whether a test sell through its newest pool reverted (sells fail). With a $TOLL holder's Toll key: also the measured buy and sell cut in % and its latest coins with how each ended (the launch record, scored 24 h after launch). Facts, never a verdict. Robinhood Chain only.",
      "tags": [
        "uniswap-v4",
        "hook"
      ]
    },
    {
      "id": "check_tx",
      "name": "Check before signing",
      "description": "Pre-sign check, before an agent signs anything on Robinhood Chain (chain id 4663): send the transaction (to, data, value, and from), a message to sign (message: {kind: personal_sign | eth_sign, data, origin?}), an EIP-712 signature request (typedData), an ERC-4337 user operation (userOp, with entryPoint), a type-4 authorizationList (alone or with the transaction), the wallet request as the agent would send it (rpc: {method, params} for personal_sign, eth_sign, eth_signTypedData_v4 or eth_sendTransaction), or an x402 payment (x402: the PaymentRequired from the 402, or one accepts entry; agentId optional), and Toll answers ALLOW / WARN / BLOCK with the reasons, as an ERC-8265 RiskAssessment. It reads approvals (unlimited, to a plain wallet, to a contract we do not know, to a wallet the coin's own check names), transfers (to a burn address, the token itself, a router, a flagged wallet, an unknown contract), swaps (the router, who it pays out to, and the coin bought, through Toll's coin check: BLOCK only for findings whose coins rugged at 40% or more in our calibration; a single-pool Uniswap v4 swap off the coin's main pool is quoted on the main pool, WARN when that pays more than 3% more), Uniswap v4 position manager calls (modifyLiquidities, its multicall, initializePool, permit: liquidity paid out or a position minted to anyone but from is a warning), and x402 payments (ERC-8478 payee verification: payTo against the seller's ERC-8004 agent wallet or a payee delegation it signed, read live from the Robinhood Chain or Base identity registry, with the outcome in x-toll; the seller's last delivery spot-check, the asset and amount; an upto payment's signed maximum, which the seller may charge in full; an auth-capture payment's escrow, token collector and hold). The coin bought's name and symbol, and every text field of EIP-712 typed data (domain name and version, message strings), are scanned for instructions aimed at AI agents. Calldata it cannot read is never ALLOW: WARN, high when it sends ETH, and BLOCK at 0.05 ETH or more, or any ETH to an address with no code. It reads personal_sign and eth_sign messages (Sign-In with Ethereum included: domain against origin, expiry; eth_sign of a hash is BLOCK), any EIP-712 typed data (Permit, Permit2, EIP-3009, Seaport, UniswapX, and any other named field by field), ERC-4337 user operations (the account's calls, the EntryPoint, the paymaster), and multicall, Safe and smart-account batches leaf by leaf, each warning with its path. For a signature it says what it lets someone take: the amount signed, the owner's balance and what the spender could take now, simulated at the current block (in USD where Toll has a price). An EIP-7702 delegation (a type-4 authorizationList or a signAuthorization alone) to a delegate Toll has verified by code hash is WARN; any other is BLOCK, each delegate and chain named. A coin still being read is WARN with the seconds to wait. It simulates the transaction at the current block (balance changes, approvals, revert) and can compare it with an optional intent ({action: swap|transfer|approve|pay, sellToken, sellAmount in base units, buyToken, minBuy, to, spender, maxAmount, tolerancePct}). A failed simulation is reported as not read, never ALLOW; a transaction without from cannot be simulated and is WARN. Add ticket: true to get a signed single-use ALLOW ticket (60 s, never for a BLOCK) that a contract can require before it runs this exact call. Robinhood Chain only. Facts, not advice.",
      "tags": [
        "pre-sign",
        "wallet",
        "erc-8265"
      ]
    },
    {
      "id": "presign_risk_report",
      "name": "Pre-sign risk report",
      "description": "Agent Pre-Sign Risk Report (ERC draft, ethereum/ERCs PR #2134): send a PresignRequest {version: \"erc-presign/1\", subject: {type: \"calls\", chainId: \"eip155:4663\", from: \"eip155:4663:0x...\", calls: [{to, value, data}], typedData?, authorizationList?}, context?: {payment?, texts?, tokens?}} and get a PresignReport: typed facts about the unsigned request on Robinhood Chain, each read or not read at one pinned block (approval amount, unlimited, share of supply, expiry, current allowance; address code; issuer listing of stock tokens; ERC-8470 launch observations; ERC-8478 payee binding; control characters, mixed scripts, addresses and injection classes (from our published pattern set) in text), bound to the request by digest and EIP-712 signed by Toll (ERC-8004 agent #20030). No verdict: apply your own policy, and treat not read as unknown, never as clean. For an ALLOW / WARN / BLOCK answer use check_tx (which carries this report too).",
      "tags": [
        "pre-sign",
        "erc"
      ]
    },
    {
      "id": "stock_token",
      "name": "Stock token",
      "description": "One Robinhood Stock Token (a tokenized security: debt issued by Robinhood Assets (Jersey) Ltd, not a share) on Robinhood Chain, by its ticker (NVDA, AAPL) or its token contract: Robinhood's listing (company, contract, shares per token and any announced change), Chainlink's reference price read on chain with its age and the US session (stale only past the feed's heartbeat while a session is open), the price in the token's deepest pool priced from the chain and its venue (Uniswap v3 or v4) with its liquidity, the difference vs the reference in percent (while the US market is closed: \"market closed since <time>\" and the pool vs the last close reference, past 5% named as not backed by a live market), the token's ERC-8056 multiplier read on chain (\"1 token = N shares since <date>\"), supply in shares, whether its oracle is paused, Robinhood's corporate actions (dividends, splits), and the company from SEC EDGAR (CIK, industry, exchange, latest 10-K / 10-Q / 8-K with links). Every number with its source and time; anything not read says so. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "stock_tokens",
      "name": "Stock tokens",
      "description": "The Stock Tokens Robinhood lists on Robinhood Chain (about 200): ticker, issuer's name, contract, Chainlink's reference price (or no feed) and its status, with how many have a feed, how many have SEC filings and how many corporate actions fall this month. Pass query (a ticker or part of a company name) to filter, limit for how many. For one token in full use stock_token.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "fundamentals",
      "name": "Company fundamentals",
      "description": "The company numbers behind one Robinhood Stock Token on Robinhood Chain, from SEC EDGAR XBRL filings, by ticker (AAPL) or token contract: revenue, gross profit, operating income, net income, EPS (diluted and basic), operating cash flow, capital expenditure and free cash flow for TTM (four contiguous quarters, \"TTM to <end>\"), the last 4 fiscal years or the last 8 quarters (period: ttm, annual or quarterly); margins; year-on-year growth; the latest balance sheet; shares outstanding with its date; the last 8 quarters of revenue and diluted EPS with YoY; and market cap and P/E at the Chainlink reference only when one share count, the multiplier and a current reference allow it (otherwise the reason). Values a filing does not state are labelled derived; EPS is never added up across quarters. Funds and foreign filers say so. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "insider_trades",
      "name": "Insider trades",
      "description": "Insider trades at the company behind one Robinhood Stock Token on Robinhood Chain, from SEC Form 4 filings of the last 90 days (the newest 40 at most; the window covered is stated): who (owner and relationship), the date, the transaction code in words, shares (signed by acquired or disposed), price (or \"see footnote\"), shares owned after, the Rule 10b5-1 flag and the filing link; a 4/A replaces its original; purchase and sale totals (codes P and S); plus the latest Schedule 13D/G filings naming the company. limit: rows to list (1 to 100, default 15). Foreign filers file no Form 4. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "institutions",
      "name": "Institutional holders (13F)",
      "description": "Institutional holders of the company behind one Robinhood Stock Token on Robinhood Chain, from SEC's quarterly Form 13F data sets, by ticker (NVDA) or token contract: the top investment managers by shares for the latest quarter (limit: 1 to 20, default 10), each with its change vs the prior quarter (only managers that filed both quarters; one new this quarter says so), total institutional shares, the number of filers and the change over the managers present in both quarters. Puts and calls are left out; amendments are applied; a value that looks filed in thousands is flagged. Every answer starts with \"13F for the quarter ended <date>, SEC data set published <date>\". Funds and foreign issuers are not covered; a ticker without a reviewed CUSIP says 13F not mapped. 13F shares are the company's shares, not the Stock Token. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "guidance",
      "name": "Earnings release guidance and KPIs",
      "description": "What the company behind one Robinhood Stock Token on Robinhood Chain said in its last 4 earnings releases (SEC 8-K Item 2.02, the press release exhibit), by ticker (NVDA) or token contract, AI-extracted from cited filings: forward guidance (a range low to high, a single figure, or words only), company KPIs, non-GAAP measures and the GAAP lines they are reconciled from, each with its period, its quote from the filing (at most 300 characters) and the filing link. A model picked each value's sentence or table cell; the number was read from that quote by code, never written by the model; figures the code could not read, and GAAP lines that disagree with the company's XBRL facts, were dropped. Read once per release (never per question). limit: values per release (1 to 60, default 25). Funds and foreign issuers (6-K) are not covered. Quotes are the company's words. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "macro",
      "name": "US macro figures",
      "description": "US macro figures for agents reading Robinhood Stock Tokens on Robinhood Chain, from public primary sources, each with its date: the Treasury daily par yield curve (1 month to 30 years), the New York Fed's effective federal funds rate with its target range, and from BLS the CPI-U change year on year, the unemployment rate and the monthly change in nonfarm payrolls (P = preliminary). No input. The EFFR is subject to the Terms of Use posted at newyorkfed.org; Toll is not affiliated with the New York Fed.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "stock_events",
      "name": "Stock token events",
      "description": "What changed on Robinhood's Stock Tokens on Robinhood Chain, oldest first: listed / delisted, multiplier_scheduled / multiplier_applied, corporate_action (status changes), feed_stale / feed_paused / feed_resumed (a Chainlink stock feed past its heartbeat while a session is open, or the token's oracle paused), and filing (SEC 8-K, 10-Q, 10-K, Form 4, Schedule 13D/G, by acceptance time). Each event has its id, source time (at, with what that time is) and when Toll found it. Pass since (the last answer's next) to get only newer events, kind to filter, limit (1 to 100). With a Toll key: Team (20M+ $TOLL) live, Pro (5M+) 15 minutes late; without one, the last 10 events found an hour ago or more, free. Funds and tickers with no SEC CIK get no filing events. Facts, not advice.",
      "tags": [
        "stocks",
        "markets",
        "robinhood-chain"
      ]
    },
    {
      "id": "watch_coin",
      "name": "Watch a coin (webhook)",
      "description": "Watch one Robinhood Chain coin for your agent: Toll re-reads it about every 10 minutes, and sooner after a trade or liquidity change (with more watched coins it takes longer), and POSTs a signed JSON event to your https url when its verdict word changes, a new finding against appears (liquidity pulled, wallets dumping together), or the dev's or a launch wallet group's sold share rises 5 points or more (dev_sold, cluster_sold). The first read sends nothing. Answers the watch id and, the first time, the secret that signs every event (x-toll-signature: sha256=<hex HMAC-SHA256(secret, raw body)>). Needs a Toll key; the cap is your tier's (3 / 20 / 50 / 100 by $TOLL held). Facts, not advice.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "my_watches",
      "name": "My watches",
      "description": "The coins and the wallets your Toll key's wallet watches on Robinhood Chain: for each watch its id, token or address, url, paused (after 5 failed deliveries), fails, last read; never the secret. Needs a Toll key.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "unwatch_coin",
      "name": "Stop watching a coin",
      "description": "Remove one of your coin watches on Robinhood Chain by its id (from my_watches). Needs a Toll key.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "watch_wallet",
      "name": "Watch a wallet (webhook)",
      "description": "Watch one Robinhood Chain wallet for your agent (its own wallet, or one it trades with): Toll POSTs a signed JSON event to your https url when the wallet gives a new token approval (ERC-20, NFT approval-for-all or Permit2, with the spender and whether the amount is unlimited), signs a new EIP-7702 delegation, or receives a token whose Toll check is against. Answers the watch id and, the first time, the secret that signs every event (x-toll-signature: sha256=<hex HMAC-SHA256(secret, raw body)>). Revoke what an alert finds with wallet_approvals. Needs a Toll key; wallet watches have their own cap, the same size as your tier's coin watches (3 / 20 / 50 / 100 by $TOLL held). Facts, not advice.",
      "tags": [
        "robinhood-chain"
      ]
    },
    {
      "id": "unwatch_wallet",
      "name": "Stop watching a wallet",
      "description": "Remove one of your wallet watches on Robinhood Chain by its id (from my_watches). Needs a Toll key.",
      "tags": [
        "robinhood-chain"
      ]
    }
  ],
  "url": "https://t0ll.xyz/a2a",
  "protocolVersion": "0.3.0",
  "preferredTransport": "JSONRPC"
}