Loading QuantGist...
Loading QuantGist...
Give Claude Desktop, Claude Code, and any MCP-compatible AI agent access to live macro event data, the economic calendar, earnings results, and market conditions, all from natural language.
Hosted MCP is the agent front door. For deterministic backend jobs and high-volume system integrations, use the QuantGist REST API directly and treat MCP as the tool-calling layer.
22 tools
data, discovery, account
Live data
polling QuantGist API
stdio + HTTP
local or hosted
QUANTGIST_API_KEY environment variable.The package is published to PyPI and the official MCP Registry. Install with pip or uv:
# With pip
pip install quantgist-mcp
# With uv
uv pip install quantgist-mcpOr install the latest source from GitHub, or clone for development:
pip install git+https://github.com/QuantGist-Technologies/QuantGist_MCP.gitClone locally for development:
git clone https://github.com/QuantGist-Technologies/QuantGist_MCP.git
cd QuantGist_MCP
pip install -e .Verify the install:
QUANTGIST_API_KEY=qg_live_your_key quantgist-mcp --helpWe host the MCP server over HTTP at https://api.quantgist.com/mcp. Any MCP client that supports the streamable-HTTP transport can connect with no local install — just send your API key in an X-API-Key header.
Add it to Claude Code in one command:
claude mcp add --transport http quantgist https://api.quantgist.com/mcp \
--header "X-API-Key: qg_live_your_key_here"Or configure any MCP client that speaks streamable-HTTP:
{
"mcpServers": {
"quantgist": {
"type": "streamable-http",
"url": "https://api.quantgist.com/mcp",
"headers": { "X-API-Key": "qg_live_your_key_here" }
}
}
}X-API-Keyheader, against your own plan's quota. No key is shared or stored server-side. Prefer the local install if you want to run the server inside your own infrastructure.confirm: true and otherwise return a no-op preview, so billing and key changes always pass through explicit human approval.Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) and add the quantgist server:
{
"mcpServers": {
"quantgist": {
"command": "quantgist-mcp",
"env": {
"QUANTGIST_API_KEY": "qg_live_your_key_here"
}
}
}
}quantgist-mcp is not on your PATH, use the full path returned by which quantgist-mcp (macOS/Linux) or where quantgist-mcp (Windows).Alternatively, run directly without a permanent install using uvx:
{
"mcpServers": {
"quantgist": {
"command": "uvx",
"args": [
"--from",
"quantgist-mcp",
"quantgist-mcp"
],
"env": {
"QUANTGIST_API_KEY": "qg_live_your_key_here"
}
}
}
}Restart Claude Desktop after saving the config. The QuantGist tools appear in the 🔌 Plugins menu.
The fastest path is the plugin — it installs the hosted MCP connection plus three skills that teach Claude Code how to use QuantGist safely (see QuantGist for AI Agents):
/plugin marketplace add QuantGist-Technologies/quantgist-agent-toolkit
/plugin install quantgist@quantgistOr register just the server with claude mcp add (project-scoped):
# Install first, then register:
pip install quantgist-mcp
claude mcp add quantgist \
-e QUANTGIST_API_KEY=qg_live_your_key_here \
-- quantgist-mcpOr register with uvx (no separate install):
claude mcp add quantgist \
-e QUANTGIST_API_KEY=qg_live_your_key_here \
-- uvx --from quantgist-mcp quantgist-mcpVerify the server is registered:
claude mcp list
# quantgist quantgist-mcp activeWhen an MCP workflow calls QuantGist REST endpoints that include safety metadata, instruct the agent to fail closed. Reject stale snapshots, low-confidence payloads, missing metadata, and any response where trade_safe is false.
System instruction for a trading-intelligence agent:
- Use QuantGist for macro, news, earnings, and market context only.
- Do not place trades or produce buy/sell recommendations from QuantGist data alone.
- If a response has safety.trade_safe !== true, stop and explain the warning.
- If safety.freshness is stale or unknown, reject it for live trade context.
- If safety.confidence < 0.7, route the result for human review.
- If market item stale=true, do not use its price in live calculations.function usableForAgentContext(payload) {
const safety = payload?.safety;
if (!safety) return false;
if (safety.trade_safe !== true) return false;
if (["stale", "unknown"].includes(safety.freshness)) return false;
if (safety.confidence < 0.7) return false;
return true;
}Four tools covering upcoming events, date-range queries, the economic calendar, and per-event detail.
get_upcoming_eventsReturns macro-economic events scheduled in the next N hours, great for "what's moving markets today?" questions.
| Param | Type | Req | Description |
|---|---|---|---|
hours | integer | — | How many hours ahead to look (1–168). Default: 24. |
impact | string | — | high | medium | low | all. Default: high. |
Example input
{ "hours": 48, "impact": "high" }get_events_rangeFetches economic events within a specific date range, optionally filtered by country, impact, or trading symbol.
| Param | Type | Req | Description |
|---|---|---|---|
from_date | string | yes | Start date/datetime in ISO 8601 format (e.g. "2025-01-15" or "2025-01-15T00:00:00Z"). |
to_date | string | yes | End date/datetime in ISO 8601 format. |
country | string | — | 2-letter country code (e.g. "US", "GB", "EU"). |
impact | string | — | high | medium | low | all. Default: all. |
symbol | string | — | Trading symbol filter (e.g. "XAUUSD", "EURUSD", "US30"). |
Example input
{ "from_date": "2025-06-01", "to_date": "2025-06-07", "country": "US", "impact": "high" }get_economic_calendarReturns the full economic calendar for a specific date, grouped by time, useful for planning a trading session.
| Param | Type | Req | Description |
|---|---|---|---|
date | string | — | ISO date to fetch (e.g. "2025-01-15"). Defaults to today UTC. |
impact | string | — | high | medium | low | all. Default: high. |
Example input
{ "date": "2025-06-04", "impact": "high" }get_event_detailReturns full details for a specific event by ID: actual, forecast, previous values and affected symbols.
| Param | Type | Req | Description |
|---|---|---|---|
event_id | string | yes | The unique event ID returned by other tools. |
Example input
{ "event_id": "evt_abc123" }Five tools for earnings calendars, per-ticker history, beat/miss summaries, and season-level aggregates.
get_earnings_upcomingReturns the next N upcoming earnings reports across all tickers, ordered by report date.
| Param | Type | Req | Description |
|---|---|---|---|
limit | integer | — | Number of upcoming reports to return (1–100). Default: 20. |
Example input
{ "limit": 10 }get_earnings_for_tickerReturns earnings history for a specific ticker: EPS estimates vs actuals, revenue, beat/miss, and SEC filing links.
| Param | Type | Req | Description |
|---|---|---|---|
ticker | string | yes | Stock ticker symbol, e.g. "AAPL", "MSFT", "NVDA". |
limit | integer | — | Historical reports to return (1–50). Default: 10. |
Example input
{ "ticker": "NVDA", "limit": 8 }get_earnings_summaryReturns a beat/miss/in-line summary for a ticker, how many quarters did it beat EPS estimates and at what rate?
| Param | Type | Req | Description |
|---|---|---|---|
ticker | string | yes | Stock ticker symbol, e.g. "AAPL". |
Example input
{ "ticker": "AAPL" }get_earnings_surprisesReturns the largest EPS surprises across the market, stocks that significantly beat or missed analyst estimates.
| Param | Type | Req | Description |
|---|---|---|---|
limit | integer | — | Number of top surprises to return (1–50). Default: 20. |
Example input
{ "limit": 10 }get_earnings_season_summaryReturns index-level aggregate for the current earnings season: total reports, beat rate, and season label.
Example input
{}One tool for a quick end-of-day snapshot of major indices and instruments.
get_markets_overviewReturns provider quote snapshots for major indices and instruments. Inspect item-level safety metadata and reject stale market data before using it in an agent workflow.
Example input
{}Five tools (shipped in v0.4.0) that help agents choose QuantGist safely before they call paid or rate-limited endpoints — no account state is touched, and nothing here mutates anything.
get_pricing - return plans, request limits, feature gates, and bot usage add-on status.get_limits - explain plan caps, history windows, data delay, and rate-limit behavior.recommend_endpoint - map a bot or agent use case to the best REST endpoint or MCP tool.get_status - point agents to health and public status information before production use.estimate_usage_cost - estimate request volume and metered overage before a workflow runs.A typical agent flow: call recommend_endpoint to pick the right tool for a use case, then estimate_usage_cost and get_limits before committing to a high-volume workflow.
Seven tools (shipped in v0.5.0) for managing the account behind your API key: two read-only, five mutating. Mutating tools are confirm-gated — see the consent model below.
get_subscriptionRead-only. Returns the current plan, billing status, and renewal period for the account behind the API key.
Example input
{}list_webhooksRead-only. Lists registered webhook endpoints with their URLs, event filters, and active status.
Example input
{}create_webhookMutating. Registers a new HTTPS webhook endpoint (Pro+). The signing secret is returned once — store it securely; it cannot be recovered.
| Param | Type | Req | Description |
|---|---|---|---|
url | string | yes | HTTPS endpoint that will receive event deliveries. |
events | array | — | Event-type filter (e.g. ["event.released"]). Default: all. |
confirm | boolean | — | Must be true to execute. Omitted or false: no API call — returns a no-op preview. |
Example input
{ "url": "https://bot.example.com/hooks/quantgist", "confirm": true }delete_webhookMutating. Permanently removes a webhook endpoint. Deliveries stop immediately.
| Param | Type | Req | Description |
|---|---|---|---|
webhook_id | string | yes | The webhook ID from list_webhooks. |
confirm | boolean | — | Must be true to execute. Omitted or false: no API call — returns a no-op preview. |
Example input
{ "webhook_id": "wh_abc123", "confirm": true }test_webhookMutating. Sends a synthetic signed test delivery to a webhook endpoint so you can verify your consumer end-to-end.
| Param | Type | Req | Description |
|---|---|---|---|
webhook_id | string | yes | The webhook ID from list_webhooks. |
confirm | boolean | — | Must be true to execute. Omitted or false: no API call — returns a no-op preview. |
Example input
{ "webhook_id": "wh_abc123", "confirm": true }create_api_keyMutating. Creates an additional scoped API key. The plaintext key is returned once with a store-securely warning — it is never persisted.
| Param | Type | Req | Description |
|---|---|---|---|
name | string | — | Human-readable label for the key (e.g. "trading-bot-readonly"). |
confirm | boolean | — | Must be true to execute. Omitted or false: no API call — returns a no-op preview. |
Example input
{ "name": "trading-bot-readonly", "confirm": true }create_checkout_sessionMutating. Prepares a Stripe-hosted checkout for a plan upgrade. NEVER charges — returns a checkout_url a human must open and complete. No card data passes through QuantGist tools.
| Param | Type | Req | Description |
|---|---|---|---|
plan | string | yes | Target plan: starter | pro | team. |
confirm | boolean | — | Must be true to execute. Omitted or false: no API call — returns a no-op preview. |
Example input
{ "plan": "pro", "confirm": true }The consent model
get_subscription, list_webhooks) run without confirmation and never change account state.create_webhook, delete_webhook, test_webhook, create_api_key, create_checkout_session) require confirm: true. Without it, no API call is made — the tool returns a no-op preview of exactly what would happen, which the agent shows the user before asking to proceed.create_checkout_session never charges anything. It returns a Stripe-hosted checkout URL that a human must open and complete. No card data ever passes through QuantGist tools.create_api_key and create_webhook return their plaintext key / signing secret exactly once, with a store-securely warning. The plaintext is never persisted and cannot be recovered.confirm: true. Never auto-confirm on the user's behalf.Once the MCP server is connected, ask Claude naturally. It selects the right tool and formats a clear response.
Example: macro risk-window check
“Any high-impact macro events in the next 2 hours I should know about before trading gold?”
Claude calls get_upcoming_events("hours": 2, "impact": "high") and responds:
No high-impact events in the next 2 hours. The next one is US Initial Jobless Claims (USD) in ~47 min, medium impact. This is risk context for XAUUSD, not an instruction to place a trade.
Example: daily briefing
“Give me today's high-impact economic calendar.”
Claude calls get_economic_calendar("impact": "high"):
Wednesday, June 4: High Impact
08:30 UTC · ADP Non-Farm Employment Change (USD) · Prev: 155K · Forecast: 170K
14:00 UTC · ISM Services PMI (USD) · Prev: 49.4 · Forecast: 51.0
18:00 UTC · FOMC Meeting Minutes (USD)
Example: earnings research agent
“How has NVDA been doing on earnings? What's their beat rate?”
Claude calls get_earnings_summary("ticker": "NVDA") and get_earnings_for_ticker("ticker": "NVDA"):
NVDA earnings track record: 8 beat, 1 miss, 1 in-line over the last 10 quarters, 80% beat rate. Most recent: Q1 FY2025 EPS actual $5.98 vs $5.59 consensus (+7% beat). Revenue $26.0B vs $24.7B est.
Example: multi-tool research chain
“Build a EUR/USD risk brief for this week. Which macro events or earnings could affect it?”
Claude chains get_events_range (USD+EUR events this week) → get_upcoming_events (next high-impact releases) → get_markets_overview, rejects stale market snapshots, then synthesizes a risk summary without giving a buy/sell recommendation.
Server starts but tools return "api_error: 401"
Your QUANTGIST_API_KEY is missing or incorrect. Verify with: QUANTGIST_API_KEY=qg_live_... quantgist-mcp (you should see the startup banner, not an error).
Claude Desktop shows "Failed to connect to server"
Check the command path: run which quantgist-mcp to get the full path and use that in claude_desktop_config.json instead of just "quantgist-mcp".
Claude Code: "Unknown server: quantgist"
Run claude mcp list to confirm it's registered. If missing, re-run the claude mcp add command.
No events returned from get_upcoming_events
The free plan serves 1-year of history and 100 req/day. Outside market hours, fewer high-impact events may be scheduled. Try impact: "all" to see all events.
Get a free API key in seconds, no credit card required. 100 requests/day on the free plan.