Pulls options chains from Tradier (and Polygon), strips out bad ticks and ghost quotes, then compresses 500 row payloads down to the 20 strikes that matter for your strategy. The sanitization layer clamps deltas, flags illiquid strikes, and kills inverted spreads. Circuit breaker logic refuses to serve data when more than 65% of rows look suspicious. You get three tools: get_compressed_chain for iron condors or straddles with 95% token savings, get_sanitized_quote for single symbols, and get_circuit_status to check data quality before you trade. Extracted from a production trading app, so the edge cases are already handled.
The catalytic converter between raw broker data and your AI trading agent.
Battle-tested. Sanitization logic extracted from a production options trading app. Handles every bad tick Tradier has thrown at us in production.

The open-source server runs locally with your own API keys. For hosted infrastructure with multi-broker failover, SLA guarantees, and webhook alerts — join the managed cloud waitlist.
Tradier's MCP dumps 500-row JSON chains. One bad print can corrupt an agent's reasoning. ThinChain sanitizes, compresses, and circuit-breaks that data before it reaches your model.
git clone https://github.com/snipmcp/thinchain.git
cd thinchain
pip install -e ".[dev]"
cp .env.example .env
Or with Docker:
docker-compose up --build
TRADIER_API_KEY=your_key_here
TRADIER_BASE_URL=https://api.tradier.com/v1
POLYGON_API_KEY=your_key_here
POLYGON_BASE_URL=https://api.polygon.io
DEFAULT_BROKER=tradier
CACHE_TTL_SECONDS=30
LOG_LEVEL=INFO
Three example prompts to send to Claude (or any MCP-compatible agent):
Use get_compressed_chain to get an iron condor setup on SPY expiring 2026-06-19Check if SPY options data is trustworthy before I place my tradeGet me the ATM straddle strikes for AAPL expiring 2026-06-19# Tab 1 — start the MCP server
python -m thinchain.server
# Tab 2 — call a tool from a Python shell or your MCP client
# Tool signatures:
# get_compressed_chain(symbol, expiration, strategy="raw",
# delta_range=None, broker="tradier")
# get_sanitized_quote(symbol, broker="tradier")
# get_circuit_status(symbol, expiration, broker="tradier")
Three layers between raw broker output and your model:
Broker API → [Sanitize] → [Compress] → [Circuit Break] → MCP Tool → AI Agent
hygiene strategy anomaly gate
rules slicing + cache
clean / noisy / degraded / circuit_breaker_active). When >65% of rows are anomalous, refuses to serve stale data and falls back to last known-good cache.RAW TRADIER PAYLOAD THINCHAIN OUTPUT
─────────────────────────────────────────────
Rows: 482 Rows: 25
Est tokens: 38,560 Est tokens: 2,000
Token savings: 95%
Anomalous rows removed: 217
Data quality: noisy → still safely served
ThinChain compresses 482 rows / 38,560 tokens down to 25 rows / 2,000 tokens — and flags 217 anomalous strikes (illiquid, ghost quotes, wide spreads) that would have polluted the agent's context.
PRs welcome. Run pytest before submitting.
com.mcparmory/google-sheets
domdomegg/google-sheets-mcp
henilcalagiya/google-sheets-mcp
cct15/war-dashboard-data
moooonad/mcp-google-sheets-full
io.github.br0ski777/csv-to-json