Skip to main content
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.
The SimpleFunctions MCP server exposes 101 tools at:
See MCP server for client wire-up. For a tour of how SimpleFunctions tools compose, see Build agents.

Authentication

Every tool that mutates user data, reads private data, or hits a paid upstream takes an apiKey parameter:
Generate a key at /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; the text field contains JSON or Markdown depending on the tool.
  • Errors come back inside text as the upstream error body — they do not raise MCP-level exceptions. Treat any text that starts with Error: or includes a status field 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. 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 via sf 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 the 429 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.