streamable-httpApache-2.0updated 9d ago
MCP server and React drill UI for an AI-judged options trading practice game. Built on FastMCP.
What can you do with optionality mcp?
optionality-mcp
MCP server and React drill UI for an AI-judged options trading practice game. Built on FastMCP.
Optionality is an instance of a Tollbooth-DPYCβ’ service: engagement is monetized with convenient Don't Pester Your Customerβ’ (DPYCβ’) Bitcoin commerce. Patrons pre-fund a balance over Lightning and play without per-request payment ceremonies. All prices are dynamic and set by the operator β the Welcome page shows live quotes. Patrons can also enter Tollbooth-DPYC coupons to take advantage of discounts when they are offered.
How a Round Works
- The Dealer deals. A dealer LLM composes a complete options scenario: ticker, spot, IV regime and skew, macro backdrop, catalyst, key levels, and constraints β optionally including a max-loss budget the structure must fit.
- You pitch. Free text, the way you'd pitch a senior PM. Multi-leg structures, single legs, or a deliberate stand-aside β declining to trade is a legitimate, gradeable answer.
- The Judge grades. A judge LLM parses your pitch into structured legs, scores it across six dimensions, and proposes an alternative structure you can overlay on the risk chart.
Six judging dimensions: Strategy Selection, Strikes & Tenor, Risk/Reward, Macro Integration, Tail Risk, and Communication β each 0β20, rolled into a 0β100 score with letter grades A+ through F.
Core Pedagogy β Red Herrings
Each scenario embeds 1β2 facts that are factually TRUE but immaterial, woven inline into the narrative and never flagged. Citing them as trade drivers penalizes the trainee; recognizing them as noise and setting them aside earns points. The drill is signal-from-noise on a tape where everything you read is true.
A Facts Ledger accompanies every evaluation: which scenario facts you integrated, which you missed, which red herrings you caught, and which you followed.
Scenario Modes & Difficulty
Three historicity modes:
- Historical Fiction β real, identifiable market moments (SVB week, the gilt crisis), grounded in the actual macro and IV regime of the day
- Fiction β invented regimes: counterfactual shocks, de-peg cascades, gamma squeezes
- Live Events β web-search-grounded scenarios anchored to this week's actual tape, with cited sources
Four difficulty personas: Apprentice, Journeyman, Adept, Sovereign. Leaderboard points are difficulty-weighted, so rankings can't be padded on easy mode. A Mulligan mode replays an already-judged scenario fresh.
Options Math β One Source of Truth
The server builds the full option chain from the dealer's scaffold β three expirations, a strike ladder around spot, a three-anchor IV smile honoring put-bid skew β and prices it with BlackβScholes. The same math runs client-side, so the trainee, the charts, and the judge all see identical numbers.
- Option chain modal in broker convention: calls left, strikes and smile center, puts right; tap a mid to buy or sell; running net-premium readout
- Risk profile chart with expiration P/L, breakeven markers, and a DTE slider that replays theta bleed across the holding period
- Judge-alternative overlay to compare your payoff curve against the structure the judge would have run
Socratic Clue Desk
Mid-scenario, ask anything. Educational questions get direct, formula-backed answers; tactical questions get redirected to the dimension worth more thought β the responsibility stays with the trainee. The desk never reveals the scenario's hidden facts or red herrings. Clues carry a scoring penalty.
Journal, Leaderboard & Peer Learning
- Journal β every round persisted: open drafts, submitted pitches, full evaluations with leg tables and charts
- Leaderboard β six sort orders (weighted average, weighted best, raw average, raw best, streak, played), filterable by mode and difficulty
- Streaks β consecutive scores of 70+, current and all-time
- Shared entries β opt in to share an evaluated round so others can study the pitch, the grade, and the ledger
- Profile β display name, avatar, bio
- Usage β transparency tab showing per-model token consumption, per-tool spend, and the patron's account statement
Repo Layout
optionality-mcp/
βββ server.py # FastMCP SSE server (Python) β Horizon
βββ tools/ # dealer, judge, journal, leaderboard, profile, options chain
βββ prompts.py # dealer / judge / clue-desk personas
βββ frontend/ # React 18 + Vite + TS UI β Cloudflare Pages
Heavy LLM tools (deal, judge, clue desk) use a claim-check async pattern: the call returns a claim immediately and the client polls a free fetch tool, so slow generations survive client timeouts.
DPYC Ecosystem
optionality-mcp is one Operator in the DPYC federation β independent MCP servers that share a Nostr identity model, Bitcoin Lightning payments, and the tollbooth-dpyc SDK. Peer repos:
| Repo | Role |
|---|---|
| tollbooth-dpyc | Python SDK β vault, auth, pricing, Lightning, Nostr identity |
| dpyc-community | Governance registry: membership, advisories, threat model |
| dpyc-oracle | Community concierge (free onboarding + member lookup) |
| tollbooth-authority | Certification backbone (Schnorr-signed certificates) |
| tollbooth-sample | Sample Operator (canonical template) |
| tollbooth-pricing-studio | iOS pricing-model editor / operator console |
| cypher-mcp | Monetized graph answers: named Cypher templates over Neo4j/AuraDB |
| schwab-mcp | Charles Schwab brokerage data |
| thebrain-mcp | TheBrain personal knowledge graph |
| excalibur-mcp | X/Twitter posting |
| taxsort-mcp | Tax classification + Cloudflare Pages UI |
| optionality-mcp | Options analytics (brokerage-data Operator) |
| tollbooth-oauth2-collector | OAuth2 callback handler (advocate service) |
| tollbooth-shortlinks | URL shortener utility |
License
Install
Add optionality mcp to your client. Pick the one you use.
claude mcp add --transport http optionality-mcp https://optionality-mcp.fastmcp.app/mcpcodex mcp add optionality-mcp --url https://optionality-mcp.fastmcp.app/mcp{
"mcpServers": {
"optionality-mcp": {
"url": "https://optionality-mcp.fastmcp.app/mcp"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"optionality-mcp": {
"type": "http",
"url": "https://optionality-mcp.fastmcp.app/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"optionality-mcp": {
"url": "https://optionality-mcp.fastmcp.app/mcp"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"optionality-mcp": {
"serverUrl": "https://optionality-mcp.fastmcp.app/mcp"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation20/25
- Maintenance25/25
- Trust13/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 1 days ago
- Has a release history
- Repository is not archived
- Licensed Apache-2.0
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint β no local install
Version history
| Versions | Published |
|---|---|
| 0.7.4Latest | Aug 24, 2026 |
| 0.7.3 | Aug 24, 2026 |
| 0.7.0 | Aug 22, 2026 |
| 0.6.14 | Aug 10, 2026 |
| 0.6.13 | Aug 9, 2026 |
| 0.6.12 | Jul 16, 2026 |