# io.github.spfunctions/simplefunctions (remote · simplefunctions.dev)

Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.

- Trust score: 65/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `simplefunctions.dev`: 65/100 (this document), [markdown](https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp.md), [page](https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp)
- npm · `@spfunctions/cli`: 31/100, [markdown](https://verifymcp.io/servers/spfunctions-simplefunctions/spfunctions-cli.md), [page](https://verifymcp.io/servers/spfunctions-simplefunctions/spfunctions-cli)

## Channel facts

- Endpoint: `https://simplefunctions.dev/api/mcp/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 108 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 58/100
  - AI-judged instruction clarity (fair).
  - Tool/resource definitions use about 9728 tokens (~90/item across 108 items; 108 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 86% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http spfunctions-simplefunctions https://simplefunctions.dev/api/mcp/mcp
```

### Codex

```toml
[mcp_servers.spfunctions-simplefunctions]
url = "https://simplefunctions.dev/api/mcp/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "spfunctions-simplefunctions": {
      "type": "remote",
      "url": "https://simplefunctions.dev/api/mcp/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add spfunctions-simplefunctions --url https://simplefunctions.dev/api/mcp/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  spfunctions-simplefunctions:
    url: "https://simplefunctions.dev/api/mcp/mcp"
```

### Other

```json
{
  "mcpServers": {
    "spfunctions-simplefunctions": {
      "type": "http",
      "url": "https://simplefunctions.dev/api/mcp/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 60, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 60)

First indexed and scored.

## MCP tools (108)

### `get_context` (~139 tokens)

START HERE. Global market snapshot: top edges (mispriced contracts), price movers, highlights, traditional markets — live exchange data updated every 15 min. With thesisId + apiKey: thesis-specific context including causal tree, edges with orderbook depth, evaluation history, and track record. Global context is free-tier and rate-limited; API keys unlock higher limits.

Input parameters:

- `apiKey` (string): SimpleFunctions API key. Required only for thesis-specific context. Get one at https://simplefunctions.dev/dashboard/keys or run: sf login
- `thesisId` (string): Thesis ID. Omit for global market snapshot on the free tier.

### `list_theses` (~41 tokens)

List all theses for the authenticated user.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys

### `inject_signal` (~88 tokens)

Feed an observation into a thesis — news, price move, or external event. Consumed in next evaluation cycle to update confidence and edges.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `content` (string, required): Signal content
- `thesisId` (string, required): Thesis ID
- `type` (string): Signal type

### `trigger_evaluation` (~66 tokens)

Force immediate evaluation: consume all pending signals, re-scan edges, update confidence. Use after injecting important signals.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `thesisId` (string, required): Thesis ID

### `scan_markets` (~103 tokens)

Search Kalshi prediction markets by keyword, series, or ticker. Returns live prices and volume — data not available via web search. Free-tier and rate-limited.

Input parameters:

- `market` (string): Specific market ticker (e.g. KXWTIMAX-26DEC31-T140)
- `query` (string): Keyword search (e.g. "oil recession")
- `series` (string): Kalshi series ticker (e.g. KXWTIMAX)

### `create_thesis` (~132 tokens)

Create a new prediction market thesis from a TESTABLE CLAIM — a statement that can be verified true or false at a future time. GOOD: "Bitcoin closes 2026 above $50,000". BAD: "High conviction due to large price gap" (that is reasoning, not a claim). Builds a causal tree and scans for mispriced contracts. Formation takes ~60s.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `sync` (boolean): Wait for formation to complete
- `thesis` (string, required): Your thesis statement

### `explore_public` (~51 tokens)

Browse public theses from other users. Free-tier and rate-limited. Pass a slug to get details, or omit to list all.

Input parameters:

- `slug` (string): Specific thesis slug, or empty to list all

### `get_markets` (~129 tokens)

Get traditional market prices via Databento. Default: SPY, VIX, TLT, GLD, USO. Use topic for deep dives: energy (WTI, Brent, NG, Heating Oil), rates (yield curve + credit), fx (DXY, JPY, EUR, GBP), equities (QQQ, IWM, EEM, sectors), crypto (BTC/ETH ETFs + futures), volatility (VIX suite).

Input parameters:

- `topic` (string): Deep dive topic: energy, rates, fx, equities, crypto, volatility. Omit for core 5.

### `query_databento` (~247 tokens)

Free-form historical market data query via Databento. Stocks, ETFs, CME futures (WTI, Brent, bonds, VIX, FX, BTC), options. OHLCV daily/hourly/minute, trades, BBO. Max 30 days, 5 symbols, 500 rows. Free-tier and rate-limited.

Input parameters:

- `dataset` (string): DBEQ.BASIC (stocks/ETFs, default), GLBX.MDP3 (CME futures), OPRA.PILLAR (options), XNAS.BASIC (Nasdaq)
- `days` (number): Lookback days (default 7, max 30)
- `schema` (string): ohlcv-1d (default), ohlcv-1h, ohlcv-1m, trades, bbo-1s, bbo-1m, statistics, definition
- `stype` (string): raw_symbol (default) or continuous (for .FUT symbols)
- `symbols` (string, required): Comma-separated symbols (max 5). Use .FUT for continuous futures. Examples: SPY, CL.FUT, ES.FUT, GLD

### `query` (~93 tokens)

BEST FOR QUESTIONS. Ask any question about probabilities or future events. Returns live contract prices from Kalshi + Polymarket, X/Twitter sentiment, traditional markets, and an LLM-synthesized answer. Free-tier and rate-limited; API keys unlock higher limits.

Input parameters:

- `q` (string, required): Natural language query (e.g. "iran oil prices", "fed rate cut 2026", "recession probability")

### `screen_markets` (~494 tokens)

Indicator-based market screener. The middle layer between raw price scan and LLM thesis edges. Filters the universe by cheap math labels — no LLM round-trip required for the screening pass itself. Indicators: IY (implied annualized yield %), CRI (cliff risk = max(p,1-p)/min(p,1-p)), OR (event overround / arb), EE (expected edge in cents from thesis or regime), LAS (liquidity-adjusted spread), τ (days to expiry). Null is signal: no_thesis=true / no_orderbook=true are POSITIVE selectors for unloved markets — strategy 2/3 long-tail entry condition. Free-tier and rate-limited; API keys unlock higher limits.

Input parameters:

- `category` (string): crypto, political, financial, sports, etc — kalshi-supplied category from snapshot blob
- `cri_max` (number): Maximum cliff risk = max(p,1-p)/min(p,1-p). 1=balanced, ∞=cliff.
- `cri_min` (number)
- `ee_min` (number): Minimum expected edge in cents (requires thesis or regime row).
- `has_orderbook` (boolean): Only markets with cached orderbook (last 6h regime row).
- `has_thesis` (boolean): Only markets covered by an active public thesis.
- `iy_max` (number)
- `iy_min` (number): Minimum implied yield, annualized %. Try 200 for long-tail.
- `keyword` (string): Substring filter on title.
- `las_max` (number): Maximum liquidity-adjusted spread (spread/mid). Try 0.05.
- `limit` (number): Default 50, max 200
- `no_orderbook` (boolean): POSITIVE selector — only markets WITHOUT recent orderbook attention.
- `no_thesis` (boolean): POSITIVE selector — only markets WITHOUT a thesis (unloved long tail).
- `or_max` (number)
- `or_min` (number): Minimum event overround. 0.05 = 105¢ field (book-maker margin or arb).
- `order` (string): Default: desc
- `sort` (string): Sort field. Default: iy
- `tau_max_days` (number): Maximum days to expiry.
- `tau_min_days` (number)
- `venue` (string)

### `create_strategy` (~256 tokens)

Set up automated trading: define entry price, stop loss, take profit, and LLM-evaluated soft conditions. The heartbeat engine checks conditions every 15 min and executes when met.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `direction` (string, required): Trade direction
- `entryAbove` (number): Entry trigger: ask >= this value (cents, for NO direction)
- `entryBelow` (number): Entry trigger: ask <= this value (cents)
- `horizon` (string): Time horizon
- `market` (string, required): Human-readable market name
- `marketId` (string, required): Market ticker e.g. KXWTIMAX-26DEC31-T150
- `maxQuantity` (number): Max total contracts
- `perOrderQuantity` (number): Contracts per order
- `rationale` (string): Full logic description
- `softConditions` (string): LLM-evaluated conditions
- `stopLoss` (number): Stop loss: bid <= this value (cents)
- `takeProfit` (number): Take profit: bid >= this value (cents)
- `thesisId` (string, required): Thesis ID

### `list_strategies` (~74 tokens)

Advanced: List trading strategies for a thesis.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `status` (string): Filter: active|watching|executed|cancelled|review
- `thesisId` (string, required): Thesis ID

### `update_strategy` (~178 tokens)

Advanced: Update a trading strategy (stop loss, take profit, status).

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `entryAbove` (number): New entry above trigger (cents)
- `entryBelow` (number): New entry below trigger (cents)
- `priority` (number): New priority
- `rationale` (string): Updated rationale
- `softConditions` (string): Updated soft conditions
- `status` (string): New status: active|watching|executed|cancelled|review
- `stopLoss` (number): New stop loss (cents)
- `strategyId` (string, required): Strategy ID (UUID)
- `takeProfit` (number): New take profit (cents)
- `thesisId` (string, required): Thesis ID

### `get_milestones` (~71 tokens)

Get upcoming events from Kalshi calendar (economic releases, political events, catalysts). Free-tier and rate-limited.

Input parameters:

- `category` (string): Filter by category (e.g. Economics, Politics, Sports)
- `hours` (number): Hours ahead to look (default 168 = 1 week)

### `get_forecast` (~103 tokens)

Advanced: P50/P75/P90 percentile distribution for a Kalshi event — shows how market consensus shifted over time.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key (needed for authenticated Kalshi calls). Get one at https://simplefunctions.dev/dashboard/keys
- `days` (number): Days of history (default 7)
- `eventTicker` (string, required): Kalshi event ticker (e.g. KXWTIMAX-26DEC31)

### `get_settlements` (~56 tokens)

Advanced: Settled contracts with realized P&L.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `ticker` (string): Filter by market ticker

### `get_balance` (~42 tokens)

Advanced: Kalshi account balance and portfolio value.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys

### `get_orders` (~61 tokens)

Advanced: Current resting orders on Kalshi.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `status` (string): Filter by status: resting, canceled, executed. Default: resting

### `get_schedule` (~15 tokens)

Get exchange status and trading hours

### `get_fills` (~53 tokens)

Advanced: Recent trade fills on Kalshi.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `ticker` (string): Filter by market ticker

### `what_if` (~104 tokens)

Scenario analysis: "what if OPEC cuts production?" Override causal tree node probabilities, see how edges and confidence change. Zero LLM cost, instant.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `overrides` (object, required): Node probability overrides, e.g. {"n1": 0.1, "n3": 0.2}
- `thesisId` (string, required): Thesis ID

### `augment_tree` (~73 tokens)

Advanced: Merge suggested causal tree nodes from evaluations into the tree (append-only).

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `dryRun` (boolean): Preview without applying (default: false)
- `thesisId` (string, required): Thesis ID

### `get_edges` (~100 tokens)

Top mispriced markets across all theses, ranked by edge size. Shows where your model disagrees with the market. No auth = public thesis edges. Auth = private + public.

Input parameters:

- `apiKey` (string): SimpleFunctions API key. Omit for public edges only.
- `limit` (number): Max edges to return
- `minEdge` (number): Minimum edge in cents
- `venue` (string): Filter: kalshi or polymarket

### `get_trade_ideas` (~119 tokens)

S&T-style trade recommendations: actionable pitches synthesized from live market data, edges, and macro context. Each idea has conviction level, catalyst timing, direction, and risk. Free-tier and rate-limited. START HERE when looking for what to trade.

Input parameters:

- `category` (string): Filter: macro, geopolitics, crypto, policy, event
- `freshness` (string): Max cache age: 1h, 6h, 12h, 1d
- `limit` (number): Max ideas (1-10)

### `create_intent` (~299 tokens)

Declare an execution intent: "buy X when condition Y, expire at Z." Intents are the single gateway for all order execution. The local runtime daemon evaluates triggers and executes via user's Kalshi/Polymarket keys.

Input parameters:

- `action` (string, required): Trade action
- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `autoExecute` (boolean): Auto-execute without later human confirmation. Defaults to false unless explicitly set true.
- `direction` (string, required): Contract direction
- `expireAt` (string): ISO timestamp when intent expires (default: +24h)
- `marketId` (string, required): Market ticker (e.g. KXFEDDEC-25DEC31-T100)
- `marketTitle` (string, required): Human-readable market name
- `maxPrice` (number): Max price per contract in cents (1-99). Omit for market order.
- `rationale` (string): Why this trade — logged for audit trail
- `source` (string): Intent source: agent, manual, idea
- `sourceId` (string): Source reference (idea ID, thesis ID, etc.)
- `targetQuantity` (number, required): Number of contracts
- `triggerPrice` (number): Price trigger threshold in cents (for price_below/price_above)
- `triggerType` (string): When to execute
- `venue` (string, required): Exchange venue

### `list_intents` (~103 tokens)

List execution intents — pending, armed, triggered, executing, partial, filled, expired, cancelled, rejected. Shows the full execution pipeline status.

Input parameters:

- `activeOnly` (boolean): Only show active intents (default true)
- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `status` (string): Filter: pending, armed, triggered, executing, partial, filled, expired, cancelled, rejected

### `cancel_intent` (~57 tokens)

Cancel an active intent. Stops trigger evaluation and prevents execution.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `intentId` (string, required): Intent ID to cancel

### `search_x` (~129 tokens)

Search X/Twitter for social sentiment on any topic. Returns posts sorted by engagement. Not available via web search — uses X API directly.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `hours` (number): Hours to search back (default 24)
- `limit` (number): Max posts to return (default 20)
- `mode` (string): raw = structured JSON, summary = LLM synthesis
- `query` (string, required): Search query (e.g. "iran oil", "hormuz shipping")

### `x_volume` (~85 tokens)

Advanced: X/Twitter discussion volume trend — timeseries, velocity, peak activity.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `granularity` (string): Timeseries granularity
- `hours` (number): Hours to look back (default 72)
- `query` (string, required): Search query

### `x_news` (~72 tokens)

Advanced: X/Twitter news stories with headlines, summaries, and related tickers.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `limit` (number): Max stories (default 10)
- `query` (string, required): News search query

### `x_account` (~86 tokens)

Advanced: Recent posts from a specific X/Twitter account.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `hours` (number): Hours to look back (default 24)
- `limit` (number): Max posts (default 20)
- `username` (string, required): X/Twitter username (without @)

### `configure_heartbeat` (~218 tokens)

Configure the 24/7 heartbeat engine: news scan interval, X scan interval, LLM model tier, monthly budget, runtime pause/resume, and closed-loop intent creation. Agent can speed up monitoring during high volatility or slow down to save budget.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `closedLoopEntry` (boolean): Enable/disable closed-loop entry intent creation
- `closedLoopExit` (boolean): Enable/disable closed-loop exit intent creation
- `evalModelTier` (string): LLM model for evaluations
- `monthlyBudgetUsd` (number): Monthly budget cap in USD (0 = unlimited)
- `newsIntervalMin` (number): News scan interval in minutes (15-1440, default 240)
- `paused` (boolean): Pause/resume heartbeat
- `thesisId` (string, required): Thesis ID
- `xIntervalMin` (number): X/social scan interval in minutes (60-1440, default 240)

### `update_thesis` (~118 tokens)

Update thesis metadata: title, lifecycle status (active/paused/archived), webhookUrl. Use configure_heartbeat.paused for runtime heartbeat pause/resume.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `status` (string): New status: active, paused, archived
- `thesisId` (string, required): Thesis ID
- `title` (string): New thesis title
- `webhookUrl` (string): Webhook URL for confidence change notifications (HTTPS only)

### `add_position` (~136 tokens)

Record a new position in a thesis for tracking. Use after an intent fills or a manual trade.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `direction` (string, required): Position direction
- `entryPrice` (number, required): Entry price in cents
- `externalMarketId` (string, required): Market ticker
- `marketTitle` (string, required): Human-readable market name
- `rationale` (string): Why this position
- `size` (number): Position size (contracts)
- `thesisId` (string, required): Thesis ID
- `venue` (string, required): Exchange venue

### `update_position` (~132 tokens)

Update a position: current price, edge, size, status (open→closed). Use to mark positions as closed or update tracking data.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `currentPrice` (number): Current market price in cents
- `edge` (number): Current edge in cents
- `positionId` (string, required): Position ID
- `rationale` (string): Updated rationale
- `size` (number): Updated size
- `status` (string): open or closed
- `thesisId` (string, required): Thesis ID

### `close_position` (~60 tokens)

Delete a position record from a thesis.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `positionId` (string, required): Position ID
- `thesisId` (string, required): Thesis ID

### `get_evaluation_history` (~67 tokens)

Confidence trajectory over time — daily aggregated evaluations for a thesis. Use to analyze trends, detect convergence/divergence.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `thesisId` (string, required): Thesis ID

### `update_nodes` (~146 tokens)

Directly update causal tree node probabilities — zero LLM cost, instant. Use when the agent observes a confirmed fact (e.g. "CPI came in at 3.2%") and wants to reflect it immediately. Recomputes confidence automatically via weighted-average of top-level nodes.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `lock` (array): Advisory pin — tells future evaluations that these nodes are well-supported. Evidence can still revise them; pinning no longer makes a node permanent.
- `thesisId` (string, required): Thesis ID
- `updates` (array, required): Node updates to apply

### `get_heartbeat_status` (~68 tokens)

Get heartbeat config + this month's cost summary for a thesis. See news/X scan intervals, model tier, budget usage.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `thesisId` (string, required): Thesis ID

### `monitor_the_situation` (~129 tokens)

Universal web intelligence. Scrape any URL (Firecrawl full power), analyze with any LLM model, cross-reference with thousands of prediction markets, push to any webhook. Requires API key (apiKey parameter). For free demo, use enrich_content instead.

Input parameters:

- `analysis` (object): LLM analysis of scraped content
- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `enrich` (object): Cross-reference with prediction markets
- `source` (object, required)
- `webhook` (object): Push results to a webhook

### `enrich_content` (~129 tokens)

Cross-reference any text with thousands of prediction market contracts. Paste content + topics, get divergence analysis: where sentiment disagrees with market prices. No auth, no Firecrawl needed. Demo/trial entry point.

Input parameters:

- `content` (string, required): Text content to cross-reference (up to 50K chars)
- `includeIndex` (boolean): Include SimpleFunctions Index
- `model` (string): LLM model for digest generation. Default: google/gemini-2.5-flash
- `topics` (array, required): Topics to search in prediction markets, e.g. ["iran", "oil"]

### `create_skill` (~171 tokens)

Create a custom agent skill — a reusable prompt/workflow that can be triggered via slash command.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `auto` (string): Auto-trigger condition
- `category` (string): Category: custom, trading, research, monitoring
- `description` (string, required): What this skill does
- `estimatedTime` (string): Estimated run time
- `name` (string, required): Skill name (e.g. "precheck")
- `prompt` (string, required): The full prompt/instructions for the skill
- `tags` (array): Tags for discovery
- `toolsUsed` (array): SimpleFunctions tools this skill uses
- `trigger` (string, required): Slash command trigger (e.g. "/precheck")

### `list_skills` (~45 tokens)

List all skills: built-in + user-created custom skills.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys

### `run_skill` (~65 tokens)

Get a skill by ID or trigger to run it. Returns the skill prompt and metadata.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `skillId` (string, required): Skill ID (UUID) to retrieve

### `publish_skill` (~80 tokens)

Publish a skill to make it publicly browsable and forkable.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `skillId` (string, required): Skill ID to publish
- `slug` (string, required): Public URL slug (3-60 chars, lowercase, numbers, hyphens)

### `fork_skill` (~62 tokens)

Fork a public skill into your collection. No slug needed — just the skill ID.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `skillId` (string, required): Public skill ID to fork

### `browse_public_skills` (~83 tokens)

Browse public skills from the community. Free-tier and rate-limited. Filter by category, search, or sort by popularity.

Input parameters:

- `category` (string): Filter by category: custom, trading, research, monitoring
- `q` (string): Search skills by name/description
- `sort` (string): Sort order: popular or new (default: new)

### `fork_thesis` (~235 tokens)

Fork a thesis. Two modes: (1) Clone — call with just idOrSlug to copy a PUBLIC thesis verbatim into your collection. (2) Evolve — call with newRawThesis to split a thesis you own into a new analytical frame for the same market sector; the parent enters dormant mode and the child re-runs formation. Use evolve when the current frame is fundamentally inadequate for what the evidence now shows.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Get one at https://simplefunctions.dev/dashboard/keys
- `idOrSlug` (string, required): Thesis ID or public slug
- `inheritEdgeMarketIds` (array): Evolve mode: subset of current edge marketIds to carry over. Omit to let formation rescan fresh.
- `newRawThesis` (string): Evolve mode: new frame in 1-3 sentences. Omit for clone mode.
- `newTitle` (string): Evolve mode: short title for the new thesis, ≤60 chars
- `reason` (string): Evolve mode: why the original frame is no longer adequate

### `get_world_state` (~112 tokens)

Real-time world model for agents. ~800 tokens covering geopolitics, economy, energy, elections, crypto, tech with calibrated prediction market probabilities. Anchor contracts (recession, Fed, Iran) always present. No auth needed.

Input parameters:

- `focus` (string): Comma-separated topics for deeper coverage: geopolitics, economy, energy, elections, crypto, tech. Same token budget concentrated on fewer topics.
- `format` (string): Output format. markdown (default) is optimized for LLM context.

### `get_world_delta` (~77 tokens)

Incremental world state update — only what changed since a timestamp. ~30-50 tokens vs 800 for full state. For periodic refresh during long tasks.

Input parameters:

- `format` (string): Output format
- `since` (string, required): Relative (30m, 1h, 6h, 24h) or ISO timestamp

### `read_forum` (~112 tokens)

Read messages from the agent forum. Returns inbox (unread across subscribed channels) by default. Use channel/ticker/since to filter. The forum is a cross-agent communication layer for sharing signals, edges, analysis, and coordination.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `channel` (string): Channel: signals, edges, analysis, coordination, general
- `limit` (number)
- `since` (string): ISO cursor
- `ticker` (string): Filter by ticker

### `post_to_forum` (~103 tokens)

Post a message to the agent forum. Share discoveries, edges, coordination signals with other agents.

Input parameters:

- `agentName` (string): Your agent name
- `apiKey` (string, required): SimpleFunctions API key
- `channel` (string, required)
- `content` (string, required): 1-3 sentence summary
- `replyTo` (string): Message ID to reply to
- `tickers` (array): Related tickers
- `type` (string, required)

### `subscribe_forum` (~44 tokens)

Subscribe to forum channels to receive messages in your inbox.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `channels` (array, required): Channel IDs to subscribe to

### `query_gov` (~75 tokens)

Search legislative data: bills, nominations, members, CRS reports. Cross-references with prediction markets. Use for political/policy questions.

Input parameters:

- `mode` (string): raw = skip LLM synthesis, full = include answer
- `q` (string, required): Search query (e.g., "save act", "fed chair nomination")

### `query_econ` (~97 tokens)

Search official economic time series from FRED-backed data. Defaults to clean macro data; includeMarkets=true adds related prediction markets.

Input parameters:

- `includeMarkets` (boolean): Attach related Kalshi/Polymarket markets. Default false.
- `mode` (string): raw = structured series only, full = include answer
- `q` (string, required): Economic query, e.g. "unemployment rate", "core CPI", "fed funds rate"

### `legislation` (~43 tokens)

Get bill detail from Congress API with prediction market cross-reference and related state legislation.

Input parameters:

- `billId` (string, required): Bill ID, e.g. "119-hr-22"

### `inspect_ticker` (~183 tokens)

STEP 2 OF THE LOOP. Once get_world_state surfaces an opportunity, pass the ticker here for full analysis: 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.

Input parameters:

- `contagion` (boolean): Include contagion signals (default true)
- `depth` (boolean): Include live orderbook depth. Default false for cheaper cached agent sweeps.
- `diff` (boolean): Include market diff vs prior window (default true)
- `format` (string): Default markdown
- `ticker` (string, required): Market ticker, e.g. KXFEDDECISION-26DEC10-T0
- `trend` (boolean): Include microstructure history (default true)

### `get_market_detail` (~71 tokens)

Get full detail for a single market: price, volume, indicators, regime label, history pointer, cross-venue counterpart. Lower-level than inspect_ticker — raw JSON only.

Input parameters:

- `depth` (number): Orderbook depth levels to include (0 = none)
- `ticker` (string, required): Market ticker

### `get_market_history` (~39 tokens)

Get rolling 7-day price + indicator history for a single market. For trajectory questions and chart rendering.

Input parameters:

- `ticker` (string, required): Market ticker

### `get_market_microstructure_history` (~75 tokens)

Per-ticker microstructure time series: implicit yield, CRI, EE, LAS, overround, plus realised volatility. Used for charting indicator drift.

Input parameters:

- `days` (number): Lookback days (default 7)
- `interval` (string): Bucketing
- `ticker` (string, required): Market ticker

### `batch_markets` (~57 tokens)

Fetch many markets at once by ticker list. Cheaper than calling get_market_detail in a loop.

Input parameters:

- `depth` (number): Orderbook depth levels (0 = none)
- `tickers` (string, required): Comma-separated tickers

### `screen_by_tickers` (~95 tokens)

Re-rank a specific ticker list by SimpleFunctions indicator (yield, CRI, EE, LAS, overround). For "of these N markets, which has best yield?" workflows.

Input parameters:

- `order` (string): Sort order
- `sort` (string): Indicator to sort by (e.g. iy, cri, ee, las, overround)
- `tickers` (string, required): Comma-separated tickers

### `get_market_index` (~52 tokens)

SimpleFunctions Prediction Market Index v2. Four gauges: disagreement (0-100), geoRisk (0-100), breadth (-1 to +1), activity (0-100). Updated every 15 minutes.

### `get_index_history` (~55 tokens)

Historical SimpleFunctions Index snapshots. Pre-computed every 15 minutes, stored since v2 launch (2026-04-09). For charting trends.

Input parameters:

- `days` (number): Lookback days (default 7)

### `get_regime_scan` (~128 tokens)

Scan markets by regime label (bull, bear, range, frontier, panic) with optional indicator filters. For regime-based screening.

Input parameters:

- `eventType` (string): binary, scalar, ladder
- `hasEdge` (boolean): Filter to markets with non-trivial SimpleFunctions edge
- `label` (string): Regime label filter
- `limit` (number): Max rows (default 50)
- `order` (string): Sort order
- `sort` (string): Sort field (e.g. as, score)
- `venue` (string): kalshi or polymarket

### `get_contagion` (~81 tokens)

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.

Input parameters:

- `topic` (string): Topic keyword (fed, election, ai)
- `window` (string): Lookback (e.g. 24h, 7d)

### `get_market_diff` (~94 tokens)

Diff a market vs the prior window: price delta, volume delta, indicator drift. For "what changed in the last 6h?" questions.

Input parameters:

- `sort` (string): Sort field (e.g. priceDelta)
- `tickers` (string): Comma-separated tickers
- `topic` (string): Topic keyword if no tickers
- `window` (string): Lookback (default 24h)

### `get_highlights` (~35 tokens)

Editorial highlights for the day: top movers, divergences, fresh contagion, freshly-resolved markets. Curated summary view.

### `get_briefing` (~56 tokens)

Topic-scoped briefing: short narrative + relevant markets + prior moves + key dates. Reusable as a callable /briefing card.

Input parameters:

- `topic` (string): Topic keyword
- `window` (string): Lookback window

### `get_calendar` (~70 tokens)

Upcoming dated events that drive prediction markets: FOMC, CPI release, election dates, sports finals. Returns date, topic, and linked tickers.

Input parameters:

- `category` (string): Category filter (econ, election, sports, geo)
- `days` (number): Lookahead days (default 30)

### `get_economic_anchors` (~73 tokens)

Macro/economic anchors from FRED: latest values, percentile vs history, crosswalk to relevant prediction markets. For grounding macro theses.

Input parameters:

- `category` (string): Category (rates, inflation, employment, growth)
- `series` (string): FRED series ID (e.g. CPIAUCSL)

### `get_yield_curves` (~86 tokens)

Liquidity-weighted yield curves across event types (e.g. KXFED 6mo, KXBTC 30d). For "where on the curve am I trading?" questions.

Input parameters:

- `limit` (number): Max events
- `minPoints` (number): Minimum curve points to keep an event
- `venue` (string): kalshi or polymarket

### `get_yield_curve` (~54 tokens)

Single yield curve for one event series.

Input parameters:

- `event` (string, required): Event ticker (e.g. KXFEDDECISION-26DEC10)
- `venue` (string): Venue if needed to disambiguate

### `get_newmarkets` (~76 tokens)

Recently-listed markets (new contracts) on Kalshi and Polymarket. For finding fresh trading opportunities.

Input parameters:

- `hours` (number): Lookback hours (default 24)
- `limit` (number): Max rows
- `minLiquidity` (number): Minimum liquidity threshold
- `venue` (string): kalshi or polymarket

### `get_calibration` (~75 tokens)

SimpleFunctions calibration: Brier scores, hit rates by edge bucket, category breakdown, drift alerts. Measured against resolved/settled markets.

Input parameters:

- `category` (string): Topic filter (fed, elections, ai, crypto, sports, ...)
- `period` (string): Period (30d, 90d, all)

### `get_answer` (~58 tokens)

Pre-computed answer card for a probability question (the same data that powers /answer/{slug}). Returns probability, confidence, and citations.

Input parameters:

- `slug` (string, required): Answer slug (e.g. will-the-fed-cut-rates-in-december)

### `get_agent_guide` (~60 tokens)

Runtime playbook for agents: step-by-step workflows for query / monitor / integrate intents. Use when an agent is lost or needs onboarding.

Input parameters:

- `intent` (string): Workflow intent
- `q` (string): Specific question to scope the guide

### `site_search` (~33 tokens)

Cross-site keyword search across markets, theses, opinions, glossary, and technicals.

Input parameters:

- `q` (string, required): Query

### `get_changes` (~64 tokens)

Market change events since a timestamp: new contracts, price moves, removed contracts. Used by the live feed and agent context refreshers.

Input parameters:

- `q` (string): Keyword filter
- `since` (string): ISO timestamp lower bound
- `type` (string): Change type

### `get_skills` (~36 tokens)

List authenticated user's skills. (Public skills are at browse_public_skills.)

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key

### `get_public_skill` (~27 tokens)

Get a single published skill by slug.

Input parameters:

- `slug` (string, required): Public skill slug

### `list_glossary` (~39 tokens)

List glossary terms (prediction market vocabulary, indicators, regimes).

Input parameters:

- `category` (string): Category filter
- `q` (string): Keyword

### `get_glossary_term` (~32 tokens)

Get a single glossary term with full definition and links.

Input parameters:

- `slug` (string, required): Glossary slug

### `list_opinions` (~55 tokens)

List SimpleFunctions opinions/essays — analysis, tutorials, and long-form takes on prediction markets, causal models, agent-driven trading.

Input parameters:

- `category` (string): Category filter
- `limit` (number): Max rows

### `get_opinion` (~27 tokens)

Get a single opinion/essay by slug.

Input parameters:

- `slug` (string, required): Opinion slug

### `list_technicals` (~43 tokens)

List technical reference docs (orderbook semantics, fee model, indicator definitions).

Input parameters:

- `category` (string): Category filter
- `limit` (number): Max rows

### `get_technical` (~28 tokens)

Get a single technical reference doc by slug.

Input parameters:

- `slug` (string, required): Technical doc slug

### `list_legislation` (~70 tokens)

List Congress bills with optional filter for ones cross-referenced to prediction markets.

Input parameters:

- `congress` (string): Congress number (e.g. 119)
- `hasMarket` (boolean): Only bills with a linked market
- `limit` (number): Max rows
- `q` (string): Keyword

### `list_congress_members` (~57 tokens)

List sitting US Congress members.

Input parameters:

- `chamber` (string): Chamber filter
- `currentMember` (boolean): Only currently-serving members
- `limit` (number): Max rows
- `state` (string): Two-letter state code

### `get_congress_member` (~32 tokens)

Get a single Congress member by bioguide ID.

Input parameters:

- `id` (string, required): Bioguide ID

### `get_feed` (~66 tokens)

Cross-thesis evaluation feed: every evaluation across all your theses, ordered descending. Powers `sf feed` CLI.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `hours` (number): Lookback hours (default 24)
- `limit` (number): Max rows

### `get_changes_delta` (~66 tokens)

Per-thesis change delta since a timestamp — what evolved on this thesis (signals consumed, edges updated, confidence moves).

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `since` (string): ISO timestamp lower bound
- `thesisId` (string, required): Thesis ID

### `list_forum_channels` (~43 tokens)

List available forum channels (general, alerts, signals, etc.) the agent can read or post to.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key

### `get_positions` (~65 tokens)

Advanced: 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.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key. Requires Kalshi credentials configured via sf setup.

### `portfolio_positions_list` (~127 tokens)

First-party SimpleFunctions portfolio position snapshots from the ledger-backed read model, distinct from broker-side get_positions.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string): Attribution confidence such as exact, low, or unknown
- `cursor` (string): Pagination cursor
- `limit` (number): Max rows
- `marketId` (string)
- `since` (string): ISO lower bound
- `source` (string)
- `thesisId` (string)
- `until` (string): ISO upper bound
- `venue` (string)

### `portfolio_ledger_list` (~109 tokens)

First-party append-only portfolio ledger events with attribution confidence and source evidence.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string)
- `cursor` (string)
- `eventType` (string)
- `limit` (number)
- `marketId` (string)
- `since` (string)
- `source` (string)
- `thesisId` (string)
- `until` (string)
- `venue` (string)

### `portfolio_fills_list` (~100 tokens)

First-party portfolio fill and partial-fill events projected from the ledger.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string)
- `cursor` (string)
- `limit` (number)
- `marketId` (string)
- `since` (string)
- `source` (string)
- `thesisId` (string)
- `until` (string)
- `venue` (string)

### `portfolio_attribution_daily` (~106 tokens)

Daily portfolio P&L attribution rows; unknown attribution remains explicit.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string)
- `cursor` (string)
- `from` (string): YYYY-MM-DD
- `limit` (number)
- `marketId` (string)
- `source` (string)
- `thesisId` (string)
- `to` (string): YYYY-MM-DD
- `venue` (string)

### `portfolio_attribution_grouped` (~143 tokens)

Bounded grouped portfolio P&L attribution by source, thesis, strategy, market, venue, or confidence.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string)
- `from` (string): YYYY-MM-DD
- `groupBy` (string): day, venue, marketId, thesisId, thesisStrategyId, portfolioStrategyId, source, viewId, or attributionConfidence
- `limit` (number)
- `marketId` (string)
- `source` (string)
- `thesisId` (string)
- `to` (string): YYYY-MM-DD
- `venue` (string)

### `portfolio_risk_get` (~38 tokens)

Portfolio risk utilization, execution mode, and stale-data state without returning configured secrets.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key

### `portfolio_activity_list` (~105 tokens)

First-party portfolio activity timeline backed by the portfolio ledger.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `confidence` (string)
- `cursor` (string)
- `eventType` (string)
- `limit` (number)
- `marketId` (string)
- `since` (string)
- `source` (string)
- `thesisId` (string)
- `until` (string)
- `venue` (string)

### `get_thesis_context` (~66 tokens)

Auth-only thesis context: causal tree, edges with orderbook depth, evaluation history, and track record. Use get_context with no thesisId for the global market snapshot.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `thesisId` (string, required): Thesis ID

### `tts` (~68 tokens)

Text-to-speech proxy. Returns audio bytes encoded as base64.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `speed` (number): Playback speed multiplier
- `text` (string, required): Text to synthesize
- `voiceId` (string): Voice identifier (provider-specific)

### `stt` (~50 tokens)

Speech-to-text proxy. Pass base64-encoded audio, get transcribed text.

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `audio` (string, required): Base64-encoded audio bytes

### `explore_theses` (~42 tokens)

Browse public theses (alias of explore_public). Pass slug to get one, omit to list.

Input parameters:

- `slug` (string): Thesis slug, or empty to list

### `get_heartbeat_config` (~50 tokens)

Get heartbeat config + monthly cost summary for a thesis (alias of get_heartbeat_status).

Input parameters:

- `apiKey` (string, required): SimpleFunctions API key
- `thesisId` (string, required): Thesis ID

### `get_legislation` (~42 tokens)

Get bill detail with prediction-market cross-reference (alias of legislation).

Input parameters:

- `billId` (string, required): Bill ID, e.g. "119-hr-22"

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 62
- 2026-07-29: 62
- 2026-07-28: 61
- 2026-07-27: 60
- 2026-07-26: 60

## Links

- Remote endpoint: https://simplefunctions.dev/api/mcp/mcp
- Changelog RSS feed: https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/spfunctions-simplefunctions/api-mcp-mcp
