What things cost
The two rules
1
Prefer summaries over raw arrays
get_market_summary and get_top_markets already contain sizing, timing,
entry pricing, and per-market P/L — as computed numbers, with no arrays.
They answer “how did they trade this?” outright.Reach for get_market_events when you need to chart a market or confirm a
specific sequence. Not before.2
On MCP, always pass limit
MCP returns every result twice — a readable text copy and a structured
copy — so paged tools cost roughly double their REST equivalent.A default
list_trader_markets page is ~35k tokens. limit: 20 turns that
into ~2k. The same applies to get_recent_fills (limit) and
get_market_events (points).Workflow costs
Reach for the right primitive
Never page a markets list to find extremes
Never page a markets list to find extremes
list_trader_markets is recency-ordered only, by design. A 40,000-market
bot has no “biggest win” on page one, and paging 200 times to find it costs a
fortune and still misses.get_top_markets returns top_wins, top_losses, most_traded, and
top_volume from one scan. That is the extremes primitive.Keep n modest on mega-makers — a 180,000-market account sits near the
heavy-query timeout, and a narrow n is both cheaper and likelier to return.One sampled call is the whole chart
One sampled call is the whole chart
get_market_events returns a decimated price series plus the trader’s
complete fills in a single response. No cursor, no tick flood.raw=1 returns the verbatim tick pages instead, where the same second
repeats about 36 times — a 5-minute market becomes 8,000 rows across 4
pages. It exists as an export path. You almost never want it for a chart.Monitoring is one call per poll
Monitoring is one call per poll
get_recent_fills with a since watermark holds no live slot and costs one
request per poll. Record the last fill’s ts and pass it back next time so
you only pull what is new.Poll on a minutes cadence. Freshness is bounded by the archive pipeline
anyway, and a tight loop burns a Basic day in under an hour.Page only with the cursor you were handed
Page only with the cursor you were handed
Cursors are opaque keyset tokens, forward-only. Never hand-craft or mutate
one.A malformed cursor is a clean
400 bad_cursor. A well-formed forged
cursor silently returns page 1 again — safe depth-wise, but you re-read and
re-pay for data you already have.Validate before you fire
Application errors on real routes burn a call. A typo’dcondition_id is a
404 that costs a Basic user 1/50th of their day. 429 rejections do not burn
a call, so the rate limiter is free — but your own mistakes are not.