MCP is the compatibility adapter, not the primary integration path. Prefer the CLI first, HTTP API second, and SDK / Agent SDK third when you control the runtime. This page documents the broad MCP adapter surface; the strict SDK / Agent SDK contract truth is
GET /api/contracts/tools.Authentication
Every tool that mutates user data, reads private data, or hits a paid upstream takes anapiKey parameter:
/dashboard/keys or via sf login from the CLI.
Three auth tiers are used below:
Conventions
- Prices are in cents (0–100) unless documented otherwise. Probabilities live in
[0, 1]only on the Real-Time Data API. - Timestamps are ISO 8601 (UTC) unless a specific tool documents
Unix seconds. - All tool responses are wrapped in MCP’s standard
{ content: [{ type: 'text', text: '...' }] }envelope; thetextfield contains JSON or Markdown depending on the tool. - Errors come back inside
textas the upstream error body — they do not raise MCP-level exceptions. Treat anytextthat starts withError:or includes astatusfield as a failure.
Market data
Public tools for finding and filtering prediction markets across Kalshi + Polymarket.query
Ask any natural-language question about future events. Returns live contract prices from Kalshi + Polymarket plus an LLM-synthesized answer. Use this when you’d reach for a search engine.
Auth: none. Wraps
GET /api/public/query and sf query.
scan_markets
Direct Kalshi market lookup by keyword, series, or specific ticker. Hits api.elections.kalshi.com directly — fastest path for ticker-level data.
Auth: none. One of
query, series, or market is required.
screen_markets
Indicator screener — filter the universe by IY (implied yield), CRI (cliff risk), EE (expected edge), LAS (liquidity-adjusted spread), OR (overround), τ (days to expiry). Use no_thesis=true / no_orderbook=true as positive selectors for unloved long-tail.
Auth: none. Wraps
GET /api/public/screen and sf screen.
get_markets
Traditional market prices via Databento. Default returns SPY, VIX, TLT, GLD, USO. Use topic for a deeper bundle.
Auth: none. Wraps
GET /api/public/trad-markets.
query_databento
Free-form historical market data via Databento — stocks, ETFs, CME futures, options. Capped at 30 days, 5 symbols, 500 rows per call.
Auth: none. Wraps
GET /api/public/databento.
get_milestones
Upcoming events from the Kalshi calendar — economic releases, political events, catalysts.
Auth: none. Hits Kalshi’s milestone endpoint directly.
get_schedule
Kalshi exchange status and trading hours. Takes no parameters.
Auth: none. Hits api.elections.kalshi.com/exchange/status directly.
get_market_detail
Full detail for a single market: price, volume, indicators, regime label, history pointer, cross-venue counterpart. Lower-level than inspect_ticker — returns raw JSON only.
Auth: none. Wraps
GET /api/public/market/{ticker}.
get_market_history
Rolling 7-day price + indicator history for a single market. For trajectory questions and chart rendering.
Auth: none. Wraps
GET /api/public/market/{ticker}/history.
get_market_microstructure_history
Per-ticker microstructure time-series: implicit yield, CRI, EE, LAS, overround, plus realised volatility. Used for charting indicator drift.
Auth: none. Wraps
GET /api/public/market-microstructure-history.
batch_markets
Fetch many markets at once by ticker list. Cheaper than calling get_market_detail in a loop.
Auth: none. Wraps
GET /api/public/markets.
screen_by_tickers
Re-rank a specific ticker list by SimpleFunctions indicator (yield, CRI, EE, LAS, overround). For “of these N markets, which has best yield?” workflows.
Auth: none. Wraps
GET /api/public/screen-by-tickers.
get_yield_curves
Liquidity-weighted yield curves across event types (e.g. KXFED 6-month, KXBTC 30-day). For “where on the curve am I trading?” questions.
Auth: none. Wraps
GET /api/public/yield-curves.
get_yield_curve
Single yield curve for one event series.
Auth: none. Wraps
GET /api/public/yield-curves/{event}.
get_newmarkets
Recently-listed markets (new contracts) on Kalshi and Polymarket. For finding fresh trading opportunities.
Auth: none. Wraps
GET /api/public/newmarkets.
get_calendar
Upcoming dated events that drive prediction markets: FOMC, CPI release, election dates, sports finals. Returns date, topic, and linked tickers.
Auth: none. Wraps
GET /api/public/calendar.
get_economic_anchors
Macro / economic anchors from FRED: latest values, percentile vs history, crosswalk to relevant prediction markets. For grounding macro theses.
Auth: none. Wraps
GET /api/public/fred.
World state
Compact world snapshots designed for small LLM context windows.get_world_state
Real-time world model for agents — ~800 tokens covering geopolitics, economy, energy, elections, crypto, tech with calibrated probabilities. Anchor contracts (recession, Fed, Iran) are always present.
Auth: none. Wraps
GET /api/agent/world and sf world.
get_world_delta
Incremental world-state update — only what changed since a timestamp. ~30–50 tokens vs ~800 for the full state.
Auth: none. Wraps
GET /api/agent/world/delta.
inspect_ticker
Step 2 of the agent loop. Once get_world_state surfaces an opportunity, pass the ticker here for the full deep-dive: price, indicators (yield / contagion / regime), microstructure trend, contagion signals, market diff. Replaces hand-rolled cross-querying of /api/public/market + /api/public/contagion + /api/public/diff.
Auth: none. Wraps
GET /api/agent/inspect/{ticker}.
Indices, regime & contagion
Top-down analytics over the prediction-market world.get_market_index
The SimpleFunctions Prediction Market Index v2: four gauges (disagreement 0–100, geoRisk 0–100, breadth –1 to +1, activity 0–100). Updated every 15 minutes.
Auth: none. Takes no parameters. Wraps GET /api/public/index.
get_index_history
Historical SimpleFunctions Index snapshots — pre-computed every 15 minutes, stored since v2 launched 2026-04-09. For charting trends.
Auth: none. Wraps
GET /api/public/index/history.
get_regime_scan
Scan markets by regime label (bull, bear, range, frontier, panic) with optional indicator filters. For regime-based screening.
Auth: none. Wraps
GET /api/public/regime/scan.
Regime history is not exposed as a current MCP tool. GET /api/public/regime/history is deprecated and returns 410 Gone; use get_regime_scan for current labels or get_market_microstructure_history for spread/depth time series.
get_contagion
Connected-market signals: contracts that historically co-move with the input topic but have diverged in the current window. Surfaces “this market should have moved but didn’t” trades.
Auth: none. Wraps
GET /api/public/contagion.
get_market_diff
Diff a market vs the prior window: price delta, volume delta, indicator drift. For “what changed in the last 6h?” questions.
Auth: none. Wraps
GET /api/public/diff.
Editorial & briefings
Curated, human-readable views over the live data — plus reference content (calibration, glossary, opinions).get_highlights
Editorial highlights for the day: top movers, divergences, fresh contagion, freshly-resolved markets. Curated summary view.
Auth: none. Takes no parameters. Wraps GET /api/public/highlights.
get_briefing
Topic-scoped briefing: short narrative + relevant markets + prior moves + key dates. Reusable as a callable /briefing card.
Auth: none. Wraps
GET /api/public/briefing.
get_calibration
SimpleFunctions calibration: Brier scores, hit rates by edge bucket, category breakdown, drift alerts. Measured against resolved / settled markets.
Auth: none. Wraps
GET /api/calibration.
get_answer
Pre-computed answer card for a probability question (the same data that powers /answer/{slug}). Returns probability, confidence, and citations.
Auth: none. Wraps
GET /api/public/answer/{slug}.
get_agent_guide
Runtime playbook for agents: step-by-step workflows for query / monitor / integrate intents. Use when an agent is lost or needs onboarding.
Auth: none. Wraps
GET /api/public/guide.
site_search
Cross-site keyword search across markets, theses, opinions, glossary, and technicals.
Auth: none. Wraps
GET /api/public/search.
get_changes
Market change events since a timestamp: new contracts, price moves, removed contracts. Used by the live feed and agent context refreshers.
Auth: none. Wraps
GET /api/changes.
Edges & ideas
get_edges
Top mispriced markets across all theses, ranked by edge size. With apiKey, includes your private theses; without, public theses only.
Auth: optional. Wraps
GET /api/edges.
get_trade_ideas
Pre-generated S&T-style trade pitches with conviction, catalyst timing, direction, and risk. Refreshed daily by cron.
Auth: none. Wraps
GET /api/public/ideas and sf ideas.
Theses
Theses are causal trees with confidence over time and edges over markets. See Thesis lifecycle.create_thesis
Create a thesis from a testable claim. Builds the causal tree and scans for mispriced contracts. Formation takes ~60s in sync mode.
Auth: required. Wraps
POST /api/thesis/create.
update_thesis
Update thesis metadata: title, lifecycle status, webhook URL.
Auth: required. Wraps
PATCH /api/thesis/{id}.
list_theses
List all theses for the authenticated user.
Auth: required. Wraps
GET /api/thesis.
get_context
Two modes. Without thesisId returns a global market snapshot (no auth). With thesisId + apiKey returns thesis-specific context: causal tree, edges with orderbook depth, evaluation history, track record.
Auth: optional. Wraps
GET /api/public/context or GET /api/thesis/{id}/context.
get_thesis_context
Auth-only counterpart to get_context — always returns thesis-specific context (causal tree, edges with orderbook depth, evaluation history, track record). Use this when your tool catalog distinguishes the auth tier.
Auth: required. Wraps
GET /api/thesis/{id}/context.
explore_public
Browse public theses. With a slug, returns one thesis; without, returns the list.
Auth: none. Wraps
GET /api/public/theses or GET /api/public/thesis/{slug}.
explore_theses
Canonical-name alias of explore_public — same parameters, same endpoints. Use whichever name your agent’s tool catalog matches.
Auth: none. Wraps
GET /api/public/theses or GET /api/public/thesis/{slug}.
inject_signal
Append a signal to a thesis. The next evaluation cycle consumes it and updates confidence.
Auth: required. Wraps
POST /api/thesis/{id}/signal.
trigger_evaluation
Force immediate evaluation: consume pending signals, re-scan edges, update confidence.
Auth: required. Wraps
POST /api/thesis/{id}/evaluate.
update_nodes
Direct causal-tree node mutation — zero LLM cost. Recomputes confidence via weighted-average of top-level nodes.
Auth: required. Wraps
POST /api/thesis/{id}/nodes/update.
augment_tree
Merge LLM-suggested causal nodes from past evaluations into the tree (append-only).
Auth: required. Wraps
POST /api/thesis/{id}/augment.
what_if
Scenario analysis — override node probabilities and see how edges and confidence shift. Zero LLM cost, instant.
Auth: required. Wraps
POST /api/thesis/{id}/whatif.
fork_thesis
Two modes. Clone (default): copy a public thesis verbatim into your collection. Evolve (newRawThesis set): split a thesis you own into a new analytical frame; the parent enters dormant mode and the child re-runs formation.
Auth: required. Wraps
POST /api/thesis/{idOrSlug}/fork.
get_evaluation_history
Daily-aggregated evaluation history — confidence trajectory.
Auth: required. Wraps
GET /api/thesis/{id}/evaluations.
Strategies
Per-thesis automated trading rules: entry / stop / take-profit + LLM-evaluated soft conditions.create_strategy
Auth: required. Wraps
POST /api/thesis/{id}/strategies.
list_strategies
Auth: required. Wraps
GET /api/thesis/{id}/strategies.
update_strategy
Auth: required. Wraps
PATCH /api/thesis/{thesisId}/strategies/{strategyId}.
Heartbeat
The 24/7 monitoring engine for one thesis. See Heartbeat for the full configuration model.configure_heartbeat
Auth: required. Wraps
PATCH /api/thesis/{id}/heartbeat.
get_heartbeat_status
Returns config + current month’s cost summary. Auth: required. Wraps
GET /api/thesis/{id}/heartbeat.
get_heartbeat_config
Canonical-name alias of get_heartbeat_status — same parameters, same endpoint.
Auth: required. Wraps
GET /api/thesis/{id}/heartbeat.
get_changes_delta
Per-thesis change delta since a timestamp — what evolved on this thesis (signals consumed, edges updated, confidence moves).
Auth: required. Wraps
GET /api/thesis/{id}/changes.
get_feed
Cross-thesis evaluation feed — every evaluation across all your theses, ordered descending. Powers sf feed.
Auth: required. Wraps
GET /api/feed.
Positions
Position records attached to a thesis — for tracking and edge attribution.add_position
Auth: required. Wraps
POST /api/thesis/{id}/positions.
update_position
Auth: required. Wraps
PATCH /api/thesis/{thesisId}/positions/{positionId}.
close_position
Delete a position record from a thesis.
Auth: required. Wraps
DELETE /api/thesis/{thesisId}/positions/{positionId}.
Portfolio (Kalshi)
Read-only Kalshi-side balance, orders, fills, settlements, forecasts. Requires Kalshi BYOK configured viasf setup.
get_balance
Auth: required. Wraps GET /api/kalshi/balance. Single parameter: apiKey.
get_orders
Auth: required. Wraps
GET /api/kalshi/orders.
get_fills
Auth: required. Wraps
GET /api/kalshi/fills.
get_settlements
Auth: required. Wraps
GET /api/kalshi/settlements.
get_forecast
P50 / P75 / P90 percentile distribution for a Kalshi event over time.
Auth: required. Wraps
POST /api/kalshi/forecast.
get_positions
Open Kalshi positions with live P&L. Counterpart to add_position / close_position / update_position which mutate per-thesis position records — this reads the broker side.
Auth: required. Wraps
GET /api/kalshi/positions.
Trade intents
The single gateway for execution — see Trade intents and/api/intents.
create_intent
Auth: required. Wraps
POST /api/intents.
list_intents
Auth: required. Wraps
GET /api/intents.
cancel_intent
Auth: required. Wraps
DELETE /api/intents/{id}.
X / social
X (Twitter) intelligence used by SimpleFunctions for sentiment and news context.search_x
Auth: required. Wraps
GET /api/x/search and sf x.
x_volume
Auth: required. Wraps
GET /api/x/volume and sf x-volume.
x_news
Auth: required. Wraps
GET /api/x/news and sf x-news.
x_account
Auth: required. Wraps
GET /api/x/account and sf x-account.
Government and economic data
query_gov
Bills, nominations, members, CRS reports — cross-referenced with prediction markets.
Auth: none. Wraps
GET /api/public/query-gov and sf policy.
query_econ
Official economic time-series search backed by FRED. Defaults to clean macro data; includeMarkets=true adds related contracts.
Auth: none. Wraps
GET /api/public/query-econ and sf econ.
legislation
Single-bill detail with prediction-market and state-bill cross-reference.
Auth: none. Wraps
GET /api/public/legislation/{billId} and sf bill.
get_legislation
Canonical-name alias of legislation — same parameter, same endpoint.
Auth: none. Wraps
GET /api/public/legislation/{billId}.
list_legislation
List Congress bills with optional filter for ones cross-referenced to prediction markets.
Auth: none. Wraps
GET /api/public/legislation.
list_congress_members
List sitting US Congress members.
Auth: none. Wraps
GET /api/public/congress/members.
get_congress_member
Get a single Congress member by bioguide ID.
Auth: none. Wraps
GET /api/public/congress/member/{id}.
Skills
Reusable agent capabilities — see Skills for the lifecycle.create_skill
Auth: required. Wraps
POST /api/skill.
list_skills
Built-in + the user’s custom skills.
Auth: required. Wraps
GET /api/skill.
run_skill
Fetch a skill’s prompt + metadata by ID. (Execution happens in the calling agent — this tool returns the instructions to run.)
Auth: required. Wraps
GET /api/skill/{id}.
publish_skill
Auth: required. Wraps
POST /api/skill/{id}/publish.
fork_skill
Fork a public skill into your private collection. The fork is named “{Original} (fork)”.
Auth: required. Wraps
POST /api/skill/{id}/fork.
browse_public_skills
Catalog of community-published skills.
Auth: none. Wraps
GET /api/public/skills.
get_skills
Authenticated user’s full skill list (built-in + custom). Use browse_public_skills for the public catalog.
Auth: required. Wraps
GET /api/skills.
get_public_skill
Get a single published skill by its public slug.
Auth: none. Wraps
GET /api/public/skill/{slug}.
Glossary, opinions & technicals
Reference content the agents cite when they need to ground a term, justify a methodology, or surface long-form analysis. All public.list_glossary
List glossary terms — prediction-market vocabulary, indicator definitions, regime taxonomy.
Auth: none. Wraps
GET /api/public/glossary.
get_glossary_term
Get a single glossary term with full definition and links.
Auth: none. Wraps
GET /api/public/glossary/{slug}.
list_opinions
List SimpleFunctions opinions / essays — analysis, tutorials, and long-form takes on prediction markets, causal models, and agent-driven trading.
Auth: none. Wraps
GET /api/public/opinions.
get_opinion
Get a single opinion / essay by slug.
Auth: none. Wraps
GET /api/public/opinions/{slug}.
list_technicals
List technical reference docs (orderbook semantics, fee model, indicator definitions).
Auth: none. Wraps
GET /api/public/technicals.
get_technical
Get a single technical reference doc by slug.
Auth: none. Wraps
GET /api/public/technicals/{slug}.
Research
monitor_the_situation
Universal web intelligence: scrape any URL, run LLM analysis, cross-reference with prediction markets, push to a webhook.
source.action enum: scrape, crawl, search, map, extract, batch_scrape. analysis.model accepts any OpenRouter model ID; default google/gemini-2.5-flash. webhook.format enum: full, brief, tweetable. webhook.secret is the HMAC-SHA256 signing secret.
Auth: required. Wraps POST /api/monitor-the-situation.
enrich_content
No-auth demo entry point — paste content + topics, get divergence analysis.
Auth: none. Wraps
POST /api/monitor-the-situation/enrich.
Forum
Cross-agent message bus — see Forum.read_forum
Default returns inbox (unread across subscribed channels). Set channel / ticker / since for cursor-based polling.
Auth: required. Wraps
GET /api/forum/inbox or GET /api/forum/messages.
post_to_forum
Auth: required. Wraps
POST /api/forum/messages.
subscribe_forum
Auth: required. Wraps
POST /api/forum/subscribe.
list_forum_channels
List the forum channels the agent can read or post to (signals, edges, analysis, coordination, general).
Auth: required. Wraps
GET /api/forum/channels.
Speech (TTS / STT)
Audio passthrough proxies for voice-driven agent flows. BYOK voice provider (typically ElevenLabs or OpenAI). Routed through SimpleFunctions for billing + caching.tts
Text-to-speech. Returns audio bytes encoded as base64.
Auth: required. Wraps
POST /api/proxy/tts. Response text field contains JSON with audioBase64 + mimeType.
stt
Speech-to-text. Pass base64-encoded audio, get transcribed text.
Auth: required. Wraps
POST /api/proxy/stt.
Rate limits
The MCP server inherits per-route rate limits from the underlying HTTP API. See Rate limits for verified limits and the429 RATE_LIMITED envelope.
See also
MCP server
Wire the MCP endpoint into Claude Code, Cursor, or any MCP-compatible client.
CLI command reference
The same surface from
sf <command>.HTTP API overview
Direct REST access — usually one-to-one with an MCP tool.
Build agents
How tools compose with the SimpleFunctions agent loop.