Software for Builders
Build with MarketIntell.
REST API, MCP server, webhooks, and SDK examples. Drop the same data + reasoning that powers our analyst desk into your trading bots, agents, and dashboards.
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
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 2
MCP server
Our MCP server exposes 13 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 3
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.
Free tier covers 20 reasoning queries/day. No card required.