Developers · MCP-native · agent-first

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.

25M+indexed patterns
~9msretrieval (1-3s warm call)
80.8%coverage record, held out
9canonical MCP tools
$0Sandbox tier
Three lines to ship

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?
Latest: chartlibrary-mcp 6.1.0·Changelog →·PyPI →
No framework? One HTTP call — free, no key

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.

The 13 canonical tools

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 here
The flagship primitive. Pull the comp set for a subject (symbol, date, timeframe): comp strength, match quality, conditions, the up-rate distribution, drivers, and the coverage record — never a call.
search
Entry point. Find historical analogs of a subject; returns a comp_set_id you can chain.
cohort_introspect
Slice/probe a comp_set_id by macro · technical · event attributes — per-subset stats vs the full comp-set baseline.
cohort_members
The handover surface: the full comp set, one record per analog with rich per-member metadata, for your own bucketing.
cohort_groupby
Partition a comp_set_id by one member dimension → per-bucket outcome distributions vs the full-cohort baseline.
cohort_rerank
Reorder a comp_set_id by a weighted composite of member fields — your objective, not a prediction.
symbol_intelligence
Layer 5 memory: per-symbol driver reliability + achieved coverage across prior reads.
analyze
anomaly · volume_profile · crowding · correlation_shift · earnings_reaction · pattern_degradation · regime_accuracy
context
Conditions · ticker metadata · subject metadata · system coverage. target=.
explain
Driver ranking / prose / position guidance / risk ranking from a stored comp_set_id. style=.
portfolio
Multi-holding weighted distribution OR per-symbol Layer 5 memory. mode=.
track_record
Trust-audit: historical predicted-vs-realized band coverage for a slice — the coverage record, as a tool.
report_feedback
File an error or suggestion back to the project.
cohort_analyze
Compatible alias of pull_comps with the original back-of-house field names (anchor / cohort_id / win_rate / feature_importance). Existing integrations keep working verbatim.
REST endpoints · for non-MCP callers

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

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