For agents · live today · x402
TickTape is an independent pre-flight for Polymarket: OK / CAUTION / VETO on live orders, COPY / WATCH / VETO on wallets — always with reasons and numbers, never a number we did not compute. No custody, no execution. Paid by the agent requesting the verdict — not by the venue routing the trade. No account or issued API key: live calls are paid from the first request — plain HTTP 402 and USDC on Base, or an optional prepaid bearer token. Test everything free in the deterministic sandbox.
Machine spec: /llms.txt · OpenAPI: /openapi.json · Machine manifest: /agent.json · SDK: npm i ticktape · skill: npx skills add padak/ticktape-skills · OpenClaw: npx clawhub install polymarket-preflight
A real paid call, end to end — the whole "account setup":
agent › GET /api/preflight_trade?slug=btc-up-or-down-15m&outcome=Up&side=BUY&usd=500
ticktape › HTTP/1.1 402 Payment Required PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi4uLg== // $0.02 USDC on Base, decoded from the header
agent › GET /api/preflight_trade?… + PAYMENT-SIGNATURE: eyJzaWduYXR1cmUi4oCmLg==
ticktape › HTTP/1.1 200 OK PAYMENT-RESPONSE: eyJzZXR0bGVtZW50IjrigKY= { verdict: VETO · reason: "expected slippage exceeds your veto threshold; resting depth sits at the extremes; taker fee peaks exactly where this order is priced" · paid: { price_paid_usdc: "0.02", receipt: basescan.org/tx/… } }
agent › Skipping. 98% of these 15-minute windows flash a sub-$1.00 "arbitrage" with a median lifetime of 1 ms (43,297 episodes replayed) — the 2-cent verdict prevented a potentially poor $500 exposure.
Integration · pick your lane
Same verdicts, two transports — pick the one your runtime can actually pay with.
If your agent holds a Base wallet, it calls the REST endpoints directly and pays per request via x402, autonomously — the 402 flow below. No prepaid anything required. Auth details: auth.md.
Claude and other plain MCP clients connect to https://ticktape.cc/mcp. Sandbox tools are free; live calls need a prepaid credits bearer token in the Authorization header, because a plain MCP client cannot execute the x402 payment flow itself. Buyer-side x402 MCP bridges (e.g. Coinbase's x402 MCP integration) can pay per call.
Payment · live now
No signup, no issued API key, no dashboard visit — the only optional credential is a prepaid credits bearer token. Live calls are paid from the first request: the API answers 402 Payment Required with machine-readable payment requirements (x402 v2), your agent pays $0.02 in USDC on Base, and retries. Settlement runs through the Coinbase CDP facilitator, synchronously. Wiring and tests are free in the deterministic sandbox.
# 1 — call the endpoint (any live call) GET /api/preflight_trade?slug=fed-decision-in-september&outcome=Cut&side=BUY&usd=250 HTTP/1.1 Host: ticktape.cc # 2 — the 402: payment requirements ride in a base64 response header (x402 v2) HTTP/1.1 402 Payment Required PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MiwiYWNjZXB0cyI6W3sic2NoZW1lIjoiZXhhY3QiLC4uLg== # decoded: scheme "exact" · $0.02 · asset USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 # network eip155:8453 (Base) · payTo 0xb28bcb21a054ffeeb6ce62d0f1bb0175c022d2c6 # 3 — the agent signs a USDC transfer authorization for the quoted amount and retries GET /api/preflight_trade?slug=fed-decision-in-september&outcome=Cut&side=BUY&usd=250 HTTP/1.1 Host: ticktape.cc PAYMENT-SIGNATURE: eyJzaWduYXR1cmUiOiIweGFiYzEyMy4uLiIsLi4ufQ== # 4 — paid response: settlement result in a header, verdict + receipt in the body HTTP/1.1 200 OK PAYMENT-RESPONSE: eyJzdWNjZXNzIjp0cnVlLCJ0eEhhc2giOiIweC4uLiJ9 { "verdict": "CAUTION", "reasons": ["expected slippage 1.4c exceeds max_slippage_c=1.0", "..."], "numbers": { "expected_vwap": "...", "taker_fee_usd": "...", "safe_size_usd": "..." }, "paid": { "price_paid_usdc": "0.02", "receipt": "https://basescan.org/tx/0x…" // every paid call links its on-chain settlement } }
The stack is dual: x402 v2 (headers, above) is primary, and the older v1 flow — 402 with an accepts[] JSON body, retry with an X-PAYMENT request header, network "base" — is accepted on every paid endpoint.
Retrying with the same payment authorization returns the cached response. A network timeout after payment cannot cost you a second $0.02 — reuse the authorization, get the same body back.
Append x402_probe=1 to any paid endpoint to see the exact payment requirements without paying — useful for verifying payTo and price in code before enabling payments.
Latency, honestly: a per-call x402 payment settles on-chain, which adds roughly 2–5 seconds per paid call — longer in congestion tails. If your agent checks more than a handful of orders, buy credits once and skip the per-call settlement entirely:
| Path | Cost | Latency |
|---|---|---|
| Sandbox (?sandbox=1) | $0 — unlimited, deterministic | ~0.4 s |
| Per-call x402 | $0.02 per call, settled on-chain | ~2–5 s per call (congestion tails longer) |
| Credits + Bearer | 1 credit ≈ $0.01 at the base pack | ~0.4 s |
The fast lane · live now
One x402 payment of $5 USDC to POST /api/credits buys 500 credits and returns a bearer token. Calls authenticated with the token skip per-call settlement — back to ~0.4 s responses.
# one $5 x402 payment (same 402 dance as above, just once) POST /api/credits HTTP/1.1 Host: ticktape.cc HTTP/1.1 200 OK { "credits_added": 500, "balance": 500, "token": "tk_0xYourWallet_…", // treat as a secret; last 5 tokens per wallet stay valid "expires": "2027-07-13T00:00:00Z" // credits are valid 12 months } # then: bearer auth on any paid endpoint — no settlement, ~0.4s GET /api/preflight_trade?slug=…&outcome=…&side=BUY&usd=250 HTTP/1.1 Host: ticktape.cc Authorization: Bearer tk_0xYourWallet_…
| Endpoint | Credits | Per-call x402 |
|---|---|---|
| /api/preflight_trade | 1 credit | $0.02 |
| /api/leaderboard | 1 credit | $0.02 |
| /api/red_list | 1 credit | $0.02 |
| /api/preflight_copy | 5 credits | $0.10 |
The credit pack is $5 = 500 credits — half the per-call price, and bearer-authenticated calls answer in ~0.4 s because they skip per-call on-chain settlement entirely.
The token format is tk_<wallet>_<secret> — treat it like a secret. Your last 5 tokens per wallet stay valid, so rotation never locks you out mid-run. Credits are valid for 12 months.
Endpoint reference · all live
Verdicts are deterministic arithmetic on the live CLOB book plus Polymarket's published 2026 taker-fee schedule (fee/share = rate × p × (1−p)). No model, no prediction — the only uncertainty is the book changing between check and fill.
GET /api/preflight_trade
"Will this order actually fill at a sane price?"
Returns OK / CAUTION / VETO with expected VWAP, slippage, visible depth, fee drag and a safe size — before the order goes out. GET or POST.
| Param | Default | Meaning |
|---|---|---|
| slug + outcome | required* | market slug + outcome name; polymarket.com/event/<slug> URLs work; a wrong outcome returns the candidate list |
| token_id | — | *alternative to slug+outcome: CLOB token id |
| side | BUY | BUY or SELL |
| usd | 100 | order size in USD |
| max_slippage_c | 1.0 | threshold override: CAUTION above this many cents |
| veto_slippage_c | 3.0 | threshold override: VETO above this many cents |
| max_book_age_s | 60 | threshold override: max acceptable book age |
| sandbox=1 | — | free deterministic example — never rate-limited, never charged |
| x402_probe=1 | — | show payment requirements without paying |
// response shape (values illustrative — ?sandbox=1 returns the canonical example) { "verdict": "CAUTION", "reasons": [ "expected slippage 1.4c exceeds max_slippage_c=1.0", "order is 18% of visible depth on the BUY side" ], "numbers": { "best_price": 0.62, "expected_vwap": 0.634, "expected_slippage_cents": 1.4, "visible_depth_usd": 2760, "order_vs_depth_pct": 18.1, "taker_fee_usd": 3.94, "fee_drag_cents_per_share": 0.5, "fee_category": "mid-price — near the fee peak", "safe_size_usd": 210, "book_age_seconds": 3 }, "meta": { "thresholds": { "max_slippage_c": 1.0, "veto_slippage_c": 3.0, "max_book_age_s": 60 }, "method": "deterministic arithmetic on the live CLOB book + 2026 taker-fee schedule" } }
1 credit · $0.02 per call · free sandbox
GET /api/leaderboard
"Which wallets are worth copying — by measurement, not fame?"
Machine JSON of wallets rated COPY or WATCH, with fee-inclusive ROI, out-of-sample validation and reasons. Behind it: 621,022 wallets on the tape → 55,900 selective → 24 audited → 6 positive fee-inclusive → 3 survived OOS.
{
"ok": true,
"computed_at": "2026-07-13",
"window": "2026-06-12..2026-07-11 (30d)",
"method": "first-entry mirror, $5/trade, 2c slippage,
explicit 2026 taker fees",
"wallets": [
{ "name": "S-Works", "verdict": "COPY",
"roi_fee_inclusive_pct": 9.2, "oos_validated": true,
"reasons": [
"positive fee-inclusive and survived the out-of-sample month",
"caveat: is a bot — entries split into iceberg clips (~24)",
"caveat: copy-crowding — 102 of 319 markets shared with
other tracked wallets" ] },
{ "name": "cnyek", "verdict": "WATCH",
"roi_fee_inclusive_pct": 12.4, "oos_validated": true,
"reasons": ["+12.4% fee-inclusive over 41 in-sample trades,
but only 9 out-of-sample trades — OOS sample
too small to rate COPY"] },
{ "name": "aenews2", "verdict": "WATCH",
"roi_fee_inclusive_pct": -0.9, "oos_validated": true,
"reasons": ["fee-fragile: -0.9% fee-inclusive in-sample,
+17.2% in the out-of-sample month"] }
]
}
1 credit · $0.02 per call · free sandbox
GET /api/red_list
"Which wallets lose money for the people copying them?"
Standing VETOs for copying — including wallets at the top of the volume leaderboards. Same simulation basis as the leaderboard, so the numbers are directly comparable.
{
"ok": true,
"computed_at": "2026-07-13",
"window": "2026-06-12..2026-07-11 (30d)",
"method": "first-entry mirror, $5/trade, 2c slippage,
explicit 2026 taker fees",
"wallets": [
{ "name": "swisstony", "verdict": "VETO",
"roi_fee_inclusive_pct": -5.7,
"reasons": ["a simulated copier lost 5.7% fee-inclusive
over the 30-day window"] },
{ "name": "RN1", "verdict": "VETO",
"roi_fee_inclusive_pct": -4.8,
"reasons": ["a simulated copier lost 4.8% fee-inclusive
over the 30-day window"] }
]
}
1 credit · $0.02 per call · free sandbox
GET /api/preflight_copy
"Should my agent copy this wallet?"
COPY / WATCH / VETO for copying a specific wallet: realistic copier return, fee drag and out-of-sample stability. Uses a fixed $5-entry / +2c-slippage simulation computed from TickTape's private trade tape — every fill of 5+ shares with trader identity, recording since December 2025, all market categories since mid-January 2026 — a history that cannot be reconstructed from Polymarket's live API. Exact size-and-delay replay is not live. Coverage is an exact rule: a wallet with 10+ first entries in the rolling 90-day window has a precomputed profile (tens of thousands of wallets after each nightly run, fresh by ~04:30 UTC) and answers sub-second; any other wallet returns HTTP 202 QUEUED free of charge, with a Retry-After header, and — if it has tape activity — is typically ready in minutes (the response's retry_after_seconds tells you when to retry; worst case about an hour) — a wallet below the floor gets an explicit NO_COVERAGE profile, not a made-up verdict. COPY is only ever awarded with out-of-sample validation — in-sample-only performance caps at WATCH. Full coverage rules, including exactly which markets have order-book archives, on /tech#coverage.
| Param | Default | Meaning |
|---|---|---|
| wallet | required | trader's proxy wallet address to audit, 0x + 40 hex (alias: user=) — the only parameter; usernames are not accepted |
| sandbox=1 | — | free deterministic example — never rate-limited, never charged |
5 credits · $0.10 per call (covered wallets, sub-second) · QUEUED answers (HTTP 202 + Retry-After) are free · free sandbox
Sandbox · free forever
The sandbox is the free product. Append sandbox=1 to any of the four tools and you get a deterministic example response — same schema, same field types, same verdict structure, every time. Sandbox calls are never rate-limited and never charged, which makes them safe to put in CI: your integration tests can assert against a stable body while your production path stays live.
# deterministic, free, unlimited — safe for CI curl "https://ticktape.cc/api/preflight_trade?sandbox=1" # inspect payment requirements without paying curl "https://ticktape.cc/api/preflight_trade?x402_probe=1"
Operator safety
Spending rules belong in code, not in prompts — a prompt can be talked out of its budget; a config constant cannot. Recommended guardrails for any agent paying TickTape (or anyone else) over x402:
Never pay more than $0.10 for a TickTape call. Note: v2 @x402/fetch dropped the old default 0.10 USDC cap — set your own maximum explicitly, or your client will sign whatever a 402 asks for.
Hard daily limit in code — $2/day is plenty for most preflight loops unless your operator deliberately raises it. Fail closed when the cap is hit.
Only pay endpoints under https://ticktape.cc/, and verify the payTo address in every 402 against the one published in /llms.txt before signing.
USDC on Base only: network eip155:8453, contract 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. Refuse any 402 that asks for a different asset or chain.
On timeouts or 5xx after payment, retry with the same payment authorization. The API is idempotent on it — you get the cached response, never a second charge. Never re-sign for a retry.
Keep the agent's wallet small and top it up — it needs cents per verdict, not a bankroll. The wallet that pays for verdicts should not be the wallet that trades.
Setup · one paste
Paste this into your agent's system prompt or tool notes. It carries the endpoints, the payment flow and the code-level safety rules in one block.
You are being connected to TickTape (https://ticktape.cc) - an independent pre-flight check for Polymarket orders and copy-trading. It answers OK / CAUTION / VETO with reasons and numbers before you risk money. It never executes trades. Machine spec: https://ticktape.cc/llms.txt | OpenAPI: https://ticktape.cc/openapi.json | Machine manifest: https://ticktape.cc/agent.json TOOLS: GET https://ticktape.cc/api/preflight_trade?slug=...&outcome=...&side=BUY&usd=... (live order verdict; thresholds overridable); GET https://ticktape.cc/api/leaderboard (COPY/WATCH wallets); GET https://ticktape.cc/api/red_list (wallets that lose copiers); GET https://ticktape.cc/api/preflight_copy?wallet=... (alias user=; the only parameter. COPY/WATCH/VETO for copying that wallet, from a fixed $5-entry / +2c-slippage simulation - exact size-and-delay replay is not live; uncovered wallets return HTTP 202 QUEUED + Retry-After, free of charge - typically ready in minutes (retry_after_seconds tells you when to retry), worst case about an hour). Test free: append sandbox=1. PAYMENT (x402, USDC on Base, no account): live calls are paid from the first request; test free with ?sandbox=1. Unpaid live calls get HTTP 402 with payment requirements (x402 v2; v1 X-PAYMENT also accepted). Per-call $0.02 ($0.10 for preflight_copy), takes 2-5s (on-chain settle). FAST PATH: POST https://ticktape.cc/api/credits with one $5 x402 payment -> 500 credits + bearer token - half the per-call price, ~0.4s responses. 1 credit per $0.02-call, 5 credits per preflight_copy; credits valid 12 months. Then Authorization: Bearer <token> -> ~0.4s calls. Treat the token as a secret. SAFETY (enforce in code): never pay >$0.10 per TickTape call; daily cap $2 unless your operator raises it; only pay endpoints under https://ticktape.cc/; verify payTo matches llms.txt; asset must be USDC on Base (eip155:8453, 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913); on retry reuse the same payment authorization. TickTape verdicts are deterministic arithmetic on live books, not predictions and not investment advice.
MCP server · live
TickTape runs its own MCP server: all four tools plus a credits balance check, over streamable-http at POST https://ticktape.cc/mcp. Pass sandbox: true in any tool's arguments for a free deterministic example. Paid lane inside MCP: send your credits bearer token as the Authorization header; without one, live calls return the x402 payment terms for the REST endpoints. Server card: /.well-known/mcp/server-card.json. Claude config:
{"mcpServers": {"ticktape": {"type": "http", "url": "https://ticktape.cc/mcp"}}}
Roadmap · not live yet
Everything above this line is callable today. The items below are roadmap, and we will not pretend otherwise.
TickTape will list in the x402 Bazaar discovery index after the first real settlement clears — a listing should follow revenue, not precede it.
For your operator
TickTape is the agent-only preflight layer for Polymarket — a SaaS with no seats, no users and no checkout, only paid agent calls. There is no card checkout and no subscription anywhere; paying requires an agent (or any x402 client, Stripe purl included). Humans get the reading room free: the weekly Top 3 on the site and the sample Wallet Audit.
Full rate card: /pricing.
Point your agent at the API — unlimited free sandbox, then live calls paid from the first request: HTTP 402 and USDC on Base. Humans read for free. Support: hello@ticktape.cc.
Copy the agent setup prompt