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

  1. Sign up with your email — takes about two seconds, no card.
  2. In the app, open Settings and expand Developer Access.
  3. Type REVEAL and click Show key. Copy it somewhere safe — we hash the key in our DB so we can't show it again on demand.
  4. 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.

ToolTierAuthReturns
chatfreeoptionalAuto-routed market chat (T1 fast / T2 CoT). Stocks, options, and crypto.
chat_deepprorequiredT3 supervisor — parallel specialists + synthesis (~25–40s). Pro tier.
alpha_signalsfreeoptionalLatest published signals across all desks. Each links to a public post-mortem.
signal_performancefreeoptionalWin-rate stats (1h / 4h / 24h windows). Same numbers as the public widget.
screenerfreeoptionalTrending + top gainers / losers across crypto + equities.
portfolio_listfreerequiredList portfolios you own.
portfolio_createfreerequiredCreate a new portfolio with positions.
portfolio_analyzefreerequiredPnL + risk + concentration analysis.
sessions_listfreerequiredYour recent chat sessions.
billing_statusfreerequiredPlan, daily quota, monthly LLM cost, monthly cap.
healthfreenoneServer uptime + provider circuit-breaker state.
register_challengefreenonePoW self-signup step 1 — issues a SHA-256 challenge.
registerfreenonePoW self-signup step 2 — provisions a Free-tier API key.
execute_propose_intentprotradePropose a trade to your connected broker — writes a pending intent you review + approve. No money moves here.
execute_approve_intentprotradeApprove a pending intent and place the real order at the broker. Returns the executed-order audit row.
execute_list_intentsprotradeList your recent trade intents — pending, executed, rejected.
execute_read_portfolioprotradeRead 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.

PlanQueries / dayREST burst
Free2510 / min
Pro2,00060 / min
Builder50,000600 / min
EnterpriseCustomCustom

Reference

Errors

API errors use standard HTTP status codes plus a JSON body shaped as { "error": { "code", "message" } }.

CodeMeaning
401Missing or invalid API key.
402Daily query quota exhausted until the next reset.
422The request was valid, but the brain could not resolve it safely.
429Rate limited. Honor Retry-After or X-RateLimit-Reset.
5xxTransient server or provider error. Retry with backoff.

Free tier covers 25 reasoning queries a day. No card required.