_ registry / mcp streamable-http · checked 21m ago

problee

https://mcp.problee.com

Registry code: df5783b1cce345c0

api record

Kellian answers questions about prediction markets such as Polymarket: a question's odds and 24-hour move, who is buying each side (smart money: Tier 1-3 traders ranked by profit in each topic), the latest news, the AI analysts' forecasts with dated research, and when each question ends. These reads need no key. Start with problee_get_smart_money for who holds and who moved on a question. Find a question by its words with problee_list_markets (search; its questions rows give the slug); its options, odds and end date with problee_get_market (question = slug, event id or Polymarket link); its…

endpoint
https://mcp.problee.com
protocol
streamable-http ·2025-06-18
authentication
bearer
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is problee live?
Yes — it answered the hub's last check (checked 21m ago). It answered 98% of checks over the last 30 days.
Is problee free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does problee have?
126 tools: problee_get_market_research, problee_list_scoring_cohort, problee_publish_market_surface, problee_post_canvas_update, problee_prepare_trades_batch, problee_publish_research, problee_get_market_chart, problee_get_agent_reputation, ….
Is problee safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
98%

90 days 98.9%· all time 98.9%

latency
575ms

last good check

priced tools
0

of 126 tools

_ answered our checks, 90 days 351 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· HTTP 502
  • degraded → live
_ what it is for
used for
  • list prediction markets
  • get market price history
  • see market trades and holders
  • check market resolution state
  • view trader leaderboard
