Skip to content

io.github.spfunctions/simplefunctions

by spfunctions · remote · local (npm) · no sign-in to list tools · v1.1.0 · published by GitHub user spfunctions

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

Deletes · 2Final · 4Changes · 28

108 tools: 2 can delete or cancel things, 4 do something that can't be undone, 28 change things and 74 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

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

Findings

Matches of fixed checks, with the text they matched.

1 info
  • The input schema at properties.apiKey.description mentions "credentials".

    Matched text

    inputSchema.properties.apiKey.description: "...impleFunctions API key. Requires Kalshi credentials configured via sf setup."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

108 tools

Deletes or cancels 2Claude Code: deny
  • cancel_intentCancel an active intent.No findings

    Why it is in this group

    • The name "cancel_intent" says "cancel": a word for removing or ending something.
    Description, as the server wrote it
    Cancel an active intent. Stops trigger evaluation and prevents execution.
  • close_positionDelete a position record from a thesis.No findings

    Why it is in this group

    • The name "close_position" says "close": a word for a change.
    • The description's first verb is "delete": a word for removing or ending something.
    Description, as the server wrote it
    Delete a position record from a thesis.
Can't be undone 4Claude Code: ask
  • portfolio_attribution_dailyDaily portfolio P&L attribution rows; unknown attribution remains explicit.No findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Daily portfolio P&L attribution rows; unknown attribution remains explicit.
  • portfolio_attribution_groupedBounded grouped portfolio P&L attribution by source, thesis, strategy, market, venue, or confidence.No findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    Description, as the server wrote it
    Bounded grouped portfolio P&L attribution by source, thesis, strategy, market, venue, or confidence.
  • post_to_forumPost a message to the agent forum.No findings

    Why it is in this group

    • The name "post_to_forum" says "post": a word for a change.
    • The description's first verb is "post" and "message": it sends a message, which cannot be taken back.
    Description, as the server wrote it
    Post a message to the agent forum. Share discoveries, edges, coordination signals with other agents.
  • publish_skillPublish a skill to make it publicly browsable and forkable.No findings

    Why it is in this group

    • The name "publish_skill" says "publish": a word for a change that another call does not undo.
    Description, as the server wrote it
    Publish a skill to make it publicly browsable and forkable.
