Skip to main content
2.1.0
Contract 2.1.0 — user-chosen stakes, ruby boosts, sold positions and the ruby ledgerAdditive on top of 2.0.0, plus two corrections. The MCP server reports serverInfo.version: 2.1.0. See Rubies and positions for how the pieces fit together.Added
  • preview_order takes amount_coins — the stake the user chose, in whole coins, within the topic’s range. If the user named an amount, pass exactly that; if not, ask them. Out-of-range amounts are refused with reason STAKE_OUT_OF_RANGE (with details.min_coins / details.max_coins), never adjusted. The amount is bound into the confirm_token.
  • Topic cards and details carry stake_rules (min_coins, max_coins, default_coins, rules_version; fixed per topic at creation, null on v2_share) and ruby_boost (multiplier, ends_at, or null). Orders placed, settled, or (in the app) sold while a boost is live get its multiplier, so every payout_if_correct_rubies is a guaranteed minimum.
  • The order preview summary carries ruby_multiplier.
  • list_my_positions rows carry sold, sold_rubies (positions sold in the SeeSaw app) and payout_if_correct_rubies (open v21_lmsr rows).
  • New read tool list_my_ruby_ledger / GET /open/v1/me/ruby-ledger: every ruby movement, filterable by flow and source. A read key now sees 12 tools, a read+write key 18.
  • Opinions in list_topic_opinions carry image_urls (read-only — images are attached in the app).
  • ruby_payback, ruby_total and max_relay_payback_rubies next to their sapphire-named predecessors.
  • ms (Malay) joins the supported languages — nine in total.
  • Error code STAKE_OUT_OF_RANGE.
Changed
  • The fixed 100-coin stake is gone: stake_coins is whatever the user chose. Omitting amount_coins stakes stake_rules.default_coins (100 moved into the topic’s range) — kept for compatibility, not a recommendation.
  • place_order spends the previewed stake_coins; INSUFFICIENT_BALANCE means the balance is below that stake.
  • Topics can open at initial probabilities set when they are published rather than an even split — read implied_price instead of assuming 1/n.
  • ALREADY_STAKED / TOPIC_ALREADY_STAKED also cover a topic whose one order was sold in the app.
  • Opinions: side_option_id is the author’s position if they hold one, otherwise the side they picked; publishing is free and needs no position (preview_opinion takes side_option_id and answers SIDE_REQUIRED without it; the old position requirement and OPINION_NEEDS_POSITION are gone).
  • Selling a position is available in the SeeSaw app only; the Open API has no sell operation.
Fixed
  • A position sold in the app no longer shows a settlement outcome: won, payout_rubies and payout_if_correct_rubies stay null and refunded stays false. Before, a sale of the option that later won was reported as a win with a payout that never happened, and a sold position on a refunded topic was reported as refunded.
  • place_order receipts carry order.payout_if_correct_rubies and previewed.payout_if_correct_rubies, which include the ruby boost. Before, the receipt only had units (the raw count), which did not match the boosted payout the preview showed. Reconcile the payout fields, not units.
Deprecated — removed in contract 3.0.0The deprecated fields keep returning the same values as their replacements until then.
2.0.0
Contract 2.0.0 — the 2.0 topic surface, write actions, and key scopes
This release is breaking. The 1.0.0-beta surface described SeeSaw’s previous generation of prediction topics, which has been retired along with its currency (credits) and its data. Retained tool and endpoint names now return the 2.0 shapes; integrations built against the beta need updating.
New: write actions
  • Three actions, each a preview + execute pair: preview_order / place_order, preview_opinion / publish_opinion, preview_back / back_opinion.
  • The execute half accepts only a confirm_token minted by its preview — valid 5 minutes, single-use, bound to the user, key, action and parameters. So the summary a user is meant to see always exists before an action can.
  • Executing tools carry destructiveHint and _meta["anthropic/requiresUserInteraction"], which compatible clients turn into a mandatory confirmation prompt.
  • Details: Write actions and confirmation.
New: key scopes
  • Keys are created as ["read"] or ["read","write"], chosen in the app and immutable afterwards — there is no upgrade path.
  • A read-only key never sees the write tools over MCP and gets 403 FORBIDDEN_SCOPE on write endpoints.
  • See Authentication.
New: self-service keys
  • Create and revoke keys yourself in the app (sidebar → MCP). Keys are no longer issued by the SeeSaw team.
New read capabilitiesRetained names, new shapes — search_topics, list_topics, get_topic, get_my_profile, list_my_positions keep their names but return 2.0 data and are not compatible with 1.0.0-beta. Notably: probabilities are now implied_price, balances are coins and gems rather than credits and diamonds, and topics carry mechanism, close_time and can_buy.RemovedOther changes
  • Read tools take an optional language argument (8 languages); REST reads Accept-Language.
  • A write rate window of 10/min and 200/day applies to the three executing operations. Previews count against the read window only.
  • New error codes for scopes, confirm tokens and write rules — see Errors.
Planned
  • OAuth 2.1 (claude.ai web / ChatGPT connectors).
  • get_user / get_leaderboard rebuilt on the 2.0 boards.
Beta
Open API & MCP server — beta release
  • 14 read-only capabilities, exposed as both REST (/open/v1/*) and MCP tools (/mcp, Streamable HTTP).
  • Personal API key authentication (sspat_…), issued by the SeeSaw team during the beta.
  • Rate limits: 120 req/min + 10,000 req/day per key; search capped at 30 req/min.