# Multitap MCP

*Last updated 19 September 2026 · [Markdown source](/docs.md)*

A hosted [Model Context Protocol](https://modelcontextprotocol.io) 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.

## Quick start

### 1. Get a key

Free tier. No account, no email, no waiting.

```bash
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.

### 2. Connect your agent

```bash
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.

### 3. Ask a question

There is no query language. Ask in plain language and your agent picks the tool:

- "Is NVDA's earnings IV structurally rich, and what gap do I need to break even?"
- "I'm looking at the Oct 17 240/260 call spread on NVDA at 4.20. What's my max loss, max gain and breakeven after costs?"
- "How have MU's realized earnings moves compared to what the options implied?"
- "For buyers who got the direction right, what did selling at 10:00 cost versus at the open?"

## Authentication

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.

## Limits

| 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 [kevin@multitap.trade](mailto:kevin@multitap.trade).

## P&L simulation

`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.

## Tools

### Discovery

| 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. |

### Query

| 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. |

### Earnings and implied volatility

| 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. |

### Pricing and P&L

| 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. |

### Your own series

| 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.** |

## Coverage

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.

## What this is not

- **Not live quotes.** Aside from `live_chain`, everything is historical and end-of-day. Verify anything actionable against your broker.
- **Not advice.** Descriptive statistics only. The tools will not tell you what to buy, and outputs carry their own basis and caveat lines.
- **One regime.** History starts August 2024. The receipts tools are additionally single-sector until their pipeline reruns on the wider universe; their caveats say so on every answer.
- **No account awareness.** Tools take symbols, dates and parameters. The schemas structurally reject positions and balances. Keep it that way.

## Telemetry

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.

## Status

Beta. The tool surface can change; breaking changes will be announced before they ship. Problems, or questions the tools answered badly, go to [kevin@multitap.trade](mailto:kevin@multitap.trade).
