25M+ chart patterns. One MCP install. Nine canonical tools.
Drop the MCP server into Claude, ChatGPT, Cursor — any agent — and it can take any subject (symbol, date, timeframe), pull the comp set of 300 historical analogs, and ground every read in calibrated empirical data.
Connect once. Your agent gets the full tool surface and a memory layer.
Fastest path is no install at all: add the hosted connector URL to Claude (or any Streamable-HTTP MCP client) and call the core loop — free, no API key. Prefer local? One pip install does the same.
# ── Fastest: hosted connector · no install, no API key ──
# Claude → Settings → Connectors → Add custom connector:
https://chartlibrary.io/mcp
# (Cursor / any Streamable-HTTP MCP client points at the same URL)
# ── Or run it locally (Python) ──
pip install chartlibrary-mcp
{ "mcpServers": { "chartlibrary": { "command": "chartlibrary-mcp" } } }
# add env CHART_LIBRARY_API_KEY only for higher volume — the core loop is free + keyless
# Then ask your agent about any (symbol, date, timeframe):
> What's the read on NVDA at 1h?The flagship comp set is a plain POST. No SDK, no install, no API key — paste this and run it right now. Add a key only when you outgrow 1,000 calls/day.
# The comp set for a subject — distribution, drivers, coverage record:
curl -s https://chartlibrary.io/api/v1/cohort_analyze \
-H "Content-Type: application/json" \
-d '{"anchor":{"symbol":"NVDA","date":"2025-03-03","timeframe":"1d"},"horizons":[5]}'
# → {"outcome_distribution":{"5":{"n":500,"median":1.34,"win_rate":0.606,
# "p10":-8.02,"p90":11.62, ...}}, "feature_importance":{...}, ...}Same engine the MCP tools call. pull_comps is the front-of-house alias with the same response. Full API reference →
Using a framework? All integrations — OpenAI Agents SDK, LangChain, Vercel AI SDK, MCP →
Data freshness. A stored (symbol, date) reflects that date’s close — daily bars + V5 embeddings land in the nightly ingest (~21:00–22:00 UTC, market days), so a mid-session 1d “today” query resolves to the last completed close. For a current-market read, pull_comps_now / POST /api/v1/cohort_live fetch intraday bars (~15 min delayed) and embed on the fly, cached ~60s — use scale=1h or finer. Every response carries an as-of note; the 80.8% coverage figure is an audited track record, not a forward guarantee.
One MCP surface. Your agent picks the right tool for the question.
Tight surface = better tool selection. Each tool composes the others — chain a comp_set_id through analyze and explain without re-running kNN.
pull_compsStart heresearchcohort_introspectcohort_memberscohort_groupbycohort_reranksymbol_intelligenceanalyzecontextexplainportfoliotrack_recordreport_feedbackcohort_analyzePlain REST works too.
The MCP tools are wrappers over the same JSON API. If you’re building outside the MCP ecosystem, call these endpoints directly.
| Method | Endpoint |
|---|---|
| POST | /api/v1/pull_compsNEW |
| POST | /api/v1/decision_brief |
| GET | /api/v1/agent/setups |
| GET | /api/v1/market-contextCONTEXT |
| POST | /api/v1/cohort_analyze |
| POST | /api/v1/cohort_compare |
| GET | /api/v1/symbol_intelligence/{symbol} |
| POST | /api/v1/search/text |
| POST | /api/v1/analyze |
| POST | /api/v1/portfolio/analyze |
| GET | /api/v1/narrative_pulse/{symbol} |
| GET | /api/v1/narrative_alerts |
| GET | /api/v1/status |
1,000 free calls a day. No card.
Sandbox tier covers every solo agent on the planet. Upgrade only when you ship something that needs more.