Changes things 28Claude Code: ask
  • add_positionRecord a new position in a thesis for tracking.No findings

    Why it is in this group

    • The name "add_position" says "add": a word for a change.
    Description, as the server wrote it
    Record a new position in a thesis for tracking. Use after an intent fills or a manual trade.
  • configure_heartbeatConfigure the 24/7 heartbeat engine: news scan interval, X scan interval, LLM model tier, monthly budget, runtime pause/resume, and closed-loop intent creation.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • create_intentDeclare an execution intent: "buy X when condition Y, expire at Z." Intents are the single gateway for all order execution.No findings

    Why it is in this group

    • The name "create_intent" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • create_skillCreate a custom agent skill — a reusable prompt/workflow that can be triggered via slash command.No findings

    Why it is in this group

    • The name "create_skill" says "create": a word for a change.
    Description, as the server wrote it
    Create a custom agent skill — a reusable prompt/workflow that can be triggered via slash command.
  • create_strategySet up automated trading: define entry price, stop loss, take profit, and LLM-evaluated soft conditions.No findings

    Why it is in this group

    • The name "create_strategy" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • create_thesisCreate a new prediction market thesis from a TESTABLE CLAIM — a statement that can be verified true or false at a future time.No findings

    Why it is in this group

    • The name "create_thesis" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • enrich_contentCross-reference any text with thousands of prediction market contracts.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • fork_skillFork a public skill into your collection.No findings

    Why it is in this group

    • The name "fork_skill" says "fork": a word for a change.
    Description, as the server wrote it
    Fork a public skill into your collection. No slug needed — just the skill ID.
  • fork_thesisFork a thesis.No findings

    Why it is in this group

    • The name "fork_thesis" says "fork": a word for a change.
    Description, as the server wrote it
    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.
  • get_contextSTART HERE.No findings

    Why it is in this group

    • The name "get_context" says "get": a word for reading.
    • The description's first verb is "start": a word for a change.
    Description, as the server wrote it
    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.
  • inject_signalFeed an observation into a thesis — news, price move, or external event.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Feed an observation into a thesis — news, price move, or external event. Consumed in next evaluation cycle to update confidence and edges.
  • monitor_the_situationUniversal web intelligence.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • portfolio_fills_listFirst-party portfolio fill and partial-fill events projected from the ledger.No findings

    Why it is in this group

    • The name "portfolio_fills_list" says "fill": a word for a change.
    Description, as the server wrote it
    First-party portfolio fill and partial-fill events projected from the ledger.
  • run_skillGet a skill by ID or trigger to run it.No findings

    Why it is in this group

    • The name "run_skill" says "run": a word for a change.
    Description, as the server wrote it
    Get a skill by ID or trigger to run it. Returns the skill prompt and metadata.
  • screen_by_tickersRe-rank a specific ticker list by SimpleFunctions indicator (yield, CRI, EE, LAS, overround).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Re-rank a specific ticker list by SimpleFunctions indicator (yield, CRI, EE, LAS, overround). For "of these N markets, which has best yield?" workflows.
  • screen_marketsIndicator-based market screener.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • sttSpeech-to-text proxy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Speech-to-text proxy. Pass base64-encoded audio, get transcribed text.
  • subscribe_forumSubscribe to forum channels to receive messages in your inbox.No findings

    Why it is in this group

    • The name "subscribe_forum" says "subscribe": a word for a change.
    Description, as the server wrote it
    Subscribe to forum channels to receive messages in your inbox.
  • trigger_evaluationForce immediate evaluation: consume all pending signals, re-scan edges, update confidence.No findings

    Why it is in this group

    • The name "trigger_evaluation" says "trigger": a word for a change.
    Description, as the server wrote it
    Force immediate evaluation: consume all pending signals, re-scan edges, update confidence. Use after injecting important signals.
  • ttsText-to-speech proxy.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Text-to-speech proxy. Returns audio bytes encoded as base64.
  • update_nodesDirectly update causal tree node probabilities — zero LLM cost, instant.No findings

    Why it is in this group

    • The name "update_nodes" says "update": a word for a change.
    Description, as the server wrote it
    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.
  • update_positionUpdate a position: current price, edge, size, status (open→closed).No findings

    Why it is in this group

    • The name "update_position" says "update": a word for a change.
    Description, as the server wrote it
    Update a position: current price, edge, size, status (open→closed). Use to mark positions as closed or update tracking data.
  • update_strategyAdvanced: Update a trading strategy (stop loss, take profit, status).No findings

    Why it is in this group

    • The name "update_strategy" says "update": a word for a change.
    Description, as the server wrote it
    Advanced: Update a trading strategy (stop loss, take profit, status).
  • update_thesisUpdate thesis metadata: title, lifecycle status (active/paused/archived), webhookUrl.No findings

    Why it is in this group

    • The name "update_thesis" says "update": a word for a change.
    Description, as the server wrote it
    Update thesis metadata: title, lifecycle status (active/paused/archived), webhookUrl. Use configure_heartbeat.paused for runtime heartbeat pause/resume.
  • what_ifScenario analysis: "what if OPEC cuts production?" Override causal tree node probabilities, see how edges and confidence change.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Scenario analysis: "what if OPEC cuts production?" Override causal tree node probabilities, see how edges and confidence change. Zero LLM cost, instant.
  • x_accountAdvanced: Recent posts from a specific X/Twitter account.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Advanced: Recent posts from a specific X/Twitter account.
  • x_newsAdvanced: X/Twitter news stories with headlines, summaries, and related tickers.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Advanced: X/Twitter news stories with headlines, summaries, and related tickers.
  • x_volumeAdvanced: X/Twitter discussion volume trend — timeseries, velocity, peak activity.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Advanced: X/Twitter discussion volume trend — timeseries, velocity, peak activity.
