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.Addedpreview_ordertakesamount_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 reasonSTAKE_OUT_OF_RANGE(withdetails.min_coins/details.max_coins), never adjusted. The amount is bound into theconfirm_token.- Topic cards and details carry
stake_rules(min_coins,max_coins,default_coins,rules_version; fixed per topic at creation,nullonv2_share) andruby_boost(multiplier,ends_at, ornull). Orders placed, settled, or (in the app) sold while a boost is live get its multiplier, so everypayout_if_correct_rubiesis a guaranteed minimum. - The order preview summary carries
ruby_multiplier. list_my_positionsrows carrysold,sold_rubies(positions sold in the SeeSaw app) andpayout_if_correct_rubies(openv21_lmsrrows).- New read tool
list_my_ruby_ledger/GET /open/v1/me/ruby-ledger: every ruby movement, filterable byflowandsource. A read key now sees 12 tools, a read+write key 18. - Opinions in
list_topic_opinionscarryimage_urls(read-only — images are attached in the app). ruby_payback,ruby_totalandmax_relay_payback_rubiesnext to their sapphire-named predecessors.ms(Malay) joins the supported languages — nine in total.- Error code
STAKE_OUT_OF_RANGE.
- The fixed 100-coin stake is gone:
stake_coinsis whatever the user chose. Omittingamount_coinsstakesstake_rules.default_coins(100 moved into the topic’s range) — kept for compatibility, not a recommendation. place_orderspends the previewedstake_coins;INSUFFICIENT_BALANCEmeans the balance is below that stake.- Topics can open at initial probabilities set when they are published rather
than an even split — read
implied_priceinstead of assuming 1/n. ALREADY_STAKED/TOPIC_ALREADY_STAKEDalso cover a topic whose one order was sold in the app.- Opinions:
side_option_idis the author’s position if they hold one, otherwise the side they picked; publishing is free and needs no position (preview_opiniontakesside_option_idand answersSIDE_REQUIREDwithout it; the old position requirement andOPINION_NEEDS_POSITIONare gone). - Selling a position is available in the SeeSaw app only; the Open API has no sell operation.
- A position sold in the app no longer shows a settlement outcome:
won,payout_rubiesandpayout_if_correct_rubiesstaynullandrefundedstaysfalse. 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_orderreceipts carryorder.payout_if_correct_rubiesandpreviewed.payout_if_correct_rubies, which include the ruby boost. Before, the receipt only hadunits(the raw count), which did not match the boosted payout the preview showed. Reconcile the payout fields, notunits.
The 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 scopesNew: 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_tokenminted 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
destructiveHintand_meta["anthropic/requiresUserInteraction"], which compatible clients turn into a mandatory confirmation prompt. - Details: Write actions and confirmation.
- 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_SCOPEon write endpoints. - See Authentication.
- Create and revoke keys yourself in the app (sidebar → MCP). Keys are no longer issued by the SeeSaw team.
list_topic_categories— the category channels for filtering.list_topic_opinions— the discussion, each opinion tagged with its author’s staked side.list_my_opinions,list_my_backed_opinions,list_my_watchlist,list_my_coin_ledger.
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
languageargument (8 languages); REST readsAccept-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.
- OAuth 2.1 (claude.ai web / ChatGPT connectors).
get_user/get_leaderboardrebuilt 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.