Developer docs
Build with MarketIntell.
REST API, MCP server, webhooks, and SDK examples. Drop the same data and reasoning that runs our analyst desk into your trading bots, agents, and dashboards. First call in under 10 minutes.
Step 0
Get your API key
- Sign up with your email — takes about two seconds, no card.
- In the app, open Settings and expand Developer Access.
- Type
REVEALand click Show key. Copy it somewhere safe — we hash the key in our DB so we can't show it again on demand. - Lost the key on another machine? Click Issue new key in the same panel — we mint a fresh one without revoking the old. Old keys keep working until you revoke them explicitly.
Step 1
skill.md
Agent runtimes can discover the same brain from the public skill.md. The manifest teaches an agent when to call MarketIntell and to preserve citations behind every market claim.
---
name: marketintell
description: Sourced market analysis across crypto, US equities, and options.
auth: { type: bearer, env: MI_API_KEY }
---
# When to use
Call for market questions, trade setups, portfolio risk, or signal review.
# Rules
Always cite the source behind every number. Never invent price levels.Step 2
REST API
Every endpoint accepts Authorization: Bearer mi_k_... (or X-API-Key for legacy clients). JSON in, JSON out, citations included on every reasoning response.
curl -fsSL https://api.marketintell.ai/v1/chat \
-H "Authorization: Bearer mi_k_..." \
-H "Content-Type: application/json" \
-d '{ "message": "BTC trade setup" }'Full surface area lives in /v1/openapi.json. Rate limits, error envelopes, and request-id headers are documented inline.
Step 3
MCP server
Our MCP server exposes 17 tools across stocks, options, and crypto. It drops into Claude Desktop, Cursor, Cline, Continue, and Claude Code. Stdio config:
{
"mcpServers": {
"marketintell": {
"command": "bunx",
"args": ["-y", "marketintell", "mcp"]
}
}
}HTTP / SSE transport details, per-tool descriptions, and the agent-self-signup PoW challenge are documented in the skill.md. See /for-agents for the full tool catalogue.
Step 4
CLI
The CLI is the same surface for shell scripts, cron jobs, and quick terminal checks. It can answer in plain text, emit JSON, or launch the MCP server.
bunx marketintell chat "NVDA options skew into earnings" bunx marketintell chat "BTC 4H setup" --json bunx marketintell mcp
Step 5
SSE streaming
Streaming frames mirror the uploaded prototype's tool chips, thinking text, resolved card, and done event. Use it for live UIs and agent progress logs.
curl -N https://api.marketintell.ai/v1/chat/stream \
-H "Authorization: Bearer mi_k_..." \
-H "Content-Type: application/json" \
-d '{ "message": "BTC setup 4H" }'
event: tool
data: {"name":"coinglass.derivatives","status":"ok"}
event: token
data: {"text":"Range-high retest, leaning "}
event: card
data: {"card":"trade_setup","d":{"symbol":"BTC"}}
event: done
data: {"latency_ms":1840,"queries_used":1}Step 6
Webhooks
Subscribe to alpha-signal publishes, signal outcomes, and account-level events. Each delivery is signed with HMAC-SHA256 over the raw body using your per-webhook secret — verify the signature before trusting the payload.
// Webhooks are signed with HMAC-SHA256 over the raw body
// using your per-webhook secret. Reject requests where
// the signature header doesn't match.
import { createHmac, timingSafeEqual } from "node:crypto";
export function verifyWebhook(
body: string,
signatureHeader: string,
secret: string,
): boolean {
const expected = createHmac("sha256", secret)
.update(body)
.digest("hex");
const a = Buffer.from(expected);
const b = Buffer.from(signatureHeader);
if (a.length !== b.length) return false;
return timingSafeEqual(a, b);
}Manage subscriptions and rotate secrets at Settings → Webhooks. Failed deliveries retry with exponential backoff for up to 24 hours.
Reference
17 MCP tools
The public MCP surface is the agent-native contract. Auth requirements are explicit: some tools are open for discovery, some require a key, and the execute tools require broker-connected trade scope.
| Tool | Tier | Auth | Returns |
|---|---|---|---|
| chat | free | optional | Auto-routed market chat (T1 fast / T2 CoT). Stocks, options, and crypto. |
| chat_deep | pro | required | T3 supervisor — parallel specialists + synthesis (~25–40s). Pro tier. |
| alpha_signals | free | optional | Latest published signals across all desks. Each links to a public post-mortem. |
| signal_performance | free | optional | Win-rate stats (1h / 4h / 24h windows). Same numbers as the public widget. |
| screener | free | optional | Trending + top gainers / losers across crypto + equities. |
| portfolio_list | free | required | List portfolios you own. |
| portfolio_create | free | required | Create a new portfolio with positions. |
| portfolio_analyze | free | required | PnL + risk + concentration analysis. |
| sessions_list | free | required | Your recent chat sessions. |
| billing_status | free | required | Plan, daily quota, monthly LLM cost, monthly cap. |
| health | free | none | Server uptime + provider circuit-breaker state. |
| register_challenge | free | none | PoW self-signup step 1 — issues a SHA-256 challenge. |
| register | free | none | PoW self-signup step 2 — provisions a Free-tier API key. |
| execute_propose_intent | pro | trade | Propose a trade to your connected broker — writes a pending intent you review + approve. No money moves here. |
| execute_approve_intent | pro | trade | Approve a pending intent and place the real order at the broker. Returns the executed-order audit row. |
| execute_list_intents | pro | trade | List your recent trade intents — pending, executed, rejected. |
| execute_read_portfolio | pro | trade | Read your connected broker account snapshot — equity, cash, buying power, open positions. |
Reference
Card schema
Every answer resolves to a typed card payload: { card, d }. Humans see the rendered card; agents receive the same cited JSON. The card library page renders every registered card shape for QA.
{
"card": "trade_setup",
"d": {
"symbol": "BTC",
"direction": "long",
"entry": 67200,
"stop": 63800,
"targets": [69200, 71000],
"confidence": 0.69,
"citations": [
{"fact_id": "coinglass.funding.btc", "source": "Coinglass"}
]
},
"meta": {"queries_used": 1, "latency_ms": 1640}
}Browse the production card catalogue at /ask-cards.
Reference
Rate limits
Limits are enforced per plan. One query means one chat turn, one REST request to the brain, or one MCP tool invocation. MCP uses a separate per-key minute bucket so agent traffic does not starve interactive chat.
| Plan | Queries / day | REST burst |
|---|---|---|
| Free | 25 | 10 / min |
| Pro | 2,000 | 60 / min |
| Builder | 50,000 | 600 / min |
| Enterprise | Custom | Custom |
Reference
Errors
API errors use standard HTTP status codes plus a JSON body shaped as { "error": { "code", "message" } }.
| Code | Meaning |
|---|---|
| 401 | Missing or invalid API key. |
| 402 | Daily query quota exhausted until the next reset. |
| 422 | The request was valid, but the brain could not resolve it safely. |
| 429 | Rate limited. Honor Retry-After or X-RateLimit-Reset. |
| 5xx | Transient server or provider error. Retry with backoff. |
Free tier covers 25 reasoning queries a day. No card required.