Skip to main content
The SeeSaw MCP server exposes the full Open API capability set as Model Context Protocol tools — the native way for AI agents (Claude Code, Cursor, VS Code, and others) to explore prediction topics and, with a write-scoped key, act on them.

Endpoint

  • Transport: Streamable HTTP, stateless — every request is self-contained, no session to keep alive, safe to retry.
  • Auth: the same Authorization: Bearer sspat_… header as REST, on every request. No OAuth dance.
  • Protocol version: negotiated automatically by your client/SDK.
  • Contract version: reported as serverInfo.version in the initialize response — currently 2.1.0 (see the changelog).

What your key sees

The tool list depends on the key’s scopes: A read-only key never sees the write tools at all — there is nothing to call by accident. If one is somehow invoked anyway, it fails with FORBIDDEN_SCOPE.

One capability set, two faces

The MCP tools and the REST endpoints are the same capabilities: tool results carry the corresponding REST response JSON (as structured content plus a text rendering). If you know one face, you know the other — the REST reference doubles as the schema reference for tool results. Rate limits are shared too: REST calls and tool calls draw from the same per-key budgets (details).

Write actions and confirmation

Three things a write-scoped key can do: take a position, publish an opinion, back an opinion. Each is two tools, not one. (Selling a position is only available in the SeeSaw app.)
1

Preview

Call preview_order, preview_opinion or preview_back. The server computes the summary — prices, what it costs, what the balance becomes, what a correct call pays — and returns a confirm_token with an expires_at. Nothing is charged and nothing is reserved.
2

Ask the user

Show that summary and get an explicit confirmation. The numbers come from the server precisely so you never have to compute them yourself. What goes into a preview is the user’s call too: for an order, the stake is the amount the user named — if they named none, ask before previewing.
3

Execute

Call place_order, publish_opinion or back_opinion with only the token. The topic, option, stake and text all travel inside it.

About the token

A token from one key will not work on another, and one minted for preview_order cannot drive publish_opinion. Expired or already-consumed tokens fail with CONFIRM_TOKEN_EXPIRED / CONFIRM_TOKEN_USED — preview again.

Retry behavior differs per action

Client-side confirmation hints

The three executing tools carry destructiveHint: true and _meta["anthropic/requiresUserInteraction"] = true. Claude Code turns the latter into a mandatory permission prompt on every call — including under bypassPermissions. Previews are annotated readOnlyHint: true and prompt like any other read.
Treat those hints as a convenience, not a control: the MCP spec explicitly says clients may ignore annotations. What actually holds is the two-phase design — an execute tool accepts nothing but a confirm_token, so a summary always exists before an action can. Presenting it honestly, including the parts the user might not like, is the agent’s responsibility.

Languages

Tools that return titles, options or opinions take an optional language argument; REST reads the Accept-Language header instead. Supported values: en (default) · zh-TW · zh-CN · vi · id · th · ja · ko · ms Aliases fold onto these (zh → zh-TW, en-US → en). Over MCP an unsupported value is an error rather than a silent fallback, so an agent learns the language isn’t available instead of quietly getting English. (For the same reason the tool schemas list the values in the description rather than as a JSON-schema enum.) Over REST an unknown Accept-Language falls back to en.

Set up your client

Claude Code

One claude mcp add command.

Cursor

.cursor/mcp.json snippet.

VS Code

.vscode/mcp.json snippet (note: key is servers).

Other clients

mcp-remote bridge for clients without header support.

The tools

See the tools overview for the full map and when to use which.