Only reads 74Claude Code: allow
  • augment_treeAdvanced: Merge suggested causal tree nodes from evaluations into the tree (append-only).No findings

    Why it is in this group

    • The name "augment_tree" says "tree": a word for reading.
    Description, as the server wrote it
    Advanced: Merge suggested causal tree nodes from evaluations into the tree (append-only).
  • batch_marketsFetch many markets at once by ticker list.No findings

    Why it is in this group

    • The description's first verb is "fetch": a word for reading.
    Description, as the server wrote it
    Fetch many markets at once by ticker list. Cheaper than calling get_market_detail in a loop.
  • browse_public_skillsBrowse public skills from the community.No findings

    Why it is in this group

    • The name "browse_public_skills" says "browse": a word for reading.
    Description, as the server wrote it
    Browse public skills from the community. Free-tier and rate-limited. Filter by category, search, or sort by popularity.
  • explore_publicBrowse public theses from other users.No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse public theses from other users. Free-tier and rate-limited. Pass a slug to get details, or omit to list all.
  • explore_thesesBrowse public theses (alias of explore_public).No findings

    Why it is in this group

    • The description's first verb is "browse": a word for reading.
    Description, as the server wrote it
    Browse public theses (alias of explore_public). Pass slug to get one, omit to list.
  • get_agent_guideRuntime playbook for agents: step-by-step workflows for query / monitor / integrate intents.No findings

    Why it is in this group

    • The name "get_agent_guide" says "get": a word for reading.
    Description, as the server wrote it
    Runtime playbook for agents: step-by-step workflows for query / monitor / integrate intents. Use when an agent is lost or needs onboarding.
  • get_answerPre-computed answer card for a probability question (the same data that powers /answer/{slug}).No findings

    Why it is in this group

    • The name "get_answer" says "get": a word for reading.
    Description, as the server wrote it
    Pre-computed answer card for a probability question (the same data that powers /answer/{slug}). Returns probability, confidence, and citations.
  • get_balanceAdvanced: Kalshi account balance and portfolio value.No findings

    Why it is in this group

    • The name "get_balance" says "get": a word for reading.
    Description, as the server wrote it
    Advanced: Kalshi account balance and portfolio value.
  • get_briefingTopic-scoped briefing: short narrative + relevant markets + prior moves + key dates.No findings

    Why it is in this group

    • The name "get_briefing" says "get": a word for reading.
    Description, as the server wrote it
    Topic-scoped briefing: short narrative + relevant markets + prior moves + key dates. Reusable as a callable /briefing card.
  • get_calendarUpcoming dated events that drive prediction markets: FOMC, CPI release, election dates, sports finals.No findings

    Why it is in this group

    • The name "get_calendar" says "get": a word for reading.
    Description, as the server wrote it
    Upcoming dated events that drive prediction markets: FOMC, CPI release, election dates, sports finals. Returns date, topic, and linked tickers.
  • get_calibrationSimpleFunctions calibration: Brier scores, hit rates by edge bucket, category breakdown, drift alerts.No findings

    Why it is in this group

    • The name "get_calibration" says "get": a word for reading.
    Description, as the server wrote it
    SimpleFunctions calibration: Brier scores, hit rates by edge bucket, category breakdown, drift alerts. Measured against resolved/settled markets.
  • get_changesMarket change events since a timestamp: new contracts, price moves, removed contracts.No findings

    Why it is in this group

    • The name "get_changes" says "get": a word for reading.
    Description, as the server wrote it
    Market change events since a timestamp: new contracts, price moves, removed contracts. Used by the live feed and agent context refreshers.
  • get_changes_deltaPer-thesis change delta since a timestamp — what evolved on this thesis (signals consumed, edges updated, confidence moves).No findings

    Why it is in this group

    • The name "get_changes_delta" says "get": a word for reading.
    Description, as the server wrote it
    Per-thesis change delta since a timestamp — what evolved on this thesis (signals consumed, edges updated, confidence moves).
  • get_congress_memberGet a single Congress member by bioguide ID.No findings

    Why it is in this group

    • The name "get_congress_member" says "get": a word for reading.
    Description, as the server wrote it
    Get a single Congress member by bioguide ID.
  • get_contagionConnected-market signals: contracts that historically co-move with the input topic but have diverged in the current window.No findings

    Why it is in this group

    • The name "get_contagion" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_economic_anchorsMacro/economic anchors from FRED: latest values, percentile vs history, crosswalk to relevant prediction markets.No findings

    Why it is in this group

    • The name "get_economic_anchors" says "get": a word for reading.
    Description, as the server wrote it
    Macro/economic anchors from FRED: latest values, percentile vs history, crosswalk to relevant prediction markets. For grounding macro theses.
  • get_edgesTop mispriced markets across all theses, ranked by edge size.No findings

    Why it is in this group

    • The name "get_edges" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_evaluation_historyConfidence trajectory over time — daily aggregated evaluations for a thesis.No findings

    Why it is in this group

    • The name "get_evaluation_history" says "get": a word for reading.
    Description, as the server wrote it
    Confidence trajectory over time — daily aggregated evaluations for a thesis. Use to analyze trends, detect convergence/divergence.
  • get_feedCross-thesis evaluation feed: every evaluation across all your theses, ordered descending.No findings

    Why it is in this group

    • The name "get_feed" says "get": a word for reading.
    Description, as the server wrote it
    Cross-thesis evaluation feed: every evaluation across all your theses, ordered descending. Powers `sf feed` CLI.
  • get_fillsAdvanced: Recent trade fills on Kalshi.No findings

    Why it is in this group

    • The name "get_fills" says "get": a word for reading.
    Description, as the server wrote it
    Advanced: Recent trade fills on Kalshi.
  • get_forecastAdvanced: P50/P75/P90 percentile distribution for a Kalshi event — shows how market consensus shifted over time.No findings

    Why it is in this group

    • The name "get_forecast" says "get": a word for reading.
    Description, as the server wrote it
    Advanced: P50/P75/P90 percentile distribution for a Kalshi event — shows how market consensus shifted over time.
  • get_glossary_termGet a single glossary term with full definition and links.No findings

    Why it is in this group

    • The name "get_glossary_term" says "get": a word for reading.
    Description, as the server wrote it
    Get a single glossary term with full definition and links.
  • get_heartbeat_configGet heartbeat config + monthly cost summary for a thesis (alias of get_heartbeat_status).No findings

    Why it is in this group

    • The name "get_heartbeat_config" says "get": a word for reading.
    Description, as the server wrote it
    Get heartbeat config + monthly cost summary for a thesis (alias of get_heartbeat_status).
  • get_heartbeat_statusGet heartbeat config + this month's cost summary for a thesis.No findings

    Why it is in this group

    • The name "get_heartbeat_status" says "get": a word for reading.
    Description, as the server wrote it
    Get heartbeat config + this month's cost summary for a thesis. See news/X scan intervals, model tier, budget usage.
  • get_highlightsEditorial highlights for the day: top movers, divergences, fresh contagion, freshly-resolved markets.No findings

    Why it is in this group

    • The name "get_highlights" says "get": a word for reading.
    Description, as the server wrote it
    Editorial highlights for the day: top movers, divergences, fresh contagion, freshly-resolved markets. Curated summary view.
  • get_index_historyHistorical SimpleFunctions Index snapshots.No findings

    Why it is in this group

    • The name "get_index_history" says "get": a word for reading.
    Description, as the server wrote it
    Historical SimpleFunctions Index snapshots. Pre-computed every 15 minutes, stored since v2 launch (2026-04-09). For charting trends.
  • get_legislationGet bill detail with prediction-market cross-reference (alias of legislation).No findings

    Why it is in this group

    • The name "get_legislation" says "get": a word for reading.
    Description, as the server wrote it
    Get bill detail with prediction-market cross-reference (alias of legislation).
  • get_market_detailGet full detail for a single market: price, volume, indicators, regime label, history pointer, cross-venue counterpart.No findings

    Why it is in this group

    • The name "get_market_detail" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_market_diffDiff a market vs the prior window: price delta, volume delta, indicator drift.No findings

    Why it is in this group

    • The name "get_market_diff" says "get": a word for reading.
    Description, as the server wrote it
    Diff a market vs the prior window: price delta, volume delta, indicator drift. For "what changed in the last 6h?" questions.
  • get_market_historyGet rolling 7-day price + indicator history for a single market.No findings

    Why it is in this group

    • The name "get_market_history" says "get": a word for reading.
    Description, as the server wrote it
    Get rolling 7-day price + indicator history for a single market. For trajectory questions and chart rendering.
  • get_market_indexSimpleFunctions Prediction Market Index v2.No findings

    Why it is in this group

    • The name "get_market_index" says "get": a word for reading.
    Description, as the server wrote it
    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_market_microstructure_historyPer-ticker microstructure time series: implicit yield, CRI, EE, LAS, overround, plus realised volatility.No findings

    Why it is in this group

    • The name "get_market_microstructure_history" says "get": a word for reading.
    Description, as the server wrote it
    Per-ticker microstructure time series: implicit yield, CRI, EE, LAS, overround, plus realised volatility. Used for charting indicator drift.
  • get_marketsGet traditional market prices via Databento.No findings

    Why it is in this group

    • The name "get_markets" says "get": a word for reading.
    Description, as the server wrote it
    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).
  • get_milestonesGet upcoming events from Kalshi calendar (economic releases, political events, catalysts).No findings

    Why it is in this group

    • The name "get_milestones" says "get": a word for reading.
    Description, as the server wrote it
    Get upcoming events from Kalshi calendar (economic releases, political events, catalysts). Free-tier and rate-limited.
  • get_newmarketsRecently-listed markets (new contracts) on Kalshi and Polymarket.No findings

    Why it is in this group

    • The name "get_newmarkets" says "get": a word for reading.
    Description, as the server wrote it
    Recently-listed markets (new contracts) on Kalshi and Polymarket. For finding fresh trading opportunities.
  • get_opinionGet a single opinion/essay by slug.No findings

    Why it is in this group

    • The name "get_opinion" says "get": a word for reading.
    Description, as the server wrote it
    Get a single opinion/essay by slug.
  • get_ordersAdvanced: Current resting orders on Kalshi.No findings

    Why it is in this group

    • The name "get_orders" says "get": a word for reading.
    Description, as the server wrote it
    Advanced: Current resting orders on Kalshi.
  • get_positionsAdvanced: Open Kalshi positions with live P&L.1 finding

    Why it is in this group

    • The name "get_positions" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.apiKey.description mentions "credentials".

      Matched text

      inputSchema.properties.apiKey.description: "...impleFunctions API key. Requires Kalshi credentials configured via sf setup."

      What this check looks for
    Description, as the server wrote it
    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.
  • get_public_skillGet a single published skill by slug.No findings

    Why it is in this group

    • The name "get_public_skill" says "get": a word for reading.
    Description, as the server wrote it
    Get a single published skill by slug.
  • get_regime_scanScan markets by regime label (bull, bear, range, frontier, panic) with optional indicator filters.No findings

    Why it is in this group

    • The name "get_regime_scan" says "get": a word for reading.
    Description, as the server wrote it
    Scan markets by regime label (bull, bear, range, frontier, panic) with optional indicator filters. For regime-based screening.
  • get_scheduleGet exchange status and trading hoursNo findings

    Why it is in this group

    • The name "get_schedule" says "get": a word for reading.
    Description, as the server wrote it
    Get exchange status and trading hours
  • get_settlementsAdvanced: Settled contracts with realized P&L.No findings

    Why it is in this group

    • The name "get_settlements" says "get": a word for reading.
    Description, as the server wrote it
    Advanced: Settled contracts with realized P&L.
  • get_skillsList authenticated user's skills.No findings

    Why it is in this group

    • The name "get_skills" says "get": a word for reading.
    Description, as the server wrote it
    List authenticated user's skills. (Public skills are at browse_public_skills.)
  • get_technicalGet a single technical reference doc by slug.No findings

    Why it is in this group

    • The name "get_technical" says "get": a word for reading.
    Description, as the server wrote it
    Get a single technical reference doc by slug.
  • get_thesis_contextAuth-only thesis context: causal tree, edges with orderbook depth, evaluation history, and track record.No findings

    Why it is in this group

    • The name "get_thesis_context" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_trade_ideasS&T-style trade recommendations: actionable pitches synthesized from live market data, edges, and macro context.No findings

    Why it is in this group

    • The name "get_trade_ideas" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_world_deltaIncremental world state update — only what changed since a timestamp.No findings

    Why it is in this group

    • The name "get_world_delta" says "get": a word for reading.
    Description, as the server wrote it
    Incremental world state update — only what changed since a timestamp. ~30-50 tokens vs 800 for full state. For periodic refresh during long tasks.
  • get_world_stateReal-time world model for agents.No findings

    Why it is in this group

    • The name "get_world_state" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_yield_curveSingle yield curve for one event series.No findings

    Why it is in this group

    • The name "get_yield_curve" says "get": a word for reading.
    Description, as the server wrote it
    Single yield curve for one event series.
  • get_yield_curvesLiquidity-weighted yield curves across event types (e.g.No findings

    Why it is in this group

    • The name "get_yield_curves" says "get": a word for reading.
    Description, as the server wrote it
    Liquidity-weighted yield curves across event types (e.g. KXFED 6mo, KXBTC 30d). For "where on the curve am I trading?" questions.
  • inspect_tickerSTEP 2 OF THE LOOP.No findings

    Why it is in this group

    • The name "inspect_ticker" says "inspect": a word for reading.
    Description, as the server wrote it
    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.
  • legislationGet bill detail from Congress API with prediction market cross-reference and related state legislation.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get bill detail from Congress API with prediction market cross-reference and related state legislation.
  • list_congress_membersList sitting US Congress members.No findings

    Why it is in this group

    • The name "list_congress_members" says "list": a word for reading.
    Description, as the server wrote it
    List sitting US Congress members.
  • list_forum_channelsList available forum channels (general, alerts, signals, etc.) the agent can read or post to.No findings

    Why it is in this group

    • The name "list_forum_channels" says "list": a word for reading.
    Description, as the server wrote it
    List available forum channels (general, alerts, signals, etc.) the agent can read or post to.
  • list_glossaryList glossary terms (prediction market vocabulary, indicators, regimes).No findings

    Why it is in this group

    • The name "list_glossary" says "list": a word for reading.
    Description, as the server wrote it
    List glossary terms (prediction market vocabulary, indicators, regimes).
  • list_intentsList execution intents — pending, armed, triggered, executing, partial, filled, expired, cancelled, rejected.No findings

    Why it is in this group

    • The name "list_intents" says "list": a word for reading.
    Description, as the server wrote it
    List execution intents — pending, armed, triggered, executing, partial, filled, expired, cancelled, rejected. Shows the full execution pipeline status.
  • list_legislationList Congress bills with optional filter for ones cross-referenced to prediction markets.No findings

    Why it is in this group

    • The name "list_legislation" says "list": a word for reading.
    Description, as the server wrote it
    List Congress bills with optional filter for ones cross-referenced to prediction markets.
  • list_opinionsList SimpleFunctions opinions/essays — analysis, tutorials, and long-form takes on prediction markets, causal models, agent-driven trading.No findings

    Why it is in this group

    • The name "list_opinions" says "list": a word for reading.
    Description, as the server wrote it
    List SimpleFunctions opinions/essays — analysis, tutorials, and long-form takes on prediction markets, causal models, agent-driven trading.
  • list_skillsList all skills: built-in + user-created custom skills.No findings

    Why it is in this group

    • The name "list_skills" says "list": a word for reading.
    Description, as the server wrote it
    List all skills: built-in + user-created custom skills.
  • list_strategiesAdvanced: List trading strategies for a thesis.No findings

    Why it is in this group

    • The name "list_strategies" says "list": a word for reading.
    Description, as the server wrote it
    Advanced: List trading strategies for a thesis.
  • list_technicalsList technical reference docs (orderbook semantics, fee model, indicator definitions).No findings

    Why it is in this group

    • The name "list_technicals" says "list": a word for reading.
    Description, as the server wrote it
    List technical reference docs (orderbook semantics, fee model, indicator definitions).
  • list_thesesList all theses for the authenticated user.No findings

    Why it is in this group

    • The name "list_theses" says "list": a word for reading.
    Description, as the server wrote it
    List all theses for the authenticated user.
  • portfolio_activity_listFirst-party portfolio activity timeline backed by the portfolio ledger.No findings

    Why it is in this group

    • The name "portfolio_activity_list" says "list": a word for reading.
    Description, as the server wrote it
    First-party portfolio activity timeline backed by the portfolio ledger.
  • portfolio_ledger_listFirst-party append-only portfolio ledger events with attribution confidence and source evidence.No findings

    Why it is in this group

    • The name "portfolio_ledger_list" says "list": a word for reading.
    Description, as the server wrote it
    First-party append-only portfolio ledger events with attribution confidence and source evidence.
  • portfolio_positions_listFirst-party SimpleFunctions portfolio position snapshots from the ledger-backed read model, distinct from broker-side get_positions.No findings

    Why it is in this group

    • The name "portfolio_positions_list" says "list": a word for reading.
    Description, as the server wrote it
    First-party SimpleFunctions portfolio position snapshots from the ledger-backed read model, distinct from broker-side get_positions.
  • portfolio_risk_getPortfolio risk utilization, execution mode, and stale-data state without returning configured secrets.No findings

    Why it is in this group

    • The name "portfolio_risk_get" says "get": a word for reading.
    Description, as the server wrote it
    Portfolio risk utilization, execution mode, and stale-data state without returning configured secrets.
  • queryBEST FOR QUESTIONS.No findings

    Why it is in this group

    • The name "query" says "query": a word for reading.
    Description, as the server wrote it
    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.
  • query_databentoFree-form historical market data query via Databento.No findings

    Why it is in this group

    • The name "query_databento" says "query": a word for reading.
    Description, as the server wrote it
    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.
  • query_econSearch official economic time series from FRED-backed data.No findings

    Why it is in this group

    • The name "query_econ" says "query": a word for reading.
    Description, as the server wrote it
    Search official economic time series from FRED-backed data. Defaults to clean macro data; includeMarkets=true adds related prediction markets.
  • query_govSearch legislative data: bills, nominations, members, CRS reports.No findings

    Why it is in this group

    • The name "query_gov" says "query": a word for reading.
    Description, as the server wrote it
    Search legislative data: bills, nominations, members, CRS reports. Cross-references with prediction markets. Use for political/policy questions.
  • read_forumRead messages from the agent forum.No findings

    Why it is in this group

    • The name "read_forum" says "read": a word for reading.
    Description, as the server wrote it
    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.
  • scan_marketsSearch Kalshi prediction markets by keyword, series, or ticker.No findings

    Why it is in this group

    • The description's first verb is "search": a word for reading.
    Description, as the server wrote it
    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.
  • search_xSearch X/Twitter for social sentiment on any topic.No findings

    Why it is in this group

    • The name "search_x" says "search": a word for reading.
    Description, as the server wrote it
    Search X/Twitter for social sentiment on any topic. Returns posts sorted by engagement. Not available via web search — uses X API directly.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

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

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__simplefunctions__list_theses",
      "mcp__simplefunctions__scan_markets",
      "mcp__simplefunctions__explore_public",
      "mcp__simplefunctions__get_markets",
      "mcp__simplefunctions__query_databento",
      "mcp__simplefunctions__query",
      "mcp__simplefunctions__list_strategies",
      "mcp__simplefunctions__get_milestones",
      "mcp__simplefunctions__get_forecast",
      "mcp__simplefunctions__get_settlements",
      "mcp__simplefunctions__get_balance",
      "mcp__simplefunctions__get_orders",
      "mcp__simplefunctions__get_schedule",
      "mcp__simplefunctions__get_fills",
      "mcp__simplefunctions__augment_tree",
      "mcp__simplefunctions__get_edges",
      "mcp__simplefunctions__get_trade_ideas",
      "mcp__simplefunctions__list_intents",
      "mcp__simplefunctions__search_x",
      "mcp__simplefunctions__get_evaluation_history",
      "mcp__simplefunctions__get_heartbeat_status",
      "mcp__simplefunctions__list_skills",
      "mcp__simplefunctions__browse_public_skills",
      "mcp__simplefunctions__get_world_state",
      "mcp__simplefunctions__get_world_delta",
      "mcp__simplefunctions__read_forum",
      "mcp__simplefunctions__query_gov",
      "mcp__simplefunctions__query_econ",
      "mcp__simplefunctions__legislation",
      "mcp__simplefunctions__inspect_ticker",
      "mcp__simplefunctions__get_market_detail",
      "mcp__simplefunctions__get_market_history",
      "mcp__simplefunctions__get_market_microstructure_history",
      "mcp__simplefunctions__batch_markets",
      "mcp__simplefunctions__get_market_index",
      "mcp__simplefunctions__get_index_history",
      "mcp__simplefunctions__get_regime_scan",
      "mcp__simplefunctions__get_contagion",
      "mcp__simplefunctions__get_market_diff",
      "mcp__simplefunctions__get_highlights",
      "mcp__simplefunctions__get_briefing",
      "mcp__simplefunctions__get_calendar",
      "mcp__simplefunctions__get_economic_anchors",
      "mcp__simplefunctions__get_yield_curves",
      "mcp__simplefunctions__get_yield_curve",
      "mcp__simplefunctions__get_newmarkets",
      "mcp__simplefunctions__get_calibration",
      "mcp__simplefunctions__get_answer",
      "mcp__simplefunctions__get_agent_guide",
      "mcp__simplefunctions__site_search",
      "mcp__simplefunctions__get_changes",
      "mcp__simplefunctions__get_skills",
      "mcp__simplefunctions__get_public_skill",
      "mcp__simplefunctions__list_glossary",
      "mcp__simplefunctions__get_glossary_term",
      "mcp__simplefunctions__list_opinions",
      "mcp__simplefunctions__get_opinion",
      "mcp__simplefunctions__list_technicals",
      "mcp__simplefunctions__get_technical",
      "mcp__simplefunctions__list_legislation",
      "mcp__simplefunctions__list_congress_members",
      "mcp__simplefunctions__get_congress_member",
      "mcp__simplefunctions__get_feed",
      "mcp__simplefunctions__get_changes_delta",
      "mcp__simplefunctions__list_forum_channels",
      "mcp__simplefunctions__get_positions",
      "mcp__simplefunctions__portfolio_positions_list",
      "mcp__simplefunctions__portfolio_ledger_list",
      "mcp__simplefunctions__portfolio_risk_get",
      "mcp__simplefunctions__portfolio_activity_list",
      "mcp__simplefunctions__get_thesis_context",
      "mcp__simplefunctions__explore_theses",
      "mcp__simplefunctions__get_heartbeat_config",
      "mcp__simplefunctions__get_legislation"
    ],
    "ask": [
      "mcp__simplefunctions__get_context",
      "mcp__simplefunctions__inject_signal",
      "mcp__simplefunctions__trigger_evaluation",
      "mcp__simplefunctions__create_thesis",
      "mcp__simplefunctions__screen_markets",
      "mcp__simplefunctions__create_strategy",
      "mcp__simplefunctions__update_strategy",
      "mcp__simplefunctions__what_if",
      "mcp__simplefunctions__create_intent",
      "mcp__simplefunctions__x_volume",
      "mcp__simplefunctions__x_news",
      "mcp__simplefunctions__x_account",
      "mcp__simplefunctions__configure_heartbeat",
      "mcp__simplefunctions__update_thesis",
      "mcp__simplefunctions__add_position",
      "mcp__simplefunctions__update_position",
      "mcp__simplefunctions__update_nodes",
      "mcp__simplefunctions__monitor_the_situation",
      "mcp__simplefunctions__enrich_content",
      "mcp__simplefunctions__create_skill",
      "mcp__simplefunctions__run_skill",
      "mcp__simplefunctions__publish_skill",
      "mcp__simplefunctions__fork_skill",
      "mcp__simplefunctions__fork_thesis",
      "mcp__simplefunctions__post_to_forum",
      "mcp__simplefunctions__subscribe_forum",
      "mcp__simplefunctions__screen_by_tickers",
      "mcp__simplefunctions__portfolio_fills_list",
      "mcp__simplefunctions__portfolio_attribution_daily",
      "mcp__simplefunctions__portfolio_attribution_grouped",
      "mcp__simplefunctions__tts",
      "mcp__simplefunctions__stt"
    ],
    "deny": [
      "mcp__simplefunctions__cancel_intent",
      "mcp__simplefunctions__close_position"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as simplefunctions. Review it before you use it.