{"server":"electionsmcp","transport":"Streamable HTTP — POST JSON-RPC to this URL; responses are JSON (no SSE).","endpoint":"https://www.electionsmcp.com/mcp","auth":"Optional. Send your key as `Authorization: Bearer <key>` OR `x-electionsmcp-key: <key>` for the durable (save) tier; without a key you get a read/simulate sandbox. A bad key never blocks — it just stays in the sandbox.","tool_profiles":"tools/list is profile-gated for agent efficiency: keyless sessions list the CORE modeling loop; team-collab + data-warehouse tools are hidden but stay fully callable (discover them with get_catalog({query}) and load schemas with get_catalog({tool})). An authenticated key — or the header `x-electionsmcp-tools: full` — lists the complete catalog; `x-electionsmcp-tools: core` slims an authenticated session.","connect":{"streamable_http_clients":"Point the client at this URL (e.g. claude.ai connectors, recent MCP SDK). It will POST initialize → tools/list → tools/call.","url_plus_headers_config":{"mcpServers":{"electionsmcp":{"url":"https://www.electionsmcp.com/mcp","headers":{"x-electionsmcp-key":"YOUR_KEY"}}}},"stdio_clients_eg_claude_desktop":{"mcpServers":{"electionsmcp":{"command":"npx","args":["-y","mcp-remote","https://www.electionsmcp.com/mcp","--header","x-electionsmcp-key:YOUR_KEY"]}}},"legacy_sse_clients":"If your client uses the older HTTP+SSE transport: connect to https://www.electionsmcp.com/sse (it advertises the POST /messages endpoint).","quick_test_curl":"curl -sX POST https://www.electionsmcp.com/mcp -H 'content-type: application/json' -H 'authorization: Bearer YOUR_KEY' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'"},"quickstarts":[{"goal":"Plan a 2028 presidential cycle","steps":["create_simulation","set_cycle(2028) + set_mode(\"general\")","set_candidates(level:\"president\")","get_tally(\"president\") — baseline Electoral College","apply_demographic_swing / apply_uniform_swing / set_turnout — your assumptions","senate_control + roll_up_state_races — the down-ballot map","get_impact_report — the cross-level narrative","publish_forecast — a shareable 538/NYT-style article"]},{"goal":"Model one race (e.g. the PA Senate seat)","steps":["create_simulation","set_race_scope(level:\"senate\", geography_id:\"PA\", cycle:2028)","set_candidates(level:\"senate\")","set_feature_percentages / apply_uniform_swing","get_tally — the result","add_annotation — mark up the map","share_simulation — a public read-only link"]},{"goal":"Target precincts for a campaign","steps":["create_simulation + set_race_scope","compute_vote_goal(geo_id) — votes needed to win","target_precincts(context, limit) — structured precinct rows; the agent ranks them","cost_to_win(budget, channel) — ground the plan in $/net-vote"]},{"goal":"Publish & spread a forecast","steps":["model a scenario (see above)","publish_forecast(byline, methodology) — public article + social card","render_view(share:true) — a hostable map image + embed","fork_forecast — let others remix your thesis"]}],"feedback":"Feedback, bugs, and feature requests are first-class over MCP: call submit_ticket (then list_tickets / get_ticket) with your verified key. It reaches the electionsmcp team and you can track the response — the same queue as the in-app Feedback panel.","next":"Once connected, call the `help` tool for the full tool list + a typical workflow."}