Last updated 19 September 2026 · Markdown source
A hosted Model Context Protocol server exposing validated historical options, implied-volatility and earnings analytics, plus a thinkorswim-class P&L calculator. Your agent calls it alongside whatever else you run, including your broker's own tools. It serves statistics. It never executes orders and never gives advice.
Free tier. No account, no email, no waiting.
curl -X POST https://multitap.trade/signup
The response carries your key, the exact limits that apply to it, and a ready-to-paste connect line. The key is shown once and cannot be recovered, so save it.
claude mcp add multitap --transport http \
https://multitap.trade/mcp \
--header "Authorization: Bearer YOUR_KEY"
Any MCP client works — the transport is streamable HTTP and the key is a standard Authorization: Bearer header. Verify with /mcp in Claude Code; you should see 21 tools.
There is no query language. Ask in plain language and your agent picks the tool:
API key, sent as Authorization: Bearer <key> on every request. Free keys are prefixed mtf_. A missing or unrecognised key returns 403. There is no OAuth flow; the endpoint is a single URL and the key is the whole credential.
| Limit | Free tier |
|---|---|
| Tool calls | 10 per minute |
| Heavier tools | 3 per minute, within the 10 |
| Keys per person | Uncapped |
| Cost | Free |
| Region | No restriction |
Exceeding a limit returns 429 with a Retry-After header in seconds. The MCP handshake — initialize and tools/list — is not metered, so connecting never costs a query.
The heavier group is run_sql, compute_indicator, earnings_receipt, scenario_card, scenario_curve, exit_ladder, simulate_position, live_chain, compare_legs, barrier_prob and xs_stat.
land_series and drop_series write to and delete from the server, and are not available on free keys. They return 403, not 429 — retrying will not help.
Need higher limits or the full surface? Email [email protected].
simulate_position is a thinkorswim-Analyze-class calculator. Give it a structure and it returns the whole picture:
| Output | Detail |
|---|---|
| Max profit and max loss | Exact, from the expiry payoff kinks. Unbounded tails are labelled as unbounded, never silently clipped to a number. |
| Breakevens | Interpolated, not rounded to the nearest strike. |
| P&L curves | At your evaluation date and at expiration, with per-point intrinsic/extrinsic decomposition. |
| What-if | Optional P&L at a target price and date. |
| Chart payload | A trailing JSON block your agent can plot directly. |
Every result is gross and net of execution costs, side by side — curves, breakevens and what-ifs alike. The cost model is a calibrated fill point, each leg's spread (observed when you state bid/ask, otherwise a measured default) and regulatory fees. Expiration rows settle with entry-side costs only. This is the difference between a payoff diagram and a number you can act on.
Structures: a single long option, a net-debit vertical, or via legs any 1–4 leg same-expiration structure — straddles, strangles, iron condors, credit verticals, naked shorts, and ratios by repeating a leg.
Volatility handling is explicit and labelled in the output, because it dominates the answer on short-dated options:
| Mode | Exit IV |
|---|---|
frozen |
Equals entry IV. The Robinhood-simulator simplification. |
crush |
Entry IV × the symbol's own measured post-earnings crush ratio. For windows that cross an earnings print. |
custom |
Whatever you state. |
sticky_moneyness |
Re-struck per point. |
It is a calculator over inputs you supply and fetches nothing: spot, premiums and IVs come from you, typically from your broker's chain. There is deliberately no default IV — a missing one is an instructive error rather than a silent guess.
compare_legs runs the same machinery across a grid: price up to 12 candidate structures under multiple what-if scenarios in one table — cost, breakevens, max win/loss, entry delta and theta, and per scenario the modelled mark, P/L in dollars and return percentage. It replaces writing a pricing loop by hand.
barrier_prob answers the "can it touch 110 by October" question two ways, both labelled: closed-form risk-neutral odds, and — for covered symbols — how often that name's own daily bars actually made a move that size in that window. Thin histories come back suppressed rather than guessed.
| Tool | What it does |
|---|---|
get_schema |
Database schema, universe and data coverage. Start here. |
answer_catalog |
Which cross-domain questions have precomputed, instant answers. |
get_answer |
Serve one precomputed answer from that catalog. |
| Tool | What it does |
|---|---|
run_sql |
Read-only DuckDB query. Single SELECT/WITH; writes and DDL rejected; results clipped to 200 rows. |
compute_indicator |
RSI, MACD, Bollinger Bands, moving averages. |
xs_stat |
Cross-symbol daily-return statistics vs a benchmark: OLS beta, correlation. |
| Tool | What it does |
|---|---|
earnings_events_table |
Per-event IV ramp (t−15→t−1) and crush (t−1→t+1). |
crush_conditional_summary |
The headline cross-sectional result: median IV crush and how often it holds. |
iv_context |
Current IV situation for one symbol against its own history. |
implied_move_history |
Implied vs realised moves, using the event-week weekly tenor rather than the inflated monthly figure. |
earnings_receipt |
Itemised dollar receipt for a historical earnings event. |
scenario_card |
Per-symbol scenario card for a weekly ATM call entered near the close on T−1. |
scenario_curve |
Return-vs-open-gap curve. A historically calibrated model, not a quote. |
exit_ladder |
What exit timing cost, for events where the direction was right. |
| Tool | What it does |
|---|---|
simulate_position |
Max gain/loss, breakevens and P&L curves, gross and net of costs. See above. |
compare_legs |
Up to 12 structures × multiple scenarios in one table. |
barrier_prob |
Probability of touching a level, risk-neutral and measured. |
live_chain |
Live option-chain snapshot for any US underlying: spot, expiries, strikes. |
| Tool | What it does |
|---|---|
land_series |
Store a time series of your own for 30 days and join it to ours. Not on free keys. |
list_series |
What you have landed. |
drop_series |
Delete one, permanently. Not on free keys. |
33 US names across 13 sectors — big tech, semiconductors, pharma, crypto/fintech, retail favourites and SPY — from August 2024 onward. Call get_schema for the live list and each symbol's own coverage window.
The deep-validated receipts layer (dollar receipts, scenario cards, exit ladders) covers the original semiconductor cohort's 71 earnings events: real 15:50–16:00 entry prints, IVs inverted from real prices, and decompositions that reconcile to realised P&L. Validated three ways — against SEC 8-K timestamps, against independent price sources, and against closing NBBO for implied-move levels.
The P&L tools are not bounded by that universe: they are calculators over inputs you supply, so they work on any underlying. Only the crush volatility mode needs a covered symbol, and it falls back to a pooled ratio when the name is not covered.
live_chain, everything is historical and end-of-day. Verify anything actionable against your broker.Tool calls are logged per key — tool name, arguments, timing, errors — so we can see what is useful and what breaks. Keys themselves are never written to the log. We do not see your conversations, only what your agent sends to our tools.
Beta. The tool surface can change; breaking changes will be announced before they ship. Problems, or questions the tools answered badly, go to [email protected].