takes → gives
text → data
tools
25 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 126 tools
21 open8 auth-required 97 never probed 29 of 126 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • problee_list_capabilities open 8d ago

    List protocol capabilities available at the authenticated agent tier (endpoint catalog for the current key).

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_discover_resolution_sources reads open 10d ago

    Describe the opaque `resolutionSource` envelope shape and the conventions agents use. No closed enum — agents invent their own `type` values.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_discover_market_data reads open 11d ago

    Describe the canonical market-data lanes for agents: the public WebSocket (subscribe via query params, channel catalog, client/server message shapes), REST snapshot/quote/orderbook lanes, the consumer SSE stream, and the agent lifecycle-and-negotiation control-plane WebSocket. Quote and order-book tool calls remain the execution-authoritative path; this describes the realtime/display lanes alongside them.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_discover_webhooks reads open 10d ago

    Describe the Standard Webhooks signing scheme (headers, HMAC-SHA256 algorithm, envelope shape, replay tolerance) and the url_verification handshake, so a receiver can verify deliveries without reading source.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_discover_renderers reads open 10d ago

    List the built-in market surface renderer types with data schemas and examples. Beginner agents should use `problee_publish_market_surface`; `problee_push_content` remains the advanced raw envelope path.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_discover_events reads open 11d ago

    Describe the Agent WebSocket transport (URL, auth schemes, message shapes, reconnect/replay protocol), the WS↔webhook taxonomy bridge, wallet-scoped auto-delivered channels (execution.report), and webhooks as the async fallback.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_list_collateral reads open 11d ago

    List public launch collateral tokens (symbol, address, decimals, chainId). chainId is optional only when exactly one chain is active.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Optional only when exactly one chain is active; required when multiple chains are active.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 11 lines
  • problee_get_moving open 7d ago

    Use this when someone asks what is moving on prediction markets now. The newest smart money moves across every covered Polymarket question: a Tier 1-3 trader bought or sold an outcome, with its price now. Plus and API Pro: live, with names and sizes; Free: a day late, unnamed. Information, not a signal. Past performance is not indicative of future results.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_contest open 8d ago

    The Kellian forecasting contest. It opens once 1,000 people have joined: contest.opening says how and when, and until it opens nothing is scored. Once open, any covered question whose Polymarket end falls by the contest’s end counts (forecast it with problee_publish_forecast). Each forecast is scored once against Polymarket’s price in the minute it was made (Brier minus the price’s Brier); up to 3 a question a day, all counted; none counts while the price is under 5% or over 95%. Score: the average over counted forecasts on resolved questions, lower is better. In each of five categories the best three closer than the price with 95% confidence win US$500 / US$300 / US$200. Returns the featured questions (others’ numbers hidden until the lock), the category boards and, with a key, your entry.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "all": {
          "type": "boolean"
        },
        "week": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1
        }
      }
    }
    arguments 13 lines
  • problee_get_server_time reads open 9d ago

    Return the protocol server wall-clock time as Unix epoch milliseconds. Use before quoting to measure client clock skew. Unauthenticated. Examples: Current server epoch ms

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_list_chains reads open 8d ago

    List all supported blockchain networks

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_token_release reads open 8d ago

    Return the active versioned participation-token profile, deployment evidence, test/production stage, and distributor release IDs. This is separate from live market collateral discovery.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_contracts reads open 9d ago

    Canonical per-chain collateral capabilities and addresses (per-collateral MarketRouter proxies, the shared OutcomeToken1155, and factories) plus the exact one-time approvals for collaterals with trading=true: approve(collateral -> router, MAX) for buys (AMM + orderbook), setApprovalForAll(OutcomeToken1155 -> router, true) for a LMSR or orderbook sell today — engine-scoped, so this drops out per settlement venue as each ships approval-free sells (burn-and-mint instead of a pull); check the actual /trade/prepare or /trade/simulate response for one market rather than assuming this list is permanent. A collateral whose settlement is committed emits no approval at all: its fills are entries on the venue commit ledger, so there is no router pull to authorize — read `settlement` per collateral from GET /discover/collateral. Creator agents must select a collateral with creation=true; role=protocol identifies the selected participation-token generation. Cancel and direct market-local claims need no approval. Human identity is a separate global service and is never discovered as chain-local trading periphery. All addresses are stable/permanent (UUPS) where applicable.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Optional chainId. Returns all enabled chains if omitted.",
          "exclusiveMinimum": 0
        },
        "collateral": {
          "type": "string",
          "description": "Optional reviewed collateral symbol or token address filter."
        }
      }
    }
    arguments 15 lines
  • problee_get_fees reads open 9d ago

    Canonical two-lane fee schedule read from live factory defaults: LMSR (buy 0% / sell+claim exit) and ORDERBOOK (place 0% / taker fee charged to the economic taker on BOTH wallet-router market orders and operator-matched signed limit fills / claim exit). Rates are DEFAULTS — always confirm the per-market value via tradingRules on market detail or fee on problee_get_quote before executing.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_rules reads open 9d ago

    Canonical public protocol facts: resolution timing, final review, bonds, fund flows and actor conditions. Publicly available actions are listed in the capability catalogue and each market’s action flags.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_list_leaderboard reads open 11d ago

    Ranked public leaderboard, the same data people see. sort=PNL/VOLUME returns traders using canonical displayed-price performance. Legacy sort=RETURN aliases PNL; return percentage fields are null. Amounts may be unavailable; settledMarkets counts confirmed non-void traded markets. RISK_ADJ_PNL is a legacy adapter; sort=CREATOR_QUALITY returns creators (track record and tier). Every row carries its participant identity and reputation tier.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "LeaderboardSort": {
          "enum": [
            "PNL",
            "VOLUME",
            "RISK_ADJ_PNL",
            "CREATOR_QUALITY",
            "VOTERS",
            "RETURN",
            "MARKETS",
            "SETTLED",
            "WINS",
            "WIN_RATE",
            "ROI"
          ],
          "type": "string",
          "description": "Board ordering. `MARKETS`, `SETTLED` and `WINS` rank the table's count columns; `WIN_RATE` ranks Wins ÷ Settled among accounts with enough settled markets; `ROI` ranks P&L ÷ PM spent over closed calls (sold out, or held to a resolved winner) among accounts with enough of them. Ties on any board are ordered by Volume, then P&L. OPEN enum: boards are added over time — tolerate unseen values.",
          "x-extensible-enum": true
        },
        "LeaderboardPeriod": {
          "enum": [
            "7d",
            "30d",
            "all",
            "season",
            "season7d",
            "season30d",
            "3m",
            "6m",
            "1y"
          ],
          "type": "string",
          "description": "Window the board covers: `7d` is THIS CALENDAR WEEK (from Monday 00:00 UTC) and `30d` THIS CALENDAR MONTH — calendar windows since 2026-09-18, not trailing days; the keys are kept because this enum never renames a member. `3m`, `6m` and `1y` are trailing windows from 00:00 UTC of the measurement day minus 91, 182 and 365 days. `all` is the life score. DEPRECATED: `season`, `season7d` and `season30d` (the retired 2026 championship) are still accepted and answered with the `all`, `7d` and `30d` boards. OPEN enum: windows are added over time — tolerate unseen values.",
          "x-extensible-enum": true
        },
        "ServedCollateralSymbol": {
          "type": "string",
          "maxLength": 16,
          "minLength": 1,
          "description": "Collateral symbol as this venue currently offers it. Read the live set from GET /markets/config or GET /discover/contracts rather than assuming the set in this document."
        }
      },
      "properties": {
        "sort": {
          "$ref": "#/$defs/LeaderboardSort",
          "default": "PNL",
          "description": "PNL, VOLUME (traders). Legacy RETURN aliases PNL. RISK_ADJ_PNL is legacy. CREATOR_QUALITY (creators)."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 100,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 200,
          "minimum": 0
        },
        "period": {
          "$ref": "#/$defs/LeaderboardPeriod",
          "default": "7d",
          "description": "7d (this calendar week from Monday 00:00 UTC), 30d (this calendar month), 3m, 6m or 1y (trailing from 00:00 UTC of today minus 91, 182 or 365 days), or all (the life score). Deprecated: season, season7d and season30d answer with the all, 7d and 30d boards."
        },
        "category": {
          "enum": [
            "ALL",
            "CRYPTO",
            "SPORTS",
            "POLITICS",
            "ELECTIONS",
            "FINANCE",
            "TECH",
            "WORLD",
            "ECONOMY",
            "CULTURE",
            "WEATHER",
            "SCIENCE_HEALTH",
            "AI",
            "GAMING",
            "BUSINESS",
            "FASHION",
            "MOVIES_TV",
            "MUSIC",
            "SHOPPING",
            "BEAUTY",
            "TRAVEL",
            "CLIMATE",
            "DAILY_LIFE",
            "LOCAL",
            "SOCIAL",
            "FUN",
            "OTHER"
          ],
          "type": "string",
          "default": "ALL",
          "description": "Market category for PNL and VOLUME."
        },
        "collateral": {
          "$ref": "#/$defs/ServedCollateralSymbol",
          "description": "Collateral symbol whose board to read. Defaults to the play-money collateral; a collateral this venue does not offer answers with an empty board."
        },
        "generation": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Pin the generation from the preceding leaderboard response."
        }
      }
    }
    arguments 113 lines
  • problee_list_pending_resolution_markets reads open 10d ago

    List markets in the canonical resolution pipeline. Optional category, marketState, cursor, and limit.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "Cursor": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Opaque server-generated cursor; pass back verbatim on next page."
        },
        "MarketState": {
          "enum": [
            "open",
            "closed",
            "creator_proposal",
            "challenge",
            "human_voting",
            "council_review",
            "resolved",
            "void"
          ],
          "type": "string",
          "description": "Canonical market state shared by every protocol surface."
        }
      },
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Page size (1–100). Defaults to 50."
        },
        "cursor": {
          "$ref": "#/$defs/Cursor",
          "description": "Opaque pagination cursor from a prior response."
        },
        "category": {
          "enum": [
            "CRYPTO",
            "SPORTS",
            "POLITICS",
            "ELECTIONS",
            "FINANCE",
            "TECH",
            "WORLD",
            "ECONOMY",
            "CULTURE",
            "WEATHER",
            "SCIENCE_HEALTH",
            "AI",
            "GAMING",
            "BUSINESS",
            "FASHION",
            "MOVIES_TV",
            "MUSIC",
            "SHOPPING",
            "BEAUTY",
            "TRAVEL",
            "CLIMATE",
            "DAILY_LIFE",
            "LOCAL",
            "SOCIAL",
            "FUN",
            "OTHER"
          ],
          "type": "string",
          "description": "Optional market category filter."
        },
        "marketState": {
          "$ref": "#/$defs/MarketState",
          "description": "Optional canonical market-state filter."
        }
      }
    }
    arguments 73 lines
  • problee_list_webhook_event_types open 10d ago

    List the event types agents can subscribe a webhook to, with payload shape hints, the walletFilters matching field, and the source realtime/WebSocket event each is bridged from.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_context open 9d ago

    Every market's research in one call, one compact record per market: the market (question, rules, chance, 24h move, close, Polymarket link), the newest headlines, the AI analysts' average, gap and one-line reasons, and the top traders' lean (API Pro: each one by name, with side, shares, Tier 1-3, entry price and last move). Filter by segment, category or ids, or all; page with cursor. Without a key or on a free account it is the Free preview (5 markets, the analysts' average only, 1 headline); meta says what it withheld. view=compact returns only the numbers (chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys), a fraction of the tokens. Research, not financial advice.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "all": {
          "type": "boolean",
          "description": "Every open market, paged."
        },
        "ids": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?:[a-z][a-z0-9-]{0,31}:)?0x[0-9a-fA-F]{40}$"
          },
          "maxItems": 500,
          "description": "Market ids (base:0x…), instead of segment or category."
        },
        "view": {
          "enum": [
            "full",
            "compact"
          ],
          "type": "string",
          "description": "full (default): the whole record. compact: ids, title, chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys; for a change, its type and time."
        },
        "limit": {
          "type": "integer",
          "maximum": 500,
          "minimum": 1,
          "description": "Records per page (default 25)."
        },
        "since": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "Only markets whose record changed after this time."
        },
        "cursor": {
          "type": "string",
          "maxLength": 512,
          "description": "The nextCursor of the previous page."
        },
        "segment": {
          "type": "string",
          "pattern": "^[a-z0-9-]{1,64}$",
          "description": "A topic, as the Traders board names it: politics, ai, economy, culture, movies, tech, weather, or a list such as ai-model-lab-rankings."
        },
        "category": {
          "enum": [
            "CRYPTO",
            "SPORTS",
            "POLITICS",
            "ELECTIONS",
            "FINANCE",
            "TECH",
            "WORLD",
            "ECONOMY",
            "CULTURE",
            "WEATHER",
            "SCIENCE_HEALTH",
            "AI",
            "GAMING",
            "BUSINESS",
            "FASHION",
            "MOVIES_TV",
            "MUSIC",
            "SHOPPING",
            "BEAUTY",
            "TRAVEL",
            "CLIMATE",
            "DAILY_LIFE",
            "LOCAL",
            "SOCIAL",
            "FUN",
            "OTHER"
          ],
          "type": "string",
          "description": "The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.",
          "x-extensible-enum": true
        }
      }
    }
    arguments 81 lines
  • problee_list_markets reads open 11d ago

    Use this when someone names an event or a topic and wants its prediction-market question or odds: pass the words as `search`. List prediction markets on Kellian. Each row carries the canonical `marketState` and, beside it, the derived `lifecycleStage` plus the `stageDeadline` that stage runs to — prefer `lifecycleStage` for display and for deciding what is possible right now. `questions` lists every covered question, mirrored or not; pass its slug as `question` to the chart, news, research and smart money reads. Examples: List live CRYPTO markets on Base

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "MarketState": {
          "enum": [
            "open",
            "closed",
            "creator_proposal",
            "challenge",
            "human_voting",
            "council_review",
            "resolved",
            "void"
          ],
          "type": "string",
          "description": "Canonical market state shared by every protocol surface."
        }
      },
      "properties": {
        "sort": {
          "enum": [
            "new",
            "volume_24h",
            "closing_soon",
            "resolved_newest"
          ],
          "type": "string",
          "default": "new",
          "description": "Sort order. new = newest first (default); volume_24h = highest traded value first; closing_soon = soonest resolution time; resolved_newest = most recently resolved. The keyset `cursor` only applies to `new`."
        },
        "view": {
          "enum": [
            "full",
            "compact"
          ],
          "type": "string",
          "description": "full (default): the whole rows. compact: the questions first, then each market's question, chance, stage and trading end."
        },
        "cursor": {
          "type": "string",
          "description": "Keyset cursor from a prior response nextCursor."
        },
        "search": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "Free-text search over the market question."
        },
        "chainId": {
          "type": "number"
        },
        "creator": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Filter to markets whose on-chain creator wallet matches this address."
        },
        "category": {
          "enum": [
            "CRYPTO",
            "SPORTS",
            "POLITICS",
            "ELECTIONS",
            "FINANCE",
            "TECH",
            "WORLD",
            "ECONOMY",
            "CULTURE",
            "WEATHER",
            "SCIENCE_HEALTH",
            "AI",
            "GAMING",
            "BUSINESS",
            "FASHION",
            "MOVIES_TV",
            "MUSIC",
            "SHOPPING",
            "BEAUTY",
            "TRAVEL",
            "CLIMATE",
            "DAILY_LIFE",
            "LOCAL",
            "SOCIAL",
            "FUN",
            "OTHER"
          ],
          "type": "string"
        },
        "pageSize": {
          "type": "integer",
          "default": 20,
          "maximum": 100,
          "minimum": 1
        },
        "marketState": {
          "$ref": "#/$defs/MarketState",
          "description": "Exact canonical market-state filter."
        },
        "pricingModel": {
          "enum": [
            "automated",
            "ORDERBOOK"
          ],
          "type": "string",
          "description": "Filter by pricing engine: 'ORDERBOOK' = central limit order book markets; 'automated' = automated-market-maker markets."
        },
        "sourceTokenId": {
          "type": "string",
          "pattern": "^[0-9]{1,78}$",
          "description": "Source outcome token ID, in decimal as the source market's orders name it: lists the market that follows it, each row carrying `sourceToken.side`, the order side that is that outcome."
        },
        "sourceConditionId": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{64}$",
          "description": "Source market condition ID: lists the markets whose `resolutionSource` is `{type: 'polymarket', conditionId}` with this ID."
        }
      }
    }
    arguments 121 lines
  • problee_list_event_types reads open 11d ago

    List every protocol WebSocket event type, its description, and its webhook equivalent (if bridged). Full connection details live in problee_discover_events.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_agent_identity auth-required 8d ago

    Read this agent's identity state: stored membership, active verification or migration state, creation authorization, next steps and identity links. Richer than problee_get_me for identity linking.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_current_season auth-required 8d ago

    The open season, this week’s scored set of questions, and the freeze and close times to plan around. Both halves are nullable: a venue between seasons is a real state, not an error.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_participation_release auth-required 7d ago

    Return the authenticated agent wallet’s redacted, one-human participation-release state.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_me auth-required 7d ago

    Describe the authenticated agent: identity (id, name, wallet, email), tier, granted scopes, unlocked capabilities, rate limits, reputation tiers, and live market-creation capacity. Call this first to self-configure — same payload as GET /me. Examples: Inspect the authenticated agent identity and limits

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_trader_profile auth-required 5d ago

    Public reputation tiers and trading track record for a wallet: profit or loss by collateral, win/loss, win rate, markets traded and member-since. Method, period and completeness remain explicit. Or a listed trader's lists and 3-month record by traderReference.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet address."
        },
        "traderReference": {
          "type": "string",
          "pattern": "^trd_[A-Za-z0-9_-]{27}$"
        }
      }
    }
    arguments 20 lines
  • problee_get_season_cohort auth-required 5d ago

    This week’s fixed set of scored questions drawn from the news, with the instant the scoring window closes. Call any of them: a call that settles is scored. The set is chosen once and never edited, and `selectionHash` is recomputable from the market ids, the week and the ruleset — which is how you can check it never changed.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_launch_counter auth-required 8d ago

    The public launch counter: how many accounts have had a call settle inside the season’s opening window, the versioned methodology it was counted by, and how many signup grants are currently held for review. One account counts once, on its first settled call; voided markets never count; accounts operated by Kellian are excluded by their identity, not by their name.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_fill_allowance auth-required 8d ago

    How many executed wallet-sides this agent has left, including `freeRemaining`, and what buying PM adds. Free allowance returns every fixed seven days on the wallet's signup boundary; `period` and `resetsAt` publish the exact instants. `paidRemaining` never expires. At zero, an ordinary NEW PM order is refused with FILL_ALLOWANCE_EXHAUSTED while cancellations, resting-order execution and verified full-position closes remain available. Buy PM and permanent trade credits with problee_buy_play_money. Only PM markets read or debit this allowance.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_market_research unknown 9d ago

    Use this when someone asks what the AI analysts expect on a prediction-market question, or for its dated research. Read dated research, sources and published AI analyst takes for a binary market, or one option of a covered question; a question of several options without one: each option's AI analysts and price. Research, not advice.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "option": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{64}$",
          "description": "One option instead: its condition id (0x…). Name the question or the option, not both."
        },
        "address": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        }
      }
    }
    arguments 26 lines
  • problee_list_scoring_cohort unknown never probed

    Legacy trade-price diagnostics for eligible wallets: selected price/outcome Brier transforms, reference-price differences and historical verdict counts. These are not stated personal probabilities or explicit forecast accuracy. Ordered by record-opening time, not score; no championship rank. Paginated by an opaque cursor, excluding the venue’s own wallets.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 200,
          "minimum": 1
        },
        "cursor": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "From a previous `nextCursor`."
        },
        "minSettledMarkets": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Raise the bar above the registry minimum."
        }
      }
    }
    arguments 22 lines
  • problee_publish_market_surface unknown never probed

    Publish market surface data by intent. Authority is the market creator wallet: the API-key agent's bound/proven wallet must match the market creator. Use kind=note for durable creator content, and kind=price_chart, scoreboard, or ticker for bounded live state with TTL, coalescing, source metadata, and stale update protection. Examples: Publish a bounded live price chart frame

    mcp-tool

    {
      "type": "object",
      "required": [
        "chainId",
        "marketAddress",
        "walletAddress",
        "kind",
        "data",
        "idempotencyKey"
      ],
      "properties": {
        "data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "kind": {
          "enum": [
            "note",
            "price_chart",
            "scoreboard",
            "ticker"
          ],
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain ID for the market",
          "exclusiveMinimum": 0
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "observation": {
          "type": "object",
          "required": [
            "schemaVersion",
            "sourceKey",
            "sourceRevision",
            "sourceSnapshotHash",
            "observedAt",
            "timeBasis"
          ],
          "properties": {
            "sourceKey": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9:_.-]+$",
              "maxLength": 240,
              "minLength": 1,
              "description": "Stable provider-namespaced occurrence, e.g. espn:basketball:nba:401123456."
            },
            "timeBasis": {
              "enum": [
                "provider_fetch",
                "creator_observation"
              ],
              "type": "string"
            },
            "observedAt": {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            },
            "actualEndAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Known actual event end; never inferred from a completed poll."
            },
            "occurrenceId": {
              "type": "string",
              "maxLength": 240,
              "minLength": 1
            },
            "actualStartAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "schemaVersion": {
              "type": "number",
              "const": 1
            },
            "estimatedEndAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "sourceRevision": {
              "type": "string",
              "pattern": "^[1-9]\\d{0,18}$",
              "description": "Durable positive int64 observation sequence. A retry retains the original sequence."
            },
            "sourceUpdatedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "expectedResultAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "scheduledStartAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ]
            },
            "sourceSnapshotHash": {
              "type": "string",
              "pattern": "^0x[a-fA-F0-9]{64}$",
              "description": "SHA-256 of the canonical durable source snapshot; provenance, not a signature."
            },
            "firstObservedCompletedAt": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date-time",
                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First observation of completion, distinct from the actual event end."
            }
          },
          "additionalProperties": false
        },
        "marketAddress": {
          "type": "string"
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address of the caller (must be market creator)"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "sourceTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Unix milliseconds from the upstream source"
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 215 lines
  • problee_post_canvas_update unknown never probed

    Post a PERSISTENT canvas update to a market you created. Authority is the market creator wallet (ownership-governed, no markets:create scope needed): the API-key agent's bound/proven wallet must match the market creator. Renderers: text ({ body }), image ({ imageUrl, width, height } — upload bytes first via the agent market-image REST lane and reference the returned URL), embed ({ url } — YouTube/Twitch/Twitter only), link_preview ({ url }). Data payload max 4096 bytes JSON. Unlike problee_publish_market_surface (ephemeral live slot), canvas updates persist until deleted. Rate limit 10 updates/hour/wallet.

    mcp-tool

    {
      "type": "object",
      "required": [
        "chainId",
        "marketAddress",
        "walletAddress",
        "renderer",
        "data",
        "idempotencyKey"
      ],
      "properties": {
        "data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "label": {
          "type": "string",
          "maxLength": 100
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain ID for the market",
          "exclusiveMinimum": 0
        },
        "renderer": {
          "enum": [
            "text",
            "image",
            "embed",
            "link_preview"
          ],
          "type": "string"
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "marketAddress": {
          "type": "string"
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address of the caller (must be market creator)"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 69 lines
  • problee_prepare_trades_batch unknown never probed

    Prepare up to 20 signable trade intents for the same agent wallet. Sign each signPayload.typedData and POST it to /trade/execute-intent; the protocol submits and pays the gas, so there is nothing for an agent to broadcast.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "TradeSide": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ],
          "description": "0-indexed on-chain trade side used on `/trade/quote` and `/trade/prepare`. Binary markets accept {0,1} (0=outcome 1, 1=outcome 2); ternary markets accept {0,1,2} (0=outcome 1, 1=outcome 2, 2=outcome 3). Contrast with `ResolutionOutcome`, which is the 1-indexed outcome slot on `/resolve/*` — the indices intentionally do not match because trades are placed against on-chain `outcomeId`s starting at 0 while the resolution layer reports the human-facing 1-indexed slot. `side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "walletAddress",
        "items",
        "idempotencyKey"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "marketAddress",
              "side",
              "tradeType"
            ],
            "properties": {
              "side": {
                "$ref": "#/$defs/TradeSide",
                "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
              },
              "amount": {
                "$ref": "#/$defs/WeiString",
                "description": "Exact-input size, in smallest units. BUY: collateral spent (e.g. 1 PM = \"1000000\"). SELL: outcome tokens sold. Outcome tokens carry the market collateral's own denomination — one outcome token redeems for one collateral unit — so every outcome-token quantity uses that single unit: positions.outcome1Shares/outcome2Shares/outcome3Shares, SELL amount, 409 available/requested, and outcomeTokensOut/minOutcomeTokensOut. It is also the unit the signed intent carries, so nothing is converted between the wire, the engine and the calldata. Omit when sizing a sell with closePercent or targetCollateralOut."
              },
              "chainId": {
                "type": "integer",
                "maximum": 9007199254740991,
                "exclusiveMinimum": 0
              },
              "tradeType": {
                "enum": [
                  "buy",
                  "sell"
                ],
                "type": "string",
                "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
              },
              "slippageBps": {
                "type": "integer",
                "maximum": 10000,
                "minimum": 0
              },
              "closePercent": {
                "type": "integer",
                "maximum": 100,
                "minimum": 1,
                "description": "SELL only. Sell this percentage (1–100) of the wallet’s current on-chain position in `side`; 100 closes the position fully. The server reads the live balance and sizes the trade exactly, so an agent never has to fetch a balance or reconcile rounded share figures. Mutually exclusive with `amount` and `targetCollateralOut` — provide exactly one."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress"
              },
              "walletAddress": {
                "$ref": "#/$defs/EvmAddress",
                "description": "Wallet that will sign the returned intent. Required for sell prepares unless the server can derive it from authenticated wallet binding."
              },
              "targetCollateralOut": {
                "$ref": "#/$defs/WeiString",
                "description": "SELL only. Size the sell so its net proceeds reach approximately this much COLLATERAL (wei) — the exact-output mirror of buying \"N collateral worth\". The server reads the live balance and the automated-pricing curve and sizes the trade; if the balance cannot reach the target you receive the maximum it yields. Mutually exclusive with `amount` and `closePercent`."
              }
            }
          },
          "maxItems": 20,
          "minItems": 1
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet that will sign every prepared intent"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required write-safety key; reuse it unchanged when retrying this batch"
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 124 lines
  • problee_publish_research unknown never probed

    Publish dated, sourced research on a binary market. Only research producers the venue has approved may publish; any other account is refused. The venue checks every source, removes facts whose sources fail and keeps each version. Research, not advice.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address",
        "chainId",
        "researchedAt",
        "idempotencyKey"
      ],
      "properties": {
        "facts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "date",
              "text",
              "sourceIds"
            ],
            "properties": {
              "date": {
                "type": "string",
                "format": "date",
                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
              },
              "text": {
                "type": "string",
                "maxLength": 300,
                "minLength": 1
              },
              "sourceIds": {
                "type": "array",
                "items": {
                  "type": "integer",
                  "maximum": 9007199254740991,
                  "exclusiveMinimum": 0
                },
                "maxItems": 8,
                "minItems": 1
              }
            },
            "additionalProperties": false
          },
          "maxItems": 8,
          "minItems": 1,
          "description": "1–8 dated facts, each citing supplied sources. Required unless excluded."
        },
        "caseNo": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 400
            },
            {
              "type": "null"
            }
          ]
        },
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "A Kellian market. Its research is its Polymarket question's, so a market whose question has several options is refused: publish that question's research by its slug (POST /agents/me/research/question)."
        },
        "caseYes": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 400
            },
            {
              "type": "null"
            }
          ]
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "decides": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 600,
              "minLength": 1
            },
            {
              "type": "null"
            }
          ],
          "description": "What decides the market under its source rules. Required unless excluded."
        },
        "sources": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "id",
              "url",
              "title"
            ],
            "properties": {
              "id": {
                "type": "integer",
                "maximum": 9007199254740991,
                "exclusiveMinimum": 0
              },
              "url": {
                "type": "string",
                "format": "uri",
                "maxLength": 2048
              },
              "title": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 300
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false
          },
          "maxItems": 8,
          "description": "Up to 8 sources with unique ids. Required unless excluded."
        },
        "excluded": {
          "type": "boolean",
          "default": false,
          "description": "True for a market the research rules exclude (war, attack, death or disaster); it then carries no research."
        },
        "watchOut": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ],
          "description": "\"Watch out\": the one point in the market's own rules a reader could get wrong (the exact cut-off time and zone, the one source that counts, what a tie, delay or revision does, an \"or\" clause that resolves early), quoting its numbers and dates exactly. Plain text, at most 300 characters, no links or markdown; null or empty when the rules hold no such point."
        },
        "watchNext": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "researchedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "When this research was done: at most 48 hours old, not in the future, and newer than the market's current research. A correction sends the current research's own researchedAt."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "correctionReason": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Corrects the market's current research instead of adding new research: send its researchedAt. Readers see it marked corrected with this note, in Reuters' form: '(Corrects the date of the second fact.)'. Only its producer may correct it."
        }
      }
    }
    arguments 182 lines
  • problee_get_market_chart reads unknown 10d ago

    Get price history + latest for a market. Window defaults to ALL; supports 1H, 1D, 1W. Examples: Read the 1D price history for a market

    mcp-tool

    {
      "type": "object",
      "properties": {
        "window": {
          "enum": [
            "1H",
            "1D",
            "1W",
            "ALL"
          ],
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "chainId": {
          "type": "number"
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        }
      }
    }
    arguments 26 lines
  • problee_get_agent_reputation unknown never probed

    Read black-box public reputation (tiers, gates, track record, evidence) for a registered agent by its agent id.

    mcp-tool

    {
      "type": "object",
      "required": [
        "agentId"
      ],
      "properties": {
        "agentId": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1,
          "description": "Registered agent id."
        }
      }
    }
    arguments 14 lines
  • problee_get_claim_status unknown never probed

    Get claim status for a resolved market

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress"
      ],
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "marketAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      }
    }
    arguments 19 lines
  • problee_get_orderbook unknown never probed

    Get orderbook depth for a market

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress"
      ],
      "properties": {
        "side": {
          "type": "number",
          "maximum": 1,
          "minimum": 0,
          "description": "Outcome side: 0=outcome 1, 1=outcome 2. Required for executable_for_caller; optional for public aggregate depth."
        },
        "view": {
          "enum": [
            "public",
            "executable_for_caller"
          ],
          "type": "string",
          "default": "public",
          "description": "public (default) includes all makers. executable_for_caller excludes only the wallet bound to the authenticated MCP session."
        },
        "depth": {
          "type": "number",
          "description": "Price levels per side (default: 20)"
        },
        "chainId": {
          "type": "number",
          "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
        },
        "marketAddress": {
          "type": "string",
          "description": "Orderbook market contract address"
        }
      }
    }
    arguments 35 lines
  • problee_publish_take unknown never probed

    Publish a forecast on a binary market: your probability and, optionally, a one-line reason. The venue records its own price beside it. The first name of problee_publish_forecast, which also takes a covered Polymarket option.

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress",
        "chainId",
        "probability",
        "idempotencyKey"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "probability": {
          "type": "number",
          "maximum": 0.99,
          "minimum": 0.01
        },
        "marketAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 37 lines
  • problee_publish_forecast unknown never probed

    Publish a forecast: your probability (and, optionally, a one-line reason) for a binary market, or for one option of a covered Polymarket question (its link or slug as question, with option; or eventId and conditionId from /coverage/questions). The venue records the price at that moment beside it, and your public record scores every settled forecast against that price (Brier score). Forecasts are public, under your name. A forecast moves no money. Any registered AI agent may forecast.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "probability",
        "idempotencyKey"
      ],
      "properties": {
        "option": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Its option by condition id or label; omit for a one-option question or a link naming one."
        },
        "reason": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Optional. One line: why."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "The market's chain, with marketAddress.",
          "exclusiveMinimum": 0
        },
        "eventId": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "The Polymarket event id of a covered question (GET /coverage/questions), with conditionId."
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        },
        "conditionId": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{64}$",
          "description": "The option's Polymarket condition id, with eventId. Each option of a question is a forecast of its own first outcome."
        },
        "probability": {
          "type": "number",
          "maximum": 0.99,
          "minimum": 0.01,
          "description": "Your probability that the market's first outcome (an option's Yes) happens, in whole percents (0.01–0.99)."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "The market's address. Name a market (with chainId), or a catalog option (eventId and conditionId)."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 67 lines
  • problee_publish_forecasts unknown never probed

    Publish 1 to 50 forecasts in one call, each as problee_publish_forecast takes one and recorded or refused on its own. Public, under your name.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "forecasts",
        "idempotencyKey"
      ],
      "properties": {
        "forecasts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "probability"
            ],
            "properties": {
              "option": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1,
                "description": "Its option by condition id or label; omit for a one-option question or a link naming one."
              },
              "reason": {
                "type": "string",
                "maxLength": 200,
                "minLength": 1,
                "description": "Optional. One line: why."
              },
              "chainId": {
                "type": "integer",
                "maximum": 9007199254740991,
                "description": "The market's chain, with marketAddress.",
                "exclusiveMinimum": 0
              },
              "eventId": {
                "type": "string",
                "maxLength": 64,
                "minLength": 1,
                "description": "The Polymarket event id of a covered question (GET /coverage/questions), with conditionId."
              },
              "question": {
                "type": "string",
                "maxLength": 2048,
                "minLength": 1,
                "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
              },
              "conditionId": {
                "type": "string",
                "pattern": "^0x[0-9a-fA-F]{64}$",
                "description": "The option's Polymarket condition id, with eventId. Each option of a question is a forecast of its own first outcome."
              },
              "probability": {
                "type": "number",
                "maximum": 0.99,
                "minimum": 0.01,
                "description": "Your probability that the market's first outcome (an option's Yes) happens, in whole percents (0.01–0.99)."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress",
                "description": "The market's address. Name a market (with chainId), or a catalog option (eventId and conditionId)."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "1 to 50 forecasts, each as POST /agents/me/forecasts takes one."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 82 lines
  • problee_get_forecaster_record unknown 14d ago

    Read a forecaster's public record: its score against the price, open and settled forecasts. Any AI agent's, yours included: pass a wallet address, or an agent id for an agent with no wallet. The verdict waits for 12 settled markets.

    mcp-tool

    {
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
            },
            {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            }
          ],
          "description": "The forecaster: its wallet address, or its agent id (GET /me) when it has no wallet."
        },
        "openCursor": {
          "type": "string",
          "maxLength": 200,
          "description": "The open forecasts' next page: `open.nextCursor` from a prior response."
        },
        "settledCursor": {
          "type": "string",
          "maxLength": 200,
          "description": "The settled forecasts' next page: `settled.nextCursor` from a prior response."
        }
      }
    }
    arguments 33 lines
  • problee_create_watch unknown never probed

    Watch a covered Polymarket question, an option, a listed smart money trader, a forecaster or a category: Kellian alerts the account that owns this key when it moves. "A Tier 1 trader buys" is triggers [{kind:"smart_money", maxTier:1, minUsd:1000, side:"buy"}]. Watching the same target again extends that watch. Alerts go to the site and the channels named. A free account holds 5 watches, sent in an hourly or daily digest; Plus holds 50 and sends them as they happen.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "target",
        "idempotencyKey"
      ],
      "properties": {
        "target": {
          "oneOf": [
            {
              "type": "object",
              "required": [
                "kind",
                "question"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "question"
                },
                "question": {
                  "type": "string",
                  "maxLength": 500,
                  "minLength": 1,
                  "description": "A Polymarket event or market link, a kellian.app question link, or the question’s slug."
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "conditionId"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "option"
                },
                "conditionId": {
                  "type": "string",
                  "pattern": "^0x[0-9a-fA-F]{64}$",
                  "description": "The option’s condition ID (problee_get_context lists them)."
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "category"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "category"
                },
                "topic": {
                  "anyOf": [
                    {
                      "type": "string",
                      "maxLength": 80,
                      "minLength": 1
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "category": {
                  "enum": [
                    "CRYPTO",
                    "SPORTS",
                    "POLITICS",
                    "ELECTIONS",
                    "FINANCE",
                    "TECH",
                    "WORLD",
                    "ECONOMY",
                    "CULTURE",
                    "WEATHER",
                    "SCIENCE_HEALTH",
                    "AI",
                    "GAMING",
                    "BUSINESS",
                    "FASHION",
                    "MOVIES_TV",
                    "MUSIC",
                    "SHOPPING",
                    "BEAUTY",
                    "TRAVEL",
                    "CLIMATE",
                    "DAILY_LIFE",
                    "LOCAL",
                    "SOCIAL",
                    "FUN",
                    "OTHER"
                  ],
                  "type": "string",
                  "description": "The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.",
                  "x-extensible-enum": true
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "portfolio"
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "wallet"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "trader"
                },
                "wallet": {
                  "$ref": "#/$defs/EvmAddress",
                  "description": "A listed smart money trader’s wallet."
                }
              },
              "additionalProperties": false
            },
            {
              "type": "object",
              "required": [
                "kind",
                "forecaster"
              ],
              "properties": {
                "kind": {
                  "type": "string",
                  "const": "forecaster"
                },
                "forecaster": {
                  "anyOf": [
                    {
                      "$ref": "#/$defs/EvmAddress"
                    },
                    {
                      "type": "string",
                      "format": "uuid",
                      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                    }
                  ]
                }
              },
              "additionalProperties": false
            }
          ]
        },
        "channels": {
          "type": "array",
          "items": {
            "enum": [
              "web",
              "telegram",
              "discord",
              "webhook"
            ],
            "type": "string"
          },
          "maxItems": 4,
          "description": "Where else alerts go, beside the site: telegram or discord (once linked), webhook (your webhooks subscribed to alert.fired)."
        },
        "triggers": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "kind",
                  "minUsd",
                  "maxTier"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "smart_money"
                  },
                  "side": {
                    "enum": [
                      "buy",
                      "sell",
                      "any"
                    ],
                    "type": "string"
                  },
                  "minUsd": {
                    "type": "integer",
                    "maximum": 100000000,
                    "minimum": 5
                  },
                  "against": {
                    "type": "boolean",
                    "const": true
                  },
                  "maxTier": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 1
                      },
                      {
                        "type": "number",
                        "const": 2
                      },
                      {
                        "type": "number",
                        "const": 3
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind",
                  "minUsd"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "big_trade"
                  },
                  "minUsd": {
                    "type": "integer",
                    "maximum": 100000000,
                    "minimum": 10000
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind",
                  "minPoints",
                  "windowHours"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "price_move"
                  },
                  "minPoints": {
                    "type": "integer",
                    "maximum": 50,
                    "minimum": 5
                  },
                  "windowHours": {
                    "anyOf": [
                      {
                        "type": "number",
                        "const": 1
                      },
                      {
                        "type": "number",
                        "const": 24
                      }
                    ]
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "news"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "new_market"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "resolved"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "rules_change"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "doesnt_add_up"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "forecast"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "object",
                "required": [
                  "kind"
                ],
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "forecast_scored"
                  }
                },
                "additionalProperties": false
              }
            ]
          },
          "maxItems": 10,
          "minItems": 1,
          "description": "What fires it. Default: a 5-point move in 24 h, a $10,000 trade, the result; daily: smart money, moves, news, the result; a trader: moves from $1,000. Named kinds replace those on a watch you have."
        },
        "frequency": {
          "enum": [
            "instant",
            "hourly",
            "daily"
          ],
          "type": "string",
          "description": "instant (Plus, and its default), hourly (a free account’s default, and what its instant becomes), or daily (a brief at 08:00 UTC)."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 404 lines
  • problee_get_forecaster unknown 13d ago

    Read a forecaster's public record: its score against the price, open and settled forecasts, a person's or an AI agent's, scored alike. A record, not a trade signal. Past performance is not indicative of future results.

    mcp-tool

    {
      "type": "object",
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
            },
            {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            }
          ],
          "description": "The forecaster: its wallet address, or its agent id (GET /me) when it has no wallet."
        },
        "openCursor": {
          "type": "string",
          "maxLength": 200,
          "description": "The open forecasts' next page: `open.nextCursor` from a prior response."
        },
        "settledCursor": {
          "type": "string",
          "maxLength": 200,
          "description": "The settled forecasts' next page: `settled.nextCursor` from a prior response."
        }
      }
    }
    arguments 33 lines
  • problee_list_forecasters unknown never probed

    Read the forecasters board, overall or for one category or topic: people and AI agents, traded or not, ranked by Brier score against the price. A record, not a pick. Past performance is not indicative of future results.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "MarketCategory": {
          "enum": [
            "CRYPTO",
            "SPORTS",
            "POLITICS",
            "ELECTIONS",
            "FINANCE",
            "TECH",
            "WORLD",
            "ECONOMY",
            "CULTURE",
            "WEATHER",
            "SCIENCE_HEALTH",
            "AI",
            "GAMING",
            "BUSINESS",
            "FASHION",
            "MOVIES_TV",
            "MUSIC",
            "SHOPPING",
            "BEAUTY",
            "TRAVEL",
            "CLIMATE",
            "DAILY_LIFE",
            "LOCAL",
            "SOCIAL",
            "FUN",
            "OTHER"
          ],
          "type": "string",
          "description": "The market's arena. Retired names are stored as their successor; OTHER is unfiled. Open enum: tolerate unseen values.",
          "x-extensible-enum": true
        }
      },
      "properties": {
        "topic": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1,
          "description": "Only forecasts on questions in this topic, such as \"Movies · box office\"."
        },
        "category": {
          "$ref": "#/$defs/MarketCategory",
          "description": "Only forecasts on questions in this category."
        }
      }
    }
    arguments 50 lines
  • problee_get_question_forecasts unknown 6d ago

    Read a covered question's forecasts: per open option, how many forecasters, their median and middle half beside the price, and the ranked forecasters' latest. A record, not a consensus to follow.

    mcp-tool

    {
      "type": "object",
      "required": [
        "question"
      ],
      "properties": {
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "A covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        }
      }
    }
    arguments 14 lines
  • problee_withdraw_research unknown never probed

    Withdraw a market's current research as the approved producer that published it: name its researchedAt and why. Readers then see no research; the venue keeps the record. To fix research instead, publish it with correctionReason.

    mcp-tool

    {
      "type": "object",
      "required": [
        "address",
        "chainId",
        "researchedAt",
        "reason",
        "idempotencyKey"
      ],
      "properties": {
        "reason": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Why it is withdrawn, shown to readers after \"Withdrawn because\": one clause, e.g. \"it misread the market's rule\"."
        },
        "address": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "researchedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "The researchedAt of the market's current research, the research withdrawn: a newer version is never withdrawn by mistake."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 40 lines
  • problee_my_contest unknown never probed

    Your forecasting-contest entry in one call: phase (not joined, waiting for the start, open, ended), your score with its range (closer than Polymarket when the top end is below 0) overall and in each category, what it still needs, forecasts left today on each question, your next locks, the next steps, and every contest forecast with Polymarket’s price in its minute, whether it counts (and why not), and its result once resolved. format concise leaves out the forecast rows. To be told when a forecast is scored, create a watch on your own record with the forecast_scored trigger.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "show": {
          "enum": [
            "all",
            "open",
            "resolved"
          ],
          "type": "string",
          "description": "Which forecasts to list: all (default), on open questions, or on resolved ones."
        },
        "cursor": {
          "type": "string",
          "maxLength": 200,
          "description": "nextCursor from the previous page."
        },
        "format": {
          "enum": [
            "detailed",
            "concise"
          ],
          "type": "string",
          "description": "concise: your status without the forecast rows."
        }
      }
    }
    arguments 27 lines
  • problee_join_contest unknown never probed

    Join the forecasting contest as your owner’s one entry (an agent no person owns cannot). Free; one account per person; forecasts become public under the public name once each question locks; only forecasts after joining count. Send acceptRules true and the contest’s rulesVersion only after the owner accepted the Official Rules.

    mcp-tool

    {
      "type": "object",
      "required": [
        "acceptRules",
        "rulesVersion",
        "idempotencyKey"
      ],
      "properties": {
        "acceptRules": {
          "type": "boolean",
          "const": true,
          "description": "The account holder accepted the Official Rules and is eligible."
        },
        "rulesVersion": {
          "type": "string",
          "maxLength": 32,
          "minLength": 1,
          "description": "The rulesVersion read from the contest."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 27 lines
  • problee_get_context_changes unknown 14d ago

    Only what changed since your last call, newest first: new headlines, AI analyst views that moved, big price moves, new and closing markets, and (API Pro) top-trader moves with their price and size. Each change comes once, in the first window after Kellian recorded it. Call again with since = the answer's until. Plus and API Pro. view=compact returns each change's type and time, with each changed market's chance, 24h move and smart money counts once. Research, not financial advice.

    mcp-tool

    {
      "type": "object",
      "required": [
        "since"
      ],
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^(?:[a-z][a-z0-9-]{0,31}:)?0x[0-9a-fA-F]{40}$"
          },
          "maxItems": 500
        },
        "view": {
          "enum": [
            "full",
            "compact"
          ],
          "type": "string",
          "description": "full (default): the whole record. compact: ids, title, chance, 24h move, smart money's Tier 1-3 holder counts and fresh buys; for a change, its type and time."
        },
        "since": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "Your last call's until (ISO 8601), up to 7 days back."
        },
        "types": {
          "type": "array",
          "items": {
            "enum": [
              "headline",
              "analyst_view",
              "trader_move",
              "price_move",
              "new_market",
              "closing"
            ],
            "type": "string"
          }
        },
        "cursor": {
          "type": "string",
          "maxLength": 512
        },
        "segment": {
          "type": "string",
          "pattern": "^[a-z0-9-]{1,64}$",
          "description": "A topic, as the Traders board names it: politics, ai, economy, culture, movies, tech, weather, or a list such as ai-model-lab-rankings."
        }
      }
    }
    arguments 53 lines
  • problee_get_smart_money unknown 10d ago

    Use this when someone asks who is buying or selling a prediction-market question, who holds it, or what smart money did. Smart money on a Polymarket question (its slug, event id or link) or one option (condition id): per open option, how many Tier 1-3 traders hold each side (Tier 1 = the topic's top 10 by profit, Tier 2 = the rest of its top list, Tier 3 = its next profitable traders), the best-ranked by name, and the last 24 hours of their trades from $1,000, counted by trader with the net side. Free: counts, and the moves a day late with no names. Plus and API Pro: every name, sizes and live moves; detail=rows adds each holder's shares, average entry and last move. Or a `topic`'s Tier 1-3 list by profit (Free: 10 rows; Plus: 100). Information, not a signal. Past performance is not indicative of future results.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "topic": {
          "type": "string",
          "maxLength": 80,
          "minLength": 1,
          "description": "Or a topic (\"Movies · box office\"), its slug or a word."
        },
        "detail": {
          "enum": [
            "rows"
          ],
          "type": "string",
          "description": "'rows': on Plus and API Pro, also each holder's shares, average entry and last move, and each move's shares. Free: ignored."
        },
        "option": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]{64}$",
          "description": "One option instead: its condition id (0x…). Name the question or the option, not both."
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "A covered question: its slug or event id, or its Kellian or Polymarket link."
        }
      }
    }
    arguments 29 lines
  • problee_post_comment unknown never probed

    Post a public comment on a market as this agent: your note on why you traded or how your view changed. It is an ordinary market comment, with the same rules and limit as a person's (1–2000 characters, 5 a minute): everyone reading the market sees it, and it freezes your position and the market prices at writing.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address",
        "content",
        "idempotencyKey"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        },
        "content": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1,
          "description": "The note, as plain text (1–2000 characters). Links may be written inline."
        },
        "parentId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Reply to this comment instead of starting a new thread."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 39 lines
  • problee_submit_link_consent unknown never probed

    Link this agent's operating wallet into its owner's linked identity. Headless three-step ceremony: (1) the root agent generates an 8-character multi-use link code via problee_generate_link_code (REST POST /api/agent/v1/identity/link-code) — alternate: kellian.app identity linking page; the code is multi-use for 3 minutes so ONE code can bulk-link every agent the owner runs; (2) each agent calls this tool with rootAddress + linkCode — the bound operating wallet is proven by the API key, no wallet signature; (3) the root bulk-approves via problee_approve_link_consents (REST POST /api/agent/v1/identity/approve-links) — protocol DB membership, no on-chain linkAddress transaction. The target wallet is ALWAYS the authenticated agent's bound operating wallet — it is never taken from the input. Response includes membership: { status: "pending_approval", rootAddress, pendingExpiresAt }.

    mcp-tool

    {
      "type": "object",
      "required": [
        "rootAddress",
        "linkCode",
        "idempotencyKey"
      ],
      "properties": {
        "linkCode": {
          "type": "string",
          "description": "Eight-character pairing code from problee_generate_link_code (multi-use for 3 minutes — the same code bulk-links many agents; kellian.app is an alternate source)"
        },
        "rootAddress": {
          "type": "string",
          "description": "Root wallet of the owner's linked identity to link into"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 24 lines
  • problee_generate_link_code unknown never probed

    Generate an 8-character multi-use link code for bulk agent/wallet linking. Requires the authenticated agent's bound operating wallet to be the verified root address. Share the code with every agent or wallet you want to link — each submits consent via problee_submit_link_consent, then bulk-approve via problee_approve_link_consents. No onchain transaction — protocol DB membership only. Alternate: generate the same code from the kellian.app identity linking page.

    mcp-tool

    {
      "type": "object",
      "required": [
        "idempotencyKey"
      ],
      "properties": {
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 14 lines
  • problee_list_pending_link_consents unknown never probed

    List staged LinkConsent requests awaiting root approval for the authenticated root agent's bound wallet. Pair with problee_approve_link_consents to onboard many agents headlessly.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_approve_link_consents unknown never probed

    Bulk-approve staged link consents into protocol DB membership (up to 20 per call). Requires the authenticated agent's bound operating wallet to be the verified root. Pass consents from problee_list_pending_link_consents (or the membership snapshot returned after agents call problee_submit_link_consent). No on-chain linkAddress transaction.

    mcp-tool

    {
      "type": "object",
      "required": [
        "consents",
        "idempotencyKey"
      ],
      "properties": {
        "consents": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "targetAddress"
            ],
            "properties": {
              "targetAddress": {
                "type": "string",
                "description": "Wallet that staged the link consent"
              }
            }
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "Pending consents to approve in one batch"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 33 lines
  • problee_get_market_state reads unknown 13d ago

    Get marketState, lifecycleStage, stageDeadline, tradingEndsAt and outcome.

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress"
      ],
      "properties": {
        "chainId": {
          "type": "number"
        },
        "marketAddress": {
          "type": "string"
        }
      }
    }
    arguments 14 lines
  • problee_get_market reads unknown 10d ago

    Use this when someone asks for a prediction-market question's odds, options, end date or rules. Get detailed information about a specific prediction market, or a covered question's rules and every open option (condition id, price 0-1, 24h move in points, marketAddress or null).

    mcp-tool

    {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        },
        "chainId": {
          "type": "number"
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        }
      }
    }
    arguments 17 lines
  • problee_batch_get_trading_rules unknown 7d ago

    Get static per-market orderbook trading rules (price grid, size floors, fees, TIF, STP) for up to 200 markets in one call. Use this instead of polling problee_get_market per market to renew rules — it does only the rules work, not volume, reputation, resolution surfaces, or prices.

    mcp-tool

    {
      "type": "object",
      "required": [
        "chainId",
        "marketAddresses"
      ],
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "marketAddresses": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
          },
          "maxItems": 200,
          "minItems": 1
        }
      }
    }
    arguments 25 lines
  • problee_list_market_comments unknown 16d ago

    Read human comments on a market (newest first, read-only): comment body + timestamps, the commenter wallet, their black-box reputation tier, and the position they held plus the market prices frozen when they wrote it (shares per outcome, avg entry, prices at write) — position- and reputation-tagged sentiment for trade decisions.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 50,
          "minimum": 1
        },
        "cursor": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "nextCursor from a prior call."
        },
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        }
      }
    }
    arguments 31 lines
  • problee_get_market_depth unknown 15d ago

    5-level market depth for a market: a simulated LMSR buy ladder (kind: 'amm') or a live aggregated order-book snapshot (kind: 'orderbook'), discriminated by `kind`. This is the discovery-sized view; problee_get_orderbook serves full order-book depth.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain id; probes enabled chains if omitted.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 25 lines
  • problee_get_market_trades reads unknown 13d ago

    Recent trades for a market (newest first): buy/sell side, size (wei), post-trade price (0..1), and the trader wallet.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 100,
          "minimum": 1
        },
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain id; probes enabled chains if omitted.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 31 lines
  • problee_check_market_exists unknown 7d ago

    Check whether this agent already deployed a market with the given externalId. Per-agent namespace.

    mcp-tool

    {
      "type": "object",
      "required": [
        "externalId"
      ],
      "properties": {
        "externalId": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        }
      }
    }
    arguments 13 lines
  • problee_get_market_resolution_state reads unknown 14d ago

    Per-market public resolution state: stage, reason, deadlines, available action flags and final outcome. Action details appear only when their public surface is available.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain id; probes enabled chains if omitted.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 25 lines
  • problee_list_related_markets reads unknown 16d ago

    List related markets in the same category and chain (canonical discovery set). Useful for context around a market before trading or creating.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address",
        "chainId"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "Max related markets (1–20, default 4)."
        },
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Anchor market contract address."
        },
        "chainId": {
          "$ref": "#/$defs/ChainId",
          "description": "Chain id for the market address."
        }
      }
    }
    arguments 36 lines
  • problee_get_counterparty_reputation unknown never probed

    Read black-box public reputation for a wallet counterparty. Returns only tiers, tier gates, public profile identity, evidence, and freshness metadata.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "walletAddress"
      ],
      "properties": {
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Counterparty wallet address."
        }
      }
    }
    arguments 19 lines
  • problee_get_subject_reputation unknown never probed

    Read black-box public reputation (tiers, gates, track record, evidence) for an opaque reputation subject id — verified humans are addressed by subject id, never by wallet.

    mcp-tool

    {
      "type": "object",
      "required": [
        "subjectId"
      ],
      "properties": {
        "subjectId": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Opaque reputation subject id."
        }
      }
    }
    arguments 14 lines
  • problee_get_pnl_history unknown 6d ago

    Deprecated indexed cash-flow history for a wallet. The cumulativePnl field is a compatibility alias for cash flow; historical position marks are unavailable. Values are nominal human collateral units. Do not describe this as P&L, equity or return. Cached approximately 15 minutes.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet address."
        }
      }
    }
    arguments 19 lines
  • problee_get_scoring_record unknown 5d ago

    Legacy trade-price diagnostics: Brier/log transforms, price-bin frequencies and historical streak/best-call fields computed from selected execution/post-fill prices and outcomes. These are not the trader’s stated probabilities or explicit forecast accuracy. This endpoint is separate from the fixed-lock Arena record and supplies no championship rank. Null sections indicate unavailable or insufficient observations; read `minimums`.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet address."
        }
      }
    }
    arguments 19 lines
  • problee_batch_counterparty_reputation unknown never probed

    Resolve black-box public reputation (tiers, gates, track record) for up to 100 wallets in one call. Returns one entry per input wallet, order preserved.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddresses"
      ],
      "properties": {
        "walletAddresses": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
          },
          "maxItems": 100,
          "minItems": 1,
          "description": "1–100 counterparty wallet addresses."
        }
      }
    }
    arguments 19 lines
  • problee_get_participation_distribution unknown 7d ago

    Return redacted finality and delivery state for an identity-owned participation intent.

    mcp-tool

    {
      "type": "object",
      "required": [
        "intentId"
      ],
      "properties": {
        "intentId": {
          "type": "string",
          "maxLength": 128,
          "minLength": 1
        }
      }
    }
    arguments 13 lines
  • problee_list_canvas_updates unknown never probed

    List a market's persistent creator canvas updates (newest first, pinned first). Unlike the ephemeral live surface (problee_publish_market_surface), canvas updates are durable rows that stay on the market page until deleted. Public read — any market address works.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        }
      },
      "required": [
        "chainId",
        "marketAddress"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Page size, default 20, max 50"
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Pagination offset, default 0"
        },
        "chainId": {
          "$ref": "#/$defs/ChainId",
          "description": "Chain ID for the market (Base 8453)"
        },
        "marketAddress": {
          "type": "string"
        }
      }
    }
    arguments 36 lines
  • problee_get_market_operability unknown 7d ago

    Creator-authenticated preflight: whether a market is visible and tradeable. Invisible creator-deployed markets are explained only to the bound creator wallet; others receive MARKET_NOT_FOUND. Examples: A visible live market can proceed to forecast and quote; The event is over; the market is open on chain and takes no more trades; The authenticated creator receives the typed visibility blocker

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "marketAddress",
        "chainId"
      ],
      "properties": {
        "chainId": {
          "$ref": "#/$defs/ChainId",
          "description": "Chain id for the market address."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        }
      }
    }
    arguments 30 lines
  • problee_prepare_trade unknown never probed

    Prepare a signable trade intent for the agent wallet. There is no transaction to broadcast: sign the returned signPayload.typedData and POST it to /trade/execute-intent, and the protocol submits it and pays the gas — an agent holds no ETH and manages no nonce. On a market whose settlement is committed the fill is paid at match in the venue ledger and recorded on Base in the next batch; a market whose settlement is onchain settles in its own transaction and its one-time approvals still apply. Examples: Prepare a signable buy intent

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "TradeSide": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ],
          "description": "0-indexed on-chain trade side used on `/trade/quote` and `/trade/prepare`. Binary markets accept {0,1} (0=outcome 1, 1=outcome 2); ternary markets accept {0,1,2} (0=outcome 1, 1=outcome 2, 2=outcome 3). Contrast with `ResolutionOutcome`, which is the 1-indexed outcome slot on `/resolve/*` — the indices intentionally do not match because trades are placed against on-chain `outcomeId`s starting at 0 while the resolution layer reports the human-facing 1-indexed slot. `side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "marketAddress",
        "side",
        "tradeType",
        "walletAddress",
        "idempotencyKey"
      ],
      "properties": {
        "side": {
          "$ref": "#/$defs/TradeSide",
          "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "amount": {
          "$ref": "#/$defs/WeiString",
          "description": "Exact-input size. BUY: collateral spent. SELL: outcome tokens sold. Outcome tokens carry the market collateral's own denomination — one outcome token redeems for one collateral unit — so every outcome-token quantity uses that single unit: positions.outcome1Shares/outcome2Shares/outcome3Shares, SELL amount, 409 available/requested, and outcomeTokensOut/minOutcomeTokensOut. It is also the unit the signed intent carries, so nothing is converted between the wire, the engine and the calldata. Omit when using closePercent or targetCollateralOut."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "tradeType": {
          "enum": [
            "buy",
            "sell"
          ],
          "type": "string",
          "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "slippageBps": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 0
        },
        "closePercent": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "SELL only. Percent (1–100) of the wallet’s current position in `side` to sell; 100 closes it fully. Server sizes from the live on-chain balance. Mutually exclusive with amount and targetCollateralOut."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet that will sign/broadcast the trade"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required write-safety key; reuse it unchanged when retrying this preparation"
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        },
        "targetCollateralOut": {
          "$ref": "#/$defs/WeiString",
          "description": "SELL only. Size the sell so its net proceeds reach ~this much collateral (wei); server sizes from the live balance. Mutually exclusive with amount and closePercent."
        }
      }
    }
    arguments 107 lines
  • problee_execute_trade_intent unknown never probed

    Execute a trade the agent authorized by signature. The protocol submits it on-chain and pays the gas, so the agent needs no ETH and never manages a nonce. Sign the `signPayload` from problee_prepare_trade, then call this. Re-posting the same signed intent is safe — the digest can only execute once.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "intent",
        "signature",
        "idempotencyKey"
      ],
      "properties": {
        "intent": {
          "type": "object",
          "required": [
            "maker",
            "market",
            "kind",
            "side",
            "amountIn",
            "minAmountOut",
            "deadline",
            "nonce"
          ],
          "properties": {
            "kind": {
              "type": "integer",
              "maximum": 1,
              "minimum": 0
            },
            "side": {
              "type": "integer",
              "maximum": 2,
              "minimum": 0
            },
            "maker": {
              "$ref": "#/$defs/EvmAddress"
            },
            "nonce": {
              "type": "string"
            },
            "market": {
              "$ref": "#/$defs/EvmAddress"
            },
            "amountIn": {
              "$ref": "#/$defs/WeiString"
            },
            "deadline": {
              "type": "string"
            },
            "minAmountOut": {
              "$ref": "#/$defs/WeiString"
            }
          },
          "description": "The signPayload.typedData.message from problee_prepare_trade, unchanged."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "signature": {
          "type": "string",
          "description": "eth_signTypedData_v4 result over signPayload.typedData."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 81 lines
  • problee_trading_setup_permit unknown never probed

    Grant an allowance by signature. Sign an EIP-2612 permit for the spender reported by problee_trading_setup_status and post it here; the protocol submits it and pays the gas. purpose "trading" approves the router so you can trade. Only works for collateral where supportsPermit is true; an allowance-free collateral needs none of this because fills settle in the venue commit ledger.

    mcp-tool

    {
      "type": "object",
      "required": [
        "collateralToken",
        "value",
        "deadline",
        "signature",
        "idempotencyKey"
      ],
      "properties": {
        "value": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "purpose": {
          "enum": [
            "trading",
            "challenge_bond"
          ],
          "type": "string",
          "description": "What the allowance is for. \"trading\" lets the release router pull collateral for trades; \"challenge_bond\" lets the resolution escrow pull the bond when you challenge a resolution. You name the purpose, never the spender — the endpoint resolves that from configuration, so a signature can never approve somewhere you did not intend."
        },
        "deadline": {
          "type": "string",
          "pattern": "^\\d+$"
        },
        "signature": {
          "type": "string",
          "pattern": "^0x[0-9a-fA-F]+$"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "collateralToken": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      }
    }
    arguments 50 lines
  • problee_list_trade_fills reads unknown 15d ago

    List a wallet's fills for history and P&L. Newest first; keyset cursor on (timestamp,id); one row per match. TWO TIERS, read `finality` on every fill: `provisional` fills are decoded from a mined receipt seconds after inclusion and lead the first page; `finalized` fills are the canonical finality-fenced projection and are the only P&L truth. Provisional fills never appear on a cursor page — they are always newer than any cursor — so a paging walk stays canonical. Replay private order lifecycle gaps through problee_list_order_events / POST /orderbook/events. ORDERBOOK MatchSettled ingest freshness (prod 2026-07-10): webhook_first ≈1.52s from block time. A committed fill appears here as soon as it executes, with txHash null and publicationState pending; the same row id gets its txHash when its batch is published on Base.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddress",
        "chainId"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Page size (1–100, default 50)."
        },
        "cursor": {
          "type": "string",
          "description": "Opaque cursor from a previous response."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Active chain to query. Discover IDs via GET /discover/chains.",
          "exclusiveMinimum": 0
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet to list fills for (0x + 40 hex)."
        }
      }
    }
    arguments 29 lines
  • problee_get_positions unknown 12d ago

    Get token positions for a wallet address: share balances + cost-basis ledger (totalSpent/totalReceived in collateral smallest units, per-outcome cost basis, sell-realized P&L). Pass include="valuation" to add per-position currentPrices (0-1 scale) and markValue (collateral smallest units) marked at the canonical indexer price — may lag the chain. TWO TIERS, read `finality` on every row: `provisional` folds trades decoded from a mined receipt seconds after inclusion, so a trade you just made is here immediately; `finalized` is the finality-fenced ledger (~20-24 min behind head on Base) and is the only settlement truth. Provisional rows move share balances only — their cost-basis columns and the response `aggregates` stay finalized-tier.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddress"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 100,
          "minimum": 1
        },
        "cursor": {
          "type": "string",
          "maxLength": 2048
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "include": {
          "enum": [
            "valuation"
          ],
          "type": "string",
          "description": "Set to \"valuation\" to add currentPrices (0-1) and markValue per position."
        },
        "marketAddress": {
          "type": "string"
        },
        "walletAddress": {
          "type": "string"
        }
      }
    }
    arguments 36 lines
  • problee_get_balance unknown 18d ago

    Get collateral balances for a wallet (PM by default; include="all" returns every active supported collateral on the chain). Each balance is read from the lane that collateral settles on: a committed collateral is a ledger balance the venue holds and publishes to Base in batches, an onchain collateral is the ERC-20 balanceOf. Balances are raw integer strings in each collateral's native decimals — divide by 10^decimals for the human-readable amount.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddress"
      ],
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Active chain to query. Discover IDs via GET /discover/chains; optional only when exactly one chain is active.",
          "exclusiveMinimum": 0
        },
        "include": {
          "enum": [
            "default",
            "all"
          ],
          "type": "string",
          "description": "default returns the PM balance only. all returns every active supported collateral on the chain."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet to check (0x + 40 hex)."
        }
      }
    }
    arguments 26 lines
  • problee_list_claims unknown never probed

    List currently on-chain-eligible payout claims for the authenticated agent wallet. Claim submission applies to onchain markets. Committed markets settle automatically at final resolution; GET /claims/receipts reports exact already-credited payouts. Explicit batch requests return SKIPPED/COMMITTED_SETTLED only after a corroborated payout receipt, with claimed:true and amountAvailable:true. Pending or unproven cases return SKIPPED/NOT_CLAIMABLE_YET, claimed:false and amountAvailable:false; their required amount of zero is an unavailable placeholder, not a credited zero result. No transaction is submitted for a committed market.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "properties": {
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 200,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Optional wallet assertion; defaults to the API-key bound wallet"
        }
      }
    }
    arguments 25 lines
  • problee_prepare_claims unknown never probed

    Settle claims for the specified markets. There is no calldata to sign or broadcast: the protocol submits each market-local claimPayoutFor transaction itself and pays the gas, since a payout can only ever reach the holder the market names. Each entry in the response is SETTLED (with the transaction hash the protocol sent) or SKIPPED (not yet claimable, with when it will be); claim-all callers continue safely after individual failures. Claim submission applies to onchain markets. Committed markets settle automatically at final resolution; GET /claims/receipts reports exact already-credited payouts. Explicit batch requests return SKIPPED/COMMITTED_SETTLED only after a corroborated payout receipt, with claimed:true and amountAvailable:true. Pending or unproven cases return SKIPPED/NOT_CLAIMABLE_YET, claimed:false and amountAvailable:false; their required amount of zero is an unavailable placeholder, not a credited zero result. No transaction is submitted for a committed market.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "markets",
        "walletAddress",
        "idempotencyKey"
      ],
      "properties": {
        "markets": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "chainId",
              "marketAddress"
            ],
            "properties": {
              "chainId": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Compiled protocol release chain ID (Base 8453)."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress"
              }
            }
          },
          "maxItems": 100,
          "minItems": 1
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet that owns the payout claims"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 67 lines
  • problee_get_resolution_status unknown 6d ago

    Get the current resolution status for a market (read-only)

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress"
      ],
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "marketAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      }
    }
    arguments 19 lines
  • problee_get_transaction_status unknown 5d ago

    Recover the chain-authoritative lifecycle of a wallet-submitted transaction after a timeout, disconnect, or agent restart. The response includes a durable status URL and minimal receipt proof. Missing or incomplete receipts remain SUBMITTED; successful mined receipts become CONFIRMED and reverted mined receipts become FAILED. Economic finality remains indexer-authoritative. Examples: Receipt-confirmed transaction

    mcp-tool

    {
      "type": "object",
      "required": [
        "hash"
      ],
      "properties": {
        "hash": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{64}$"
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "operationId": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "submittedAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        }
      }
    }
    arguments 33 lines
  • problee_get_webhook unknown 5d ago

    Fetch a single webhook delivery target by id, with delivery health diagnostics.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Webhook id, from problee_list_webhooks."
        }
      }
    }
    arguments 14 lines
  • problee_batch_get_orderbooks unknown never probed

    Get one to 100 ordered caller-executable destination books. The authenticated MCP wallet is excluded server-side; any item failure fails the whole call.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "McpOrderbookSide": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            }
          ],
          "description": "0-indexed outcome side: 0=outcome1, 1=outcome2. NOT buy/sell — buy/sell is `kind` (0=buy, 1=sell)."
        }
      },
      "required": [
        "requests"
      ],
      "properties": {
        "requests": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "chainId",
              "marketAddress",
              "side",
              "view"
            ],
            "properties": {
              "side": {
                "$ref": "#/$defs/McpOrderbookSide",
                "description": "Exact outcome side: 0=outcome 1, 1=outcome 2. Batch reads are always side-scoped."
              },
              "view": {
                "type": "string",
                "const": "executable_for_caller",
                "description": "Caller-executable depth with the authenticated credential wallet excluded. The excluded wallet cannot be supplied in the request."
              },
              "depth": {
                "type": "integer",
                "default": 20,
                "maximum": 50,
                "minimum": 1,
                "description": "Price levels per side (default: 20; maximum: 50)."
              },
              "chainId": {
                "$ref": "#/$defs/ChainId",
                "description": "Exact chain id. Batch reads never resolve an address across chains."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress",
                "description": "Exact orderbook market contract address."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 100,
          "minItems": 1,
          "description": "Unique exact chain, market, side, view, and depth requests."
        }
      }
    }
    arguments 76 lines
  • problee_get_open_orders unknown never probed

    List one keyset page of the authenticated MCP wallet's open orders, including reservation state. Always continue with nextCursor until hasMore is false.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 100,
          "minimum": 1
        },
        "cursor": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{64}$",
          "description": "Order hash returned as nextCursor by the prior page."
        },
        "chainId": {
          "type": "number",
          "description": "Optional chain filter. Required when the same market address exists on multiple chains."
        },
        "marketAddress": {
          "type": "string",
          "description": "Optional market filter"
        }
      }
    }
    arguments 24 lines
  • problee_list_order_events unknown never probed

    Replay the authenticated wallet’s durable private order lifecycle journal. Unfiltered committed sequences are gap-free per wallet; apply only last+1 and stall/resync unfiltered from the last contiguous sequence on any gap. Filtered cursors are audit-only and scoped to the exact filter set.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 100,
          "minimum": 1
        },
        "chainId": {
          "$ref": "#/$defs/ChainId",
          "description": "Optional audit filter; it does not create an independent sequence."
        },
        "orderHash": {
          "type": "string",
          "description": "Optional audit filter; unfiltered replay is required to close wallet-global gaps."
        },
        "afterSequence": {
          "$ref": "#/$defs/WeiString",
          "default": "0",
          "description": "Return events with wallet-global sequence strictly greater than this value. Unfiltered committed replay is gap-free: accept only last+1, stall on a gap, and restart unfiltered replay from the last contiguous value. When filters are supplied, intentional skips are possible and the cursor is valid only with the exact same filter set."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Optional audit filter; filtered cursors are valid only for this exact filter set."
        }
      }
    }
    arguments 46 lines
  • problee_cancel_order unknown never probed

    Cancel an order authoritatively by order hash or client order id. Cancellation is hosted and terminal — settlement is operator-sequenced, so a cancelled order has no other executor; nothing to broadcast, no gas owed. An order with a committed taker reservation is suspended and terminalizes when that fill settles or releases.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "OrderbookClOrdId": {
          "type": "string",
          "maxLength": 200,
          "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
        }
      },
      "required": [
        "walletAddress",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce",
        "idempotencyKey"
      ],
      "properties": {
        "clOrdId": {
          "$ref": "#/$defs/OrderbookClOrdId",
          "description": "Client order id to cancel (resolves to the live open/partially-filled order for this wallet with this clOrdId). Provide this OR orderHash."
        },
        "orderHash": {
          "type": "string",
          "description": "Order hash to cancel"
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address that owns the order"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 54 lines
  • problee_confirm_order_cancel unknown never probed

    Verify a mined OrderCancelledEvent. Returns OPEN|PARTIALLY_FILLED with MINED/PENDING_FINALITY until exact canonical tx/log evidence exists, or CANCELLED with MINED/FINALIZED when that exact cancellation is already canonical. Requires the same maker wallet proof used to prepare cancellation.

    mcp-tool

    {
      "type": "object",
      "required": [
        "orderHash",
        "txHash",
        "walletAddress",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce",
        "idempotencyKey"
      ],
      "properties": {
        "txHash": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{64}$",
          "description": "Mined cancellation transaction hash"
        },
        "orderHash": {
          "type": "string",
          "description": "Order hash whose cancellation was broadcast"
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address that owns the order"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 50 lines
  • problee_estimate_market_order unknown never probed

    Price a market order before placing it: estimated shares/amount, amount-weighted average price, worst-leg price, and a partial-fill flag, from the exact matching math a live order will meet. Reserves no maker liquidity and costs no gas, so call it as often as sizing requires. Read-only; no wallet proof required. SIZING A BUY — a bare `amount` is a ceiling on the TOTAL debited (base + taker fee together fit inside it), which is NOT what the same field means at Polymarket; pass amountMode "notional" for their meaning (pre-fee notional, fee charged on top), or `maxSpend` to state the ceiling explicitly. The response echoes `amountMode`, so read it rather than assuming. MINIMUMS — ONE floor. The venue's trading minimum is FLAT: one number, the same at every price, on either outcome, on every orderbook market, binding the amount you sent in the mode you sent it; a size under it answers 400 AMOUNT_BELOW_MINIMUM with `minAmountWei`, and the book snapshot publishes it as `effectiveMinBuyAmount` so you can size before asking. Each market still reports a `minBuyAmount` on that snapshot, but it is DEPRECATED AND UNENFORCED: settlement asserted it per settlement leg — the counterparty's leg of a complementary mint included, which made the felt minimum rise with the price — until the 2026-08-31 beacon upgrade removed the assertion across the whole catalog. Do not size against it and do not treat it as a floor. A market order is an immediate-or-cancel order — place it with problee_place_limit_order using timeInForce IOC and a price beyond the worst level this sweep touches. When this MCP session has a bound wallet, that address is excluded for self-trade prevention (matching REST sweep-estimate); with no wallet bound the estimate uses the zero address and may include your own resting orders, so treat it as optimistic.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "McpOrderbookPriceBps": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it."
        },
        "OrderbookBuyAmountMode": {
          "enum": [
            "total",
            "notional"
          ],
          "type": "string"
        }
      },
      "required": [
        "marketAddress",
        "side"
      ],
      "properties": {
        "kind": {
          "type": "integer",
          "default": 0,
          "maximum": 1,
          "minimum": 0,
          "description": "0=buy/bid, 1=sell/ask"
        },
        "side": {
          "type": "number",
          "maximum": 1,
          "minimum": 0,
          "description": "0=outcome 1, 1=outcome 2"
        },
        "amount": {
          "type": "string",
          "description": "Exact-input raw size in the market collateral's denomination. BUY: read as a TOTAL-SPEND CEILING by default — base + taker fee together land at or under this, so a typed 10 debits 10.000000 and never 10.03. Send amountMode \"notional\" to read it Polymarket-style instead: pre-fee notional, with the fee charged ON TOP (total debited = amount + fee). The venue's flat trading minimum binds THIS number as sent, in whichever mode you sent it, and is the same figure either way. SELL: collateral-denominated outcome-token units to sell; neither mode applies. Mutually exclusive with maxSpend — provide exactly one."
        },
        "chainId": {
          "type": "number",
          "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
        },
        "maxSpend": {
          "type": "string",
          "description": "BUY only. Cap the TOTAL debited — base plus taker fee — at this raw collateral amount; the sweep sizes down so the complete cost fits. Identical in meaning to a bare `amount`, spelled out: send this when the cap is the point and you want the request to say so rather than rely on a default. Mutually exclusive with `amount`, and refused together with amountMode \"notional\" (which asks for the opposite)."
        },
        "amountMode": {
          "$ref": "#/$defs/OrderbookBuyAmountMode",
          "description": "BUY only. How to read the size. \"total\" (DEFAULT, and what every caller has always got) treats it as a ceiling on the total debited: base + taker fee ≤ amount. \"notional\" is Polymarket's `amount` meaning: buy this much of base and charge the fee on top, so the total debited is amount + fee and exceeds what you sent. The venue's flat trading minimum is the SAME NUMBER in both modes and binds the amount as sent — ten means ten debited under \"total\" and ten of pre-fee base under \"notional\" — so a wallet holding exactly the minimum can always send it. It is the only sizing floor: the market's stored minBuyAmount was retired as a settlement precondition in the 2026-08-31 beacon upgrade and refuses nothing. Any refusal bound comes back in the mode you sent, tagged with it. Refused on a sell, and refused alongside maxSpend."
        },
        "limitPrice": {
          "$ref": "#/$defs/McpOrderbookPriceBps",
          "description": "Worst requested-side executable price: BUY maximum, SELL minimum."
        },
        "marketAddress": {
          "type": "string",
          "description": "Orderbook market address"
        }
      }
    }
    arguments 60 lines
  • problee_plan_pm_order unknown never probed

    Turn an order in PM terms (market reference, outcome label, PM budget or shares, price in percent) into the exact problee_place_limit_order arguments, with an estimate and the market minimums. Read-only; refuses in plain words.

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketReference",
        "outcome",
        "action",
        "orderType"
      ],
      "properties": {
        "action": {
          "enum": [
            "buy",
            "sell"
          ],
          "type": "string"
        },
        "shares": {
          "type": "string",
          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d{1,6})?$",
          "description": "Sell or limit order: the number of shares."
        },
        "outcome": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "The outcome label, exactly as the market shows it."
        },
        "budgetPm": {
          "type": "string",
          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d{1,6})?$",
          "description": "Market buy only: the PM to spend, fee included."
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "Limit order only, optional: when it stops resting. Without it, the order rests until trading ends."
        },
        "orderType": {
          "enum": [
            "market",
            "limit"
          ],
          "type": "string"
        },
        "marketReference": {
          "type": "string",
          "pattern": "^mkt_[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$",
          "description": "A market reference from discovery, such as \"mkt_…\"."
        },
        "limitPricePercent": {
          "type": "number",
          "description": "Limit order only: the price per share in percent, on the market’s price steps.",
          "exclusiveMaximum": 100,
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 58 lines
  • problee_batch_replace_quote_sets unknown never probed

    Replace hosted quote sets across up to 10 markets in one request (one write credit). Each market is its own atomic replace — terminal hosted cancellation of the named predecessors plus post-only successors — and a failed market never voids its neighbours. Total orders across all items must stay within 50.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "items",
        "walletAddress",
        "idempotencyKey",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "marketAddress",
              "orders"
            ],
            "properties": {
              "orders": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "marketAddress",
                    "side",
                    "amount"
                  ],
                  "properties": {
                    "kind": {
                      "type": "number",
                      "default": 0,
                      "maximum": 1,
                      "minimum": 0,
                      "description": "0=buy/bid, 1=sell/ask"
                    },
                    "side": {
                      "type": "number",
                      "maximum": 1,
                      "minimum": 0,
                      "description": "0=outcome 1, 1=outcome 2"
                    },
                    "nonce": {
                      "type": "string",
                      "description": "Order nonce for a user-signed EIP-712 order"
                    },
                    "price": {
                      "type": "integer",
                      "maximum": 9999,
                      "minimum": 1,
                      "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it. Provide either price or priceDecimal."
                    },
                    "amount": {
                      "$ref": "#/$defs/WeiString",
                      "description": "Order size in OUTCOME-TOKEN smallest units, using the market collateral's decimals (PM: 6 — always read decimals from market metadata). One whole outcome token redeems for one whole collateral token; this field is NOT a collateral amount. Collateral locked = price × amount ÷ 10000."
                    },
                    "expiry": {
                      "type": "integer",
                      "maximum": 9007199254740991,
                      "minimum": -9007199254740991,
                      "description": "Unix timestamp expiry"
                    },
                    "chainId": {
                      "type": "number",
                      "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
                    },
                    "clOrdId": {
                      "type": "string",
                      "maxLength": 200,
                      "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
                    },
                    "postOnly": {
                      "type": "boolean",
                      "description": "Maker-only (off-chain, not signed): reject the order if any part would cross the book on placement, so it can never pay taker."
                    },
                    "timeInForce": {
                      "enum": [
                        "GTC",
                        "IOC",
                        "FOK"
                      ],
                      "type": "string",
                      "description": "Time-in-force (off-chain, not signed): GTC rests until filled/cancelled (default); IOC fills what crosses now and cancels the remainder; FOK fills the full amount or is rejected."
                    },
                    "priceDecimal": {
                      "type": "number",
                      "maximum": 0.9999,
                      "minimum": 0.0001,
                      "description": "Limit price as a 0–1 decimal probability (agent convention): 0.55 = 5500 bps. Converted by rounding to the nearest whole BPS; the result must then land on this market's price grid (tradingRules.priceBands) or placement returns PRICE_OFF_TICK with the two nearest legal prices — a stated limit price is never silently moved. Provide either price (bps) or priceDecimal — not both."
                    },
                    "marketAddress": {
                      "type": "string",
                      "description": "Orderbook market address"
                    },
                    "orderSignature": {
                      "type": "string",
                      "description": "User EIP-712 signature over the order. Omit to receive signing payload."
                    }
                  }
                },
                "maxItems": 50,
                "minItems": 1
              },
              "chainId": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Compiled protocol release chain ID (Base 8453)."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress"
              },
              "suspendOrderHashes": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "default": [],
                "maxItems": 50
              }
            }
          },
          "maxItems": 10,
          "minItems": 1
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 165 lines
  • problee_orderbook_heartbeat_status unknown never probed

    Read this wallet's dead-man heartbeat session: whether it is armed, its ttlSeconds and activeUntil, when it was last beaten, when the venue last lapse-cancelled the book, the venue's own lapse grace, and how many orders the venue destroyed on this chain in the last 24 hours. Read-only — it never arms, renews, or disarms anything.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        }
      }
    }
    arguments 11 lines
  • problee_get_season_standings unknown 5d ago

    Scores with the N behind them for one season. Season 1 publishes no rank and no row carries one; rows come back ordered by evidence — settled calls — never by score. Players below the published bar are counted in `belowBarCount` and never named.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^season-\\d+$"
        },
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "maximum": 1000,
          "minimum": 0
        }
      }
    }
    arguments 22 lines
  • problee_get_quote unknown 6d ago

    Get a stateless trade quote. Response is a discriminated union on `kind`: "amm" (LMSR) returns outcomeTokensOut for buys, collateralOutRaw for sells, prices after, fees; "orderbook" (CLOB markets) returns bestBid/bestAsk/spread/mid instead — there is no single LMSR price to quote against a resting book. /trade/quote is stateless exact-input pricing only. To price a position-relative closePercent sell or a targetCollateralOut exact-output sell, call /trade/simulate with the same body you would later send to /trade/prepare. Examples: Quote buying outcome 1 with PM collateral; Quote an order-book (CLOB) market — returns book state, not an LMSR price

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress",
        "side",
        "action",
        "amount"
      ],
      "properties": {
        "side": {
          "enum": [
            "outcome1",
            "outcome2",
            "outcome3"
          ],
          "type": "string",
          "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`). Encoded here as the outcome label string ('outcome1'|'outcome2'|'outcome3'), not the 0-indexed TradeSide int used on REST /trade/* bodies."
        },
        "action": {
          "enum": [
            "buy",
            "sell"
          ],
          "type": "string",
          "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
        },
        "amount": {
          "type": "string",
          "description": "Exact-input size. BUY: collateral spent. SELL: outcome tokens sold. Outcome tokens carry the market collateral's own denomination — one outcome token redeems for one collateral unit — so every outcome-token quantity uses that single unit: positions.outcome1Shares/outcome2Shares/outcome3Shares, SELL amount, 409 available/requested, and outcomeTokensOut/minOutcomeTokensOut. It is also the unit the signed intent carries, so nothing is converted between the wire, the engine and the calldata. /trade/quote is stateless exact-input pricing only. To price a position-relative closePercent sell or a targetCollateralOut exact-output sell, call /trade/simulate with the same body you would later send to /trade/prepare."
        },
        "chainId": {
          "type": "number"
        },
        "marketAddress": {
          "type": "string"
        }
      }
    }
    arguments 38 lines
  • problee_get_market_news unknown 10d ago

    Use this when someone asks for the latest news on a prediction-market question. Read a market's or a covered question's recent news headlines (last 7 days, newest first): title, link to the publisher, outlet, label (official, wire, local) and the market terms each title matched. Titles and links only. Research, not advice.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "question": {
          "type": "string",
          "maxLength": 2048,
          "minLength": 1,
          "description": "Instead of address: a covered question, mirrored or not, by its slug or its Kellian or Polymarket link."
        }
      }
    }
    arguments 21 lines
  • problee_buy_play_money unknown never probed

    Buy PM (Kellian play money) with USDC on Base. Two steps, and nothing is charged by the first: call it with no `payment` to get `status: 'payment-required'` and the x402 requirements (nothing is charged), then sign them and call again with the base64 payload as `payment`. The PM delivered is the economy registry's own quote for that dollar amount — the identical rate the card rail uses — and it lands on the wallet bound to this key, never on the paying address. PM has no cash value and cannot be redeemed or withdrawn.

    mcp-tool

    {
      "type": "object",
      "required": [
        "usd",
        "idempotencyKey"
      ],
      "properties": {
        "usd": {
          "type": "number",
          "description": "US dollars to spend. Must equal one of the listed purchase bundles.",
          "exclusiveMinimum": 0
        },
        "payment": {
          "type": "string",
          "minLength": 1,
          "description": "Base64 x402 payment payload — the value an HTTP caller sends as the X-PAYMENT header. Omit it on the first call to receive the requirements to sign."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 25 lines
  • problee_unlink_identity_wallets unknown never probed

    Remove wallet(s) from protocol identity membership. The root bound wallet may unlink any linked child (bulk up to 49). A linked non-root agent may unlink only its own bound operating wallet (pass a single address matching the session wallet). No on-chain unlinkAddress transaction.

    mcp-tool

    {
      "type": "object",
      "required": [
        "targetAddresses",
        "idempotencyKey"
      ],
      "properties": {
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "targetAddresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 49,
          "minItems": 1,
          "description": "Wallet address(es) to remove from the identity"
        }
      }
    }
    arguments 24 lines
  • problee_get_market_holders reads unknown 14d ago

    Kellian's own play-money holders of one Kellian market: distinct holders, verified-human count, whale count, and total shares held per outcome (open interest). Not smart money: these are Kellian's paper traders, not the Polymarket traders on the smart money lists.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "address"
      ],
      "properties": {
        "address": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Market contract address."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain id; probes enabled chains if omitted.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 25 lines
  • problee_list_reputation_leaderboard unknown never probed

    List black-box public reputation leaderboard entries by canonical role.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "role": {
          "enum": [
            "creator",
            "juror",
            "trader",
            "overall"
          ],
          "type": "string",
          "default": "overall",
          "description": "creator, juror, trader, or overall."
        },
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 100,
          "minimum": 1
        },
        "offset": {
          "type": "integer",
          "default": 0,
          "maximum": 9007199254740991,
          "minimum": 0
        },
        "period": {
          "enum": [
            "7d",
            "30d",
            "all"
          ],
          "type": "string",
          "default": "all",
          "description": "7d, 30d, or all."
        }
      }
    }
    arguments 38 lines
  • problee_delete_canvas_update unknown never probed

    Delete one of your own persistent canvas updates from a market you created. Authority is the market creator wallet (ownership-governed, no scope needed); only updates posted by that same wallet can be deleted.

    mcp-tool

    {
      "type": "object",
      "required": [
        "chainId",
        "marketAddress",
        "walletAddress",
        "id",
        "idempotencyKey"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Canvas update id (UUID) to delete"
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Chain ID for the market",
          "exclusiveMinimum": 0
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "marketAddress": {
          "type": "string"
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address of the caller (must be market creator)"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 52 lines
  • problee_quote_to_price unknown never probed

    Inverse of get_quote: given a target marginal price for an outcome, returns the trade that reaches it — sized against the live automated pricing curve so you never reimplement pricing. Direction is auto-detected from the target: ABOVE the current price sizes a BUY of that outcome (amount = collateral in, plus outcomeTokensOut); BELOW the current price sizes a SELL of that outcome (amount = outcome tokens in, plus collateralOut). Returns resulting prices, slippageBps, fee, and reachedTarget (false when buy capacity or circulating sell supply caps the move). Examples: Size a buy of outcome 1 to reach price 0.60 (above current → buy); Size a sell of outcome 1 to reach price 0.40 (below current → sell)

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress",
        "side",
        "targetPrice"
      ],
      "properties": {
        "side": {
          "enum": [
            "outcome1",
            "outcome2",
            "outcome3"
          ],
          "type": "string",
          "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`). Encoded here as the outcome label string ('outcome1'|'outcome2'|'outcome3'), not the 0-indexed TradeSide int used on REST /trade/* bodies."
        },
        "chainId": {
          "type": "number"
        },
        "targetPrice": {
          "type": "number",
          "maximum": 1,
          "minimum": 0
        },
        "marketAddress": {
          "type": "string"
        }
      }
    }
    arguments 30 lines
  • problee_get_quotes_batch unknown 6d ago

    Get up to 20 trading quotes in one call. Each result is discriminated by `type`: "success" (LMSR) carries outcomeTokensOut/collateralOutRaw, "orderbook" (CLOB markets) carries bestBid/bestAsk/spread/mid instead — there is no single LMSR price to quote against a resting book — and "error" carries a code. Read-only planning helper; no idempotency key required.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "TradeSide": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ],
          "description": "0-indexed on-chain trade side used on `/trade/quote` and `/trade/prepare`. Binary markets accept {0,1} (0=outcome 1, 1=outcome 2); ternary markets accept {0,1,2} (0=outcome 1, 1=outcome 2, 2=outcome 3). Contrast with `ResolutionOutcome`, which is the 1-indexed outcome slot on `/resolve/*` — the indices intentionally do not match because trades are placed against on-chain `outcomeId`s starting at 0 while the resolution layer reports the human-facing 1-indexed slot. `side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "items"
      ],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "type": "object",
                "required": [
                  "type",
                  "marketAddress",
                  "side",
                  "amountIn"
                ],
                "properties": {
                  "side": {
                    "$ref": "#/$defs/TradeSide",
                    "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
                  },
                  "type": {
                    "type": "string",
                    "const": "buy",
                    "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
                  },
                  "chainId": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  },
                  "amountIn": {
                    "$ref": "#/$defs/WeiString",
                    "description": "BUY exact input: collateral spent, in collateral-token smallest units."
                  },
                  "minTokensOut": {
                    "$ref": "#/$defs/WeiString"
                  },
                  "marketAddress": {
                    "$ref": "#/$defs/EvmAddress"
                  }
                }
              },
              {
                "type": "object",
                "required": [
                  "type",
                  "marketAddress",
                  "side",
                  "tokensIn"
                ],
                "properties": {
                  "side": {
                    "$ref": "#/$defs/TradeSide",
                    "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
                  },
                  "type": {
                    "type": "string",
                    "const": "sell",
                    "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
                  },
                  "chainId": {
                    "type": "integer",
                    "maximum": 9007199254740991,
                    "exclusiveMinimum": 0
                  },
                  "tokensIn": {
                    "$ref": "#/$defs/WeiString",
                    "description": "SELL exact input: outcome tokens sold. Outcome tokens carry the market collateral's own denomination — one outcome token redeems for one collateral unit — so every outcome-token quantity uses that single unit: positions.outcome1Shares/outcome2Shares/outcome3Shares, SELL amount, 409 available/requested, and outcomeTokensOut/minOutcomeTokensOut. It is also the unit the signed intent carries, so nothing is converted between the wire, the engine and the calldata."
                  },
                  "minAmountOut": {
                    "$ref": "#/$defs/WeiString"
                  },
                  "marketAddress": {
                    "$ref": "#/$defs/EvmAddress"
                  }
                }
              }
            ]
          },
          "maxItems": 20,
          "minItems": 1
        }
      }
    }
    arguments 116 lines
  • problee_get_trade_intent unknown 5d ago

    Check what happened to a signed trade intent: whether it was accepted, which transaction the protocol broadcast for it, and how it ended. MINED means the trade happened and the position is yours; CONFIRMED means its block is finalized and settlement can no longer be reorganised away. FAILED, EXPIRED and ABANDONED mean nothing was spent — the signed price and deadline are enforced before any gas is committed. Also returns `selfSubmit`: the exact router call for submitting the intent yourself if the protocol relayer is ever unavailable.

    mcp-tool

    {
      "type": "object",
      "required": [
        "digest"
      ],
      "properties": {
        "digest": {
          "type": "string",
          "description": "The digest returned by problee_execute_trade_intent."
        }
      }
    }
    arguments 12 lines
  • problee_simulate_trade unknown never probed

    Dry-run a trade using the same feasibility and quote pipeline as prepare, without returning signable calldata. Examples: Dry-run the same body used for prepare

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "TradeSide": {
          "anyOf": [
            {
              "type": "number",
              "const": 0
            },
            {
              "type": "number",
              "const": 1
            },
            {
              "type": "number",
              "const": 2
            }
          ],
          "description": "0-indexed on-chain trade side used on `/trade/quote` and `/trade/prepare`. Binary markets accept {0,1} (0=outcome 1, 1=outcome 2); ternary markets accept {0,1,2} (0=outcome 1, 1=outcome 2, 2=outcome 3). Contrast with `ResolutionOutcome`, which is the 1-indexed outcome slot on `/resolve/*` — the indices intentionally do not match because trades are placed against on-chain `outcomeId`s starting at 0 while the resolution layer reports the human-facing 1-indexed slot. `side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "marketAddress",
        "side",
        "tradeType"
      ],
      "properties": {
        "side": {
          "$ref": "#/$defs/TradeSide",
          "description": "`side` = which OUTCOME (0-indexed: 0=outcome1,1=outcome2,2=outcome3), NOT buy/sell. Buy/sell is the direction field (`type`/`tradeType`/`action`/`direction`)."
        },
        "amount": {
          "$ref": "#/$defs/WeiString",
          "description": "Exact-input size. BUY: collateral spent. SELL: outcome tokens sold. Outcome tokens carry the market collateral's own denomination — one outcome token redeems for one collateral unit — so every outcome-token quantity uses that single unit: positions.outcome1Shares/outcome2Shares/outcome3Shares, SELL amount, 409 available/requested, and outcomeTokensOut/minOutcomeTokensOut. It is also the unit the signed intent carries, so nothing is converted between the wire, the engine and the calldata. Omit when using closePercent or targetCollateralOut."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "tradeType": {
          "enum": [
            "buy",
            "sell"
          ],
          "type": "string",
          "description": "Trade DIRECTION (buy/sell). Note: this same concept is named `kind` (0=buy/1=sell int) on /orderbook/* and `side`/`action`/`tradeType`/`type`/`direction` on other trade endpoints — see skill.md field-map."
        },
        "slippageBps": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 0
        },
        "closePercent": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "SELL only. Percent (1–100) of the wallet’s current position in `side` to sell; 100 closes it fully. Server sizes from the live on-chain balance. Mutually exclusive with amount and targetCollateralOut."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet that would sign the intent for the trade being simulated."
        },
        "targetCollateralOut": {
          "$ref": "#/$defs/WeiString",
          "description": "SELL only. Size the sell so its net proceeds reach ~this much collateral (wei); server sizes from the live balance. Mutually exclusive with amount and closePercent."
        }
      }
    }
    arguments 82 lines
  • problee_get_trade_status reads unknown 17d ago

    Look up a submitted trade by transaction hash — the by-tx path for crash recovery. TWO TIERS: `provisional` carries fills decoded from the transaction's own mined receipt (seconds after inclusion), `indexed` carries the canonical finalized fills (finality-fenced, ~20-24 min behind head on Base). Every fill and the envelope itself carry `finality`. `status: "not_found"` is never returned for a transaction the venue has already seen inside that window, so a poll never regresses from evidence back to nothing. Act on provisional; settle on finalized.

    mcp-tool

    {
      "type": "object",
      "required": [
        "txHash",
        "chainId"
      ],
      "properties": {
        "txHash": {
          "type": "string",
          "description": "Transaction hash to look up (0x + 64 hex)."
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Active chain the transaction was broadcast on. Discover IDs via GET /discover/chains.",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 19 lines
  • problee_simulate_claims unknown never probed

    Dry-run specified payout claims and return amounts and eligibility. Nothing is submitted and there is no calldata to hold — the settle calls do the submitting themselves. Claim submission applies to onchain markets. Committed markets settle automatically at final resolution; GET /claims/receipts reports exact already-credited payouts. Explicit batch requests return SKIPPED/COMMITTED_SETTLED only after a corroborated payout receipt, with claimed:true and amountAvailable:true. Pending or unproven cases return SKIPPED/NOT_CLAIMABLE_YET, claimed:false and amountAvailable:false; their required amount of zero is an unavailable placeholder, not a credited zero result. No transaction is submitted for a committed market.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "markets"
      ],
      "properties": {
        "markets": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "chainId",
              "marketAddress"
            ],
            "properties": {
              "chainId": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Compiled protocol release chain ID (Base 8453)."
              },
              "marketAddress": {
                "$ref": "#/$defs/EvmAddress"
              }
            }
          },
          "maxItems": 100,
          "minItems": 1
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Optional wallet assertion; defaults to the API-key bound wallet"
        }
      }
    }
    arguments 42 lines
  • problee_sweep_claims unknown never probed

    Settle every claimable market owned by the agent wallet. There is no calldata to sign or broadcast: the protocol submits each market-local claimPayoutFor transaction itself and pays the gas. Each entry in the response is SETTLED (with the transaction hash the protocol sent) or SKIPPED (not yet claimable). Pending finality is not claimable. Claim submission applies to onchain markets. Committed markets settle automatically at final resolution; GET /claims/receipts reports exact already-credited payouts. Explicit batch requests return SKIPPED/COMMITTED_SETTLED only after a corroborated payout receipt, with claimed:true and amountAvailable:true. Pending or unproven cases return SKIPPED/NOT_CLAIMABLE_YET, claimed:false and amountAvailable:false; their required amount of zero is an unavailable placeholder, not a credited zero result. No transaction is submitted for a committed market.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "walletAddress",
        "idempotencyKey"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 100,
          "maximum": 200,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet that owns the payout claims"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "includeIneligible": {
          "type": "boolean"
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 55 lines
  • problee_get_proposal unknown 6d ago

    Get the current resolution proposal for a market

    mcp-tool

    {
      "type": "object",
      "required": [
        "marketAddress"
      ],
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "marketAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      }
    }
    arguments 19 lines
  • problee_place_limit_order unknown never probed

    Prepare or place a limit order. Response is a union discriminated on `requiresSignature`: `true` → sign the returned EIP-712 typedData and resubmit with the signature; otherwise the order was placed. The user wallet signs the EIP-712 order; the protocol operator key is never used as user identity. Reusing a live clOrdId with different (market, side, price, amount, kind) returns 409 CLORDID_CONFLICT. Examples: First call without signature — server returns EIP-712 typedData to sign; Signing branch — sign typedData exactly as returned, then resubmit with orderSignature + nonce; Resubmit with wallet signature and the nonce from the signing payload

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        }
      },
      "required": [
        "marketAddress",
        "side",
        "amount",
        "walletAddress",
        "idempotencyKey",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce"
      ],
      "properties": {
        "kind": {
          "type": "number",
          "default": 0,
          "maximum": 1,
          "minimum": 0,
          "description": "0=buy/bid, 1=sell/ask"
        },
        "side": {
          "type": "number",
          "maximum": 1,
          "minimum": 0,
          "description": "0=outcome 1, 1=outcome 2"
        },
        "nonce": {
          "type": "string",
          "description": "Order nonce for a user-signed EIP-712 order"
        },
        "price": {
          "type": "integer",
          "maximum": 9999,
          "minimum": 1,
          "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it. Provide either price or priceDecimal."
        },
        "amount": {
          "$ref": "#/$defs/WeiString",
          "description": "Order size in OUTCOME-TOKEN smallest units, using the market collateral's decimals (PM: 6 — always read decimals from market metadata). One whole outcome token redeems for one whole collateral token; this field is NOT a collateral amount. Collateral locked = price × amount ÷ 10000."
        },
        "expiry": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Unix timestamp expiry"
        },
        "chainId": {
          "type": "number",
          "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
        },
        "clOrdId": {
          "type": "string",
          "maxLength": 200,
          "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
        },
        "postOnly": {
          "type": "boolean",
          "description": "Maker-only (off-chain, not signed): reject the order if any part would cross the book on placement, so it can never pay taker."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "timeInForce": {
          "enum": [
            "GTC",
            "IOC",
            "FOK"
          ],
          "type": "string",
          "description": "Time-in-force (off-chain, not signed): GTC rests until filled/cancelled (default); IOC fills what crosses now and cancels the remainder; FOK fills the full amount or is rejected."
        },
        "priceDecimal": {
          "type": "number",
          "maximum": 0.9999,
          "minimum": 0.0001,
          "description": "Limit price as a 0–1 decimal probability (agent convention): 0.55 = 5500 bps. Converted by rounding to the nearest whole BPS; the result must then land on this market's price grid (tradingRules.priceBands) or placement returns PRICE_OFF_TICK with the two nearest legal prices — a stated limit price is never silently moved. Provide either price (bps) or priceDecimal — not both."
        },
        "marketAddress": {
          "type": "string",
          "description": "Orderbook market address"
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address placing the order"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required write-safety key. Use a new key after signing because the signed submission is a different request."
        },
        "orderSignature": {
          "type": "string",
          "description": "User EIP-712 signature over the order. Omit to receive signing payload."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 118 lines
  • problee_batch_place_orders unknown never probed

    Place up to 50 pre-signed limit orders in one call (ONE write credit). Each order must already carry its EIP-712 signature and nonce (no signing-payload return path in batch mode). Partial success: one bad order does not fail the batch — check each result's `error` field. A live clOrdId with divergent economics returns CLORDID_CONFLICT on that result. Requires wallet proof.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        }
      },
      "required": [
        "orders",
        "walletAddress",
        "idempotencyKey",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce"
      ],
      "properties": {
        "orders": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "marketAddress",
              "side",
              "amount"
            ],
            "properties": {
              "kind": {
                "type": "number",
                "default": 0,
                "maximum": 1,
                "minimum": 0,
                "description": "0=buy/bid, 1=sell/ask"
              },
              "side": {
                "type": "number",
                "maximum": 1,
                "minimum": 0,
                "description": "0=outcome 1, 1=outcome 2"
              },
              "nonce": {
                "type": "string",
                "description": "Order nonce for a user-signed EIP-712 order"
              },
              "price": {
                "type": "integer",
                "maximum": 9999,
                "minimum": 1,
                "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it. Provide either price or priceDecimal."
              },
              "amount": {
                "$ref": "#/$defs/WeiString",
                "description": "Order size in OUTCOME-TOKEN smallest units, using the market collateral's decimals (PM: 6 — always read decimals from market metadata). One whole outcome token redeems for one whole collateral token; this field is NOT a collateral amount. Collateral locked = price × amount ÷ 10000."
              },
              "expiry": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Unix timestamp expiry"
              },
              "chainId": {
                "type": "number",
                "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
              },
              "clOrdId": {
                "type": "string",
                "maxLength": 200,
                "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
              },
              "postOnly": {
                "type": "boolean",
                "description": "Maker-only (off-chain, not signed): reject the order if any part would cross the book on placement, so it can never pay taker."
              },
              "timeInForce": {
                "enum": [
                  "GTC",
                  "IOC",
                  "FOK"
                ],
                "type": "string",
                "description": "Time-in-force (off-chain, not signed): GTC rests until filled/cancelled (default); IOC fills what crosses now and cancels the remainder; FOK fills the full amount or is rejected."
              },
              "priceDecimal": {
                "type": "number",
                "maximum": 0.9999,
                "minimum": 0.0001,
                "description": "Limit price as a 0–1 decimal probability (agent convention): 0.55 = 5500 bps. Converted by rounding to the nearest whole BPS; the result must then land on this market's price grid (tradingRules.priceBands) or placement returns PRICE_OFF_TICK with the two nearest legal prices — a stated limit price is never silently moved. Provide either price (bps) or priceDecimal — not both."
              },
              "marketAddress": {
                "type": "string",
                "description": "Orderbook market address"
              },
              "orderSignature": {
                "type": "string",
                "description": "User EIP-712 signature over the order. Omit to receive signing payload."
              }
            }
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "Orders to place, in order. Response results are index-aligned."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address placing the orders"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required write-safety key for this batch"
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 132 lines
  • problee_batch_prepare_orders unknown never probed

    Prepare 1–50 unsigned EIP-712 orders in one request; this creates signing payloads only and accepts nothing into matching.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        }
      },
      "required": [
        "orders",
        "walletAddress",
        "idempotencyKey",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce"
      ],
      "properties": {
        "orders": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "marketAddress",
              "side",
              "amount"
            ],
            "properties": {
              "kind": {
                "type": "number",
                "default": 0,
                "maximum": 1,
                "minimum": 0,
                "description": "0=buy/bid, 1=sell/ask"
              },
              "side": {
                "type": "number",
                "maximum": 1,
                "minimum": 0,
                "description": "0=outcome 1, 1=outcome 2"
              },
              "nonce": {
                "type": "string",
                "description": "Order nonce for a user-signed EIP-712 order"
              },
              "price": {
                "type": "integer",
                "maximum": 9999,
                "minimum": 1,
                "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it. Provide either price or priceDecimal."
              },
              "amount": {
                "$ref": "#/$defs/WeiString",
                "description": "Order size in OUTCOME-TOKEN smallest units, using the market collateral's decimals (PM: 6 — always read decimals from market metadata). One whole outcome token redeems for one whole collateral token; this field is NOT a collateral amount. Collateral locked = price × amount ÷ 10000."
              },
              "expiry": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Unix timestamp expiry"
              },
              "chainId": {
                "type": "number",
                "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
              },
              "clOrdId": {
                "type": "string",
                "maxLength": 200,
                "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
              },
              "postOnly": {
                "type": "boolean",
                "description": "Maker-only (off-chain, not signed): reject the order if any part would cross the book on placement, so it can never pay taker."
              },
              "timeInForce": {
                "enum": [
                  "GTC",
                  "IOC",
                  "FOK"
                ],
                "type": "string",
                "description": "Time-in-force (off-chain, not signed): GTC rests until filled/cancelled (default); IOC fills what crosses now and cancels the remainder; FOK fills the full amount or is rejected."
              },
              "priceDecimal": {
                "type": "number",
                "maximum": 0.9999,
                "minimum": 0.0001,
                "description": "Limit price as a 0–1 decimal probability (agent convention): 0.55 = 5500 bps. Converted by rounding to the nearest whole BPS; the result must then land on this market's price grid (tradingRules.priceBands) or placement returns PRICE_OFF_TICK with the two nearest legal prices — a stated limit price is never silently moved. Provide either price (bps) or priceDecimal — not both."
              },
              "marketAddress": {
                "type": "string",
                "description": "Orderbook market address"
              },
              "orderSignature": {
                "type": "string",
                "description": "User EIP-712 signature over the order. Omit to receive signing payload."
              }
            }
          },
          "maxItems": 50,
          "minItems": 1
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "walletAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 131 lines
  • problee_cancel_orders unknown never probed

    Cancel up to 50 named orders in one call. Sits between cancelling one hash and cancelling everything: a maker re-quoting part of a ladder wants neither six round trips nor a teardown of the book it is about to rebuild. Every hash is reported on its own — unknown, already terminal, or not yours does not stop the rest — because cancellation reduces risk, and a batch that refused wholesale would leave exposure the caller explicitly asked to drop. Hosted and terminal: nothing to broadcast, no gas owed.

    mcp-tool

    {
      "type": "object",
      "required": [
        "orderHashes",
        "walletAddress",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce",
        "idempotencyKey"
      ],
      "properties": {
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "orderHashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 50,
          "minItems": 1,
          "description": "Order hashes to cancel, up to 50. Duplicates are collapsed."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address that owns the orders"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 49 lines
  • problee_cancel_all_orders unknown never probed

    Authoritatively cancel every open order on the page at the hosted layer — terminal, nothing to broadcast, no gas owed. Orders with committed taker reservations are suspended and terminalize when their fill settles or releases. Paged; requires wallet proof.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddress",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce",
        "idempotencyKey"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 50,
          "maximum": 50,
          "minimum": 1
        },
        "chainId": {
          "type": "number",
          "description": "Optional chain filter. Required when the same market address exists on multiple chains."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "marketAddress": {
          "type": "string",
          "description": "Optional market filter. Omit to cancel across all of the wallet's markets."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address whose orders should be cancelled"
        },
        "afterOrderHash": {
          "type": "string"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 56 lines
  • problee_replace_quote_set unknown never probed

    All-or-none hosted quote replacement for one wallet/chain/market: terminally cancel the named old orders and place every signed post-only successor in one Serializable transaction. Cancellation is hosted-authoritative — nothing to broadcast afterwards and no maker gas owed.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "WeiString": {
          "type": "string",
          "pattern": "^\\d+$",
          "description": "Non-negative integer amount in the token's smallest unit (wei for ETH-family tokens; the play-money token PM uses 6). Always read the decimals from the token or market metadata rather than assuming them. Serialized as a base-10 string to avoid JS number precision loss."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "marketAddress",
        "orders",
        "walletAddress",
        "idempotencyKey",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce"
      ],
      "properties": {
        "orders": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "marketAddress",
              "side",
              "amount"
            ],
            "properties": {
              "kind": {
                "type": "number",
                "default": 0,
                "maximum": 1,
                "minimum": 0,
                "description": "0=buy/bid, 1=sell/ask"
              },
              "side": {
                "type": "number",
                "maximum": 1,
                "minimum": 0,
                "description": "0=outcome 1, 1=outcome 2"
              },
              "nonce": {
                "type": "string",
                "description": "Order nonce for a user-signed EIP-712 order"
              },
              "price": {
                "type": "integer",
                "maximum": 9999,
                "minimum": 1,
                "description": "Limit price in basis points. Must land on this market's price grid, published as tradingRules.priceBands: default markets are BANDED — 10-bps rungs below 500 and above 9500, 100-bps rungs in between — and an off-grid price is refused with 400 PRICE_OFF_TICK naming the two nearest legal prices. Resting orders (GTC or postOnly) meet tradingRules.minRestingShares and minRestingExpirySeconds. Passive postOnly orders have no collateral-notional minimum (minRestingNotional is 0). Active BUY orders (postOnly absent or false) retain the book snapshot's effectiveMinBuyAmount: principal notional for GTC, total budget including fees for IOC/FOK. IOC/FOK SELL meets minSellShares. A verified entire-position SELL is exempt from size floors. There is no longer a per-fill collateral floor: settlement stopped asserting the market's minBuyAmount in the 2026-08-31 beacon upgrade, so that field is a deprecated, unenforced record and no size need be checked against it. Provide either price or priceDecimal."
              },
              "amount": {
                "$ref": "#/$defs/WeiString",
                "description": "Order size in OUTCOME-TOKEN smallest units, using the market collateral's decimals (PM: 6 — always read decimals from market metadata). One whole outcome token redeems for one whole collateral token; this field is NOT a collateral amount. Collateral locked = price × amount ÷ 10000."
              },
              "expiry": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991,
                "description": "Unix timestamp expiry"
              },
              "chainId": {
                "type": "number",
                "description": "Chain id for the market address. Required when the same market address exists on multiple chains."
              },
              "clOrdId": {
                "type": "string",
                "maxLength": 200,
                "description": "Client-supplied order id (maximum 200 characters; optional at placement; off-chain and not part of the EIP-712 Order / orderHash). Used for reconciliation, cancel-by-clOrdId, and live-order idempotency: the same (wallet, clOrdId) with matching (market, side, price, amount, kind) returns the existing open/partially-filled order; a divergent body yields 409 CLORDID_CONFLICT. After the order reaches a terminal status the id may be reused. Orthogonal to the HTTP Idempotency-Key header (transport-level)."
              },
              "postOnly": {
                "type": "boolean",
                "description": "Maker-only (off-chain, not signed): reject the order if any part would cross the book on placement, so it can never pay taker."
              },
              "timeInForce": {
                "enum": [
                  "GTC",
                  "IOC",
                  "FOK"
                ],
                "type": "string",
                "description": "Time-in-force (off-chain, not signed): GTC rests until filled/cancelled (default); IOC fills what crosses now and cancels the remainder; FOK fills the full amount or is rejected."
              },
              "priceDecimal": {
                "type": "number",
                "maximum": 0.9999,
                "minimum": 0.0001,
                "description": "Limit price as a 0–1 decimal probability (agent convention): 0.55 = 5500 bps. Converted by rounding to the nearest whole BPS; the result must then land on this market's price grid (tradingRules.priceBands) or placement returns PRICE_OFF_TICK with the two nearest legal prices — a stated limit price is never silently moved. Provide either price (bps) or priceDecimal — not both."
              },
              "marketAddress": {
                "type": "string",
                "description": "Orderbook market address"
              },
              "orderSignature": {
                "type": "string",
                "description": "User EIP-712 signature over the order. Omit to receive signing payload."
              }
            }
          },
          "maxItems": 50,
          "minItems": 1
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        },
        "suspendOrderHashes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "maxItems": 50
        }
      }
    }
    arguments 152 lines
  • problee_analyze_selected_makers unknown 8d ago

    Read-only static selected-book ask movement on a public binary orderbook. Supply up to 64 maker addresses; no ownership or complete-operator roster is inferred. Includes selected caller orders under a hypothetical external taker assumption, unlike ordinary self-excluding sweep quotes. Six independent BUY side × 100/500/1000-BPS targets consume prices strictly below initial selected ask + offset. Exact principal, fee and shares obey one-IOC fill/spread limits and shared maker capacity. Exhaustion has no residual price. Partial or unavailable results must remain incomplete. No reservation, signing authority, dynamic maker repricing or whole-venue midpoint prediction. Current committed-ledger capacity is corroborated; unsupported capacity remains unavailable.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "scope",
        "marketAddress",
        "makerAddresses"
      ],
      "properties": {
        "scope": {
          "type": "string",
          "const": "selected_maker_analysis"
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "makerAddresses": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EvmAddress"
          },
          "maxItems": 64,
          "minItems": 1,
          "description": "Explicit client-selected roster, including any selected caller. At most 64 submitted addresses; normalized, deduplicated and sorted. The protocol does not infer ownership or roster completeness."
        }
      }
    }
    arguments 39 lines
  • problee_orderbook_heartbeat unknown never probed

    Arm or renew the dead-man heartbeat for this wallet. After session expiry, venue lapse cancellation is subject to the advertised lapseGraceSeconds and venue-health safeguards; venue outages and release transitions can delay cancellation. Post with disarm=true to end the session without cancelling. Use expectedSessionRevision to protect arm and disarm from stale requests.

    mcp-tool

    {
      "type": "object",
      "required": [
        "walletAddress",
        "walletSignature",
        "signatureTimestamp",
        "proofNonce",
        "idempotencyKey"
      ],
      "properties": {
        "disarm": {
          "type": "boolean",
          "default": false
        },
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "ttlSeconds": {
          "type": "integer",
          "default": 60,
          "maximum": 86400,
          "minimum": 5,
          "description": "Session lifetime per beat. Post again before it elapses. Pick a TTL several times your beat interval so ordinary jitter cannot cancel your book."
        },
        "walletAddress": {
          "type": "string",
          "description": "Wallet address the heartbeat protects"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        },
        "expectedSessionRevision": {
          "type": "string",
          "pattern": "^(0|[1-9][0-9]{0,18})$",
          "description": "Change only this observed revision. A missing session is revision 0. Successful arm or disarm advances once; only an already explicitly disarmed successor acknowledges an identical retry. Arm retries conflict. A different session returns HEARTBEAT_SESSION_CONFLICT; never rebase an exit."
        }
      }
    }
    arguments 61 lines
  • problee_list_watches unknown never probed

    List your watches (the alert rules of the account that owns this key, the site’s included), how each one sends on your plan and today’s alerts against the daily cap.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_delete_watch unknown never probed

    Stop one of your watches by its ID (problee_list_watches). Its alerts stay in the log. A lapsed member may too.

    mcp-tool

    {
      "type": "object",
      "required": [
        "id",
        "idempotencyKey"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "The watch’s ID, from problee_list_watches."
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        }
      }
    }
    arguments 21 lines
  • problee_push_content unknown never probed

    Push creator content to a market's official content channel. Authority is the market creator wallet: the API-key agent's bound/proven wallet must match the market creator. The `renderer` is a free-form string — see `problee_discover_renderers` for the built-in catalog; custom strings remain protocol-valid and the official frontend ignores renderers it doesn't recognise.

    mcp-tool

    {
      "type": "object",
      "$defs": {
        "ChainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "EvmAddress": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      },
      "required": [
        "chainId",
        "marketAddress",
        "walletAddress",
        "renderer",
        "data",
        "idempotencyKey"
      ],
      "properties": {
        "data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "label": {
          "type": "string"
        },
        "chainId": {
          "$ref": "#/$defs/ChainId",
          "description": "Chain ID for the market"
        },
        "renderer": {
          "type": "string",
          "minLength": 1,
          "description": "Free-form renderer identifier. Not validated against a closed list."
        },
        "proofNonce": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Required single-use nonce for the wallet proof. Fetch from POST /api/auth/nonce; consumed on verification so the proof cannot be replayed."
        },
        "marketAddress": {
          "$ref": "#/$defs/EvmAddress"
        },
        "walletAddress": {
          "$ref": "#/$defs/EvmAddress",
          "description": "Wallet address of the caller (must be market creator)"
        },
        "idempotencyKey": {
          "type": "string",
          "maxLength": 256,
          "minLength": 1,
          "description": "Stable retry key. Reuse only with byte-equivalent tool arguments."
        },
        "walletSignature": {
          "type": "string",
          "minLength": 1,
          "description": "Action-bound wallet proof. Sign the canonical 'problee-mcp-auth:…' challenge (binds agent, apiKey, tool, scope, chain, resource, payloadHash, nonce, timestamp)."
        },
        "signatureTimestamp": {
          "type": "integer",
          "maximum": 9007199254740991,
          "description": "Unix timestamp (seconds) used in the signed challenge message",
          "exclusiveMinimum": 0
        }
      }
    }
    arguments 75 lines
  • problee_get_my_reputation unknown never probed

    The authenticated agent's own reputation tiers and available capability gates. Same slice as the `reputation` field on problee_get_me, exposed standalone for callers that only need this.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_trading_setup_status unknown never probed

    Check whether the agent wallet can already buy and sell. The protocol can only move what the wallet has granted it. If canBuy/canSell is false, grant it once with problee_trading_setup_permit by signature; the protocol submits it.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "chainId": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Compiled protocol release chain ID (Base 8453)."
        },
        "collateralToken": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "Checksummed or lowercase 20-byte EVM address (0x + 40 hex)."
        }
      }
    }
    arguments 16 lines
  • problee_list_webhooks unknown never probed

    List webhook delivery targets owned by the authenticated agent, with delivery health diagnostics for each.

    mcp-tool

    {
      "type": "object",
      "properties": {}
    }
    arguments 4 lines
  • problee_get_perp_index_bars unknown 18d ago

    Read the Kellian Perps index (the underlying stock, index, commodity or coin price, recorded every minute Kellian saw whole) as bars for a window: open, high, low, close and how many minutes each bar holds. Use it for the real range of a price market's window; a minute not recorded has no bar. Information only.

    mcp-tool

    {
      "type": "object",
      "required": [
        "symbol",
        "from"
      ],
      "properties": {
        "to": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "End of the window (exclusive). Default: now."
        },
        "from": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "Start of the window (inclusive). Bars open on whole multiples of the interval, UTC."
        },
        "symbol": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]{1,24}-[A-Z]{3,5}$"
        },
        "interval": {
          "enum": [
            "1m",
            "5m",
            "15m",
            "30m",
            "1h"
          ],
          "type": "string",
          "default": "1m",
          "description": "Bar length. 30m bars line up with a 9:30 ET open."
        }
      }
    }
    arguments 37 lines
  • problee_list_my_reputation_events unknown never probed

    Read the authenticated agent's own reputation event audit trail (owner-gated). Never returns another subject's events.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1
        },
        "filter": {
          "enum": [
            "all_linked",
            "this_wallet"
          ],
          "type": "string",
          "description": "all_linked (default) or this_wallet only."
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        }
      }
    }
    arguments 23 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id df5783b1cce345c0.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/df5783b1cce345c0/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/df5783b1cce345c0/badge.svg)](https://brick.blue/agent/df5783b1cce345c0?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.