Data Collection
electionsmcp.com
Provides geographic boundaries, demographic data, and election information for U.S. locations using canonical IDs.
ENDPOINT 1
https://www.electionsmcp.com/mcp
MCP server metadata
- Name
- electionsmcp
- Version
- 1.0.0
electionsmcp — model any 2028 race down to the precinct. Find a race with resolve_geography/list_contests, create_scenario to start, set_performance to model (geo_id + shares), and list_scenario_versions/diff_versions to track the append-only chain. Send your API key as `Authorization: Bearer <key>` or `x-electionsmcp-key` to save to the durable tier; without it you are in the read/simulate sandbox. tools/list shows the CORE profile (the modeling loop) unless you authenticate or send `x-electionsmcp-tools: full` — team-collab and data-warehouse tools are hidden from keyless sessions but remain fully callable; discover them anytime with get_catalog({query:"…"}) and fetch any schema with get_catalog({tool:"name"}). Have feedback, a bug, or a feature request? Call submit_ticket (and list_tickets/get_ticket) with your key — it reaches the team and you can track it.
Known tools 254
resolve_geographyTurn a place name or shorthand into its canonical geo_id — resolve natural-language or structured location input.
Inferred read-onlyresolve_candidateWHO holds or runs for WHAT — turn a candidate/officeholder name into their seat + next race.
Inferred read-onlysearch_candidatesBROWSE the canonical candidate registry WITHOUT a name — the nameless companion to resolve_candidate (which requires a name).
Inferred read-onlyget_geographyBoundary reference, children, and a demographic summary (county grain — ACS 2023; states and districts return boundary + identity only) for a canonical geo_id (us, us-ca, us-ca-cd-03, us-ca-county-06017, us-ca-vtd-<id>).
Inferred read-onlylist_contestsWhat contests are on the 2028 Pennsylvania ballot — the real races (president, senate, house, governor, state legislature) for any state and cycle.
Inferred read-onlyamend_election_dateNew Hampshire moves its primary to June, starting 2028, per <source> — amend the canonical election-date object.
Inferred read-onlyset_performanceSet a candidate's vote share, such as the Democratic candidate to 54%, in one specific county, district, state, or precinct (the general-election override).
Inferred read-onlycompute_vote_goalHow many votes a candidate needs to win a contest — the win number and remaining gap.
Inferred read-onlytarget_precinctsReturn the STRUCTURED precinct data an orchestrator needs to reason about where to focus — baseline share, modeled share, turnout, ballots, gap-to-goal, demographics where available.
Inferred read-onlylist_racesList the Races (contest workspaces) in this workspace, with scenario counts.
Inferred read-onlyget_raceOne Race with its contest, scenario list, and latest top-line per scenario.
Inferred read-onlycreate_scenarioCreate a new Scenario (a modeled path) — optionally inside a Race and seeded from a contest_id or an existing scenario (import_from).
Potential side effectsget_viewSee what the app RENDERS — the view-model the front end draws, without a browser (tk_0b6d3501).
Inferred read-onlyfocus_viewFly the LIVE map camera to a geography — frame the state / county / district / precinct the viewer is watching, so "show them the decisive counties" actually moves the view (tk_9e8de8).
Inferred read-onlyrender_viewA headless server-rendered IMAGE of the map — the rendered view a viewer sees, as SVG or PNG, WITHOUT a browser (tk_0b6d3501 P2).
Inferred read-onlyrender_chartA headless server-rendered IMAGE of a DATA-BOUND chart/scorecard for a scenario — the standalone counterpart to render_view (which renders maps).
Inferred read-onlyget_widgetAPT — one widget from the catalog with its full detail: the widget record (id, name, category, tool, render_kind, surfaces, sizes, modes_allowed, status) PLUS the underlying render tool's complete inputSchema (render_view or render_chart) and a set of example params.
Inferred read-onlyrender_widgetAPT — the ONE call that mints a slide-ready visual at the right pixel size.
Inferred read-onlylist_presentation_templatesAPT — the discoverable PRESENTATION TEMPLATE CATALOG: opinionated deck blueprints an agent can build.
Inferred read-onlyget_presentation_templateAPT — one presentation template with its full slot schema.
Inferred read-onlycompose_deckAPT — build a first-class, durable DECK: an ordered set of narrative slides that can span ONE or MANY simulations (unlike compose_dashboard, which is a war-room grid, or generate_report, which is a longform article).
Inferred read-onlypresentation_asset_fountainAPT — the ONE call that mints EVERY visual a presentation template needs, at deck pixel sizes, into a single asset MANIFEST.
Inferred read-onlyget_deckAPT — read one durable deck by id: the full agent-readable JSON (all slides with their titles, layouts, widget refs and rendered assets, thesis/methodology, per-sim version_hashes and the deck version_hash).
Inferred read-onlylist_decksAPT — list the durable decks in this workspace (id, name, template, simulation_ids, brand_kit_id, version_hash, updated_at), most-recently-updated first.
Inferred read-onlygenerate_speaker_notesAPT — per-slide SPEAKER NOTES assembled DETERMINISTICALLY from the real model numbers (NOT invented prose — there is no app-side LLM).
Inferred read-onlycreate_brand_kitAPT / brand kit — create a workspace BRAND KIT so reports, charts, decks and exports can be published under a user's own identity (logo, color palette, typography, disclaimer/footer) rather than Elections MCP defaults.
Potential side effectslist_brand_kitsAPT / brand kit — list this workspace's brand kits (most recent first).
Inferred read-onlyget_brand_kitAPT / brand kit — read one brand kit by id (workspace-scoped): its colors, fonts, logo, disclaimer and footer tokens.
Inferred read-onlydelete_brand_kitAPT / brand kit — delete one brand kit by id (workspace-scoped).
Potential side effectsapply_brand_kitAPT / brand kit — PAINT a workspace brand kit (logo, colors, fonts, disclaimer, footer) across presentation surfaces in one call.
Inferred read-onlyvalidate_presentationAPT — the mode-aware TRUST GATE for a deck before it ships: catch a general-election claim smuggled into a primary deck (and every other mode/anchor defect) BEFORE export_deck / build_presentation renders it.
Inferred read-onlyreport_qaPre-publish QA / lint gate for a REPORT or forecast page — the report-side analogue of validate_presentation (tk_b017c462ae3f96).
Potential side effectsexport_deckAPT — after compose_deck, EXPORT a durable deck to the formats humans ship: a JSON manifest, a self-contained HTML present page, a 16:9 PDF, and an EDITABLE PPTX.
Inferred read-onlybuild_presentationAPT — the ONE-SHOT PRESENTATION ORCHESTRATOR: "build me the 2028 cycle briefing" → the whole pipeline runs in ONE call.
Inferred read-onlyexport_report_for_cmsTurn an EXISTING generated report for a scenario into CMS-ready publishing fields for WordPress, Substack, or any platform.
Inferred read-onlyget_scenarioA Scenario at its latest version (or a specified version_id): metadata (incl.
Inferred read-onlyrename_simulationRename a simulation/scenario — give the map a real title instead of the stuck default.
Inferred read-onlycommit_versionSave the scenario's current state as a new immutable, hash-stamped version in the append-only chain.
Inferred read-onlylist_scenario_versionsThe append-only version chain for a scenario, newest last, with per-version summary + top_line.
Inferred read-onlylist_scenariosList saved scenarios/simulations in this workspace, newest first, with scenario columns: scenario_id, name, level, cycle, contest_id, race_id, tags, durable_id, published, timestamps.
Inferred read-onlydiff_versionsStructured diff between two versions of one scenario: which feature/precinct overrides changed (before/after) and how the top_line moved.
Inferred read-onlyrevision_ladderRevision ladder L2 as DATA (not a render): render-ready before/after delta so the CLIENT visualizes it.
Inferred read-onlyrestore_versionSet the scenario's working state back to a prior version's payload, and return that complete per-precinct `state` (so the map redraws to the exact configuration) plus the hash chain.
Inferred read-onlyrevoke_html_reportPermanently pull a hosted HTML report you published — /r/<token> immediately begins returning 404.
Inferred read-onlylist_html_reportsList the HTML reports THIS workspace has published (newest first): token, title, byte_size, created_by, created_at, expires_at, revoked, and the /r/<token> url for each.
Inferred read-onlymaine_live_results(RETIRED, 2026-06) The Maine 2026 primary live-results feature has been retired — the event has passed and the live feed never reached results.
Inferred read-onlymaine_live_map(RETIRED, 2026-06) The Maine 2026 primary live map has been retired along with maine_live_results (event passed; live feed never reached results).
Inferred read-onlyquery_metricCAMPAIGN HQ — the one read path for governed campaign metrics (the semantic layer behind Claude-composed dashboards).
Inferred read-onlycompose_dashboardCAMPAIGN HQ — create or update a dashboard: a named, workspace-scoped layout of saved cards.
Potential side effectsget_dashboardCAMPAIGN HQ — fetch a dashboard with each card's query RESOLVED live (server runs query_metric per card).
Inferred read-onlylist_dashboardsCAMPAIGN HQ — list the workspace's saved dashboards (id, name, scope, updated_at).
Inferred read-onlydelete_dashboardCAMPAIGN HQ (EM-150) — delete a saved dashboard in your workspace.
Potential side effectsget_shapesSHAPE LIBRARY — pull our boundary shapes for ANY area and get a map ready to drop into a client report.
Potential side effectsbilling_statusBILLING — your subscription state: {billing_enabled, logged_in, plan (personal|team|null), status, active, renews, can_save}.
Inferred read-onlyconnection_statusWHO AM I — how THIS session is authenticated to electionsmcp, so a client (or a user checking their Connected Apps) can verify the connection.
Inferred read-onlymanage_billingBILLING — returns {portal_url} to the Stripe Customer Portal, where the USER can update payment, switch plan, or cancel (opened in a browser).
Potential side effectsset_survey_regionsOBSERVED POLL GEOGRAPHY (tk_ac94c24bba2379) — attach a survey's geographic crosstab LABELS ("North Jersey", "Philadelphia DMA", "Swing CDs") to real county memberships, so the observed cells can paint the map.
Inferred read-onlyverify_journalistJOURNALIST ACCESS — self-serve, machine-checkable, free: your signed-in account email must be at your outlet's domain (the magic-link mailbox IS the domain proof — personal mail providers are ineligible), and byline_url must be a live page ON that domain carrying your byline name.
Potential side effectscreate_connection_challengeCUSTOMER SETUP — mint a short-lived (15 min), ONE-TIME connection challenge for a setup session you own.
Inferred read-onlyconfirm_connectionCUSTOMER SETUP — confirm a connection challenge THROUGH the MCP pipe: proves this key reaches this account (and workspace, when bound), records the client family, and advances the setup to activate.
Inferred read-onlyprovision_customerCUSTOMER SETUP — run (or RESUME) the checkpointed provisioning saga for a setup session you own: exactly one workspace with its client type, owner membership, roster record and the exact versioned map binding; returns per-step state and the derived next_url.
Inferred read-onlyget_provisioning_statusCUSTOMER SETUP — the per-step provisioning state for a setup session you own: queued/running/done/failed with the exact failed step and a safe retry (provision_customer resumes; done steps never repeat).
Inferred read-onlystart_setupCUSTOMER SETUP — create a durable server-side setup session from an acquisition choice: client_type (team size/use) plus setup_scope (race|county|district|state|multi), optional geography (state/county_fips/party), and an optional FULL RACE pick (office plus district GEOID for districted offices).
Potential side effectsresume_setupCUSTOMER SETUP — the authoritative state of a setup session after auth, checkout or reload: status, step, client type, setup_scope, geography, owner linkage.
Inferred read-onlyarm_commercial_catalogOPERATOR ONLY — create the Stripe products + monthly prices for every active client type straight from client_type_config (metadata client_type=<key>), idempotently: types whose product already exists are skipped, never duplicated.
Potential side effectsget_plan_catalogCOMMERCIAL CATALOG — the server-owned plan catalog every surface consumes (/pricing, /get-started, account billing, provisioning): seven client types with label, audience, offer (Stripe live price when the store is open, configured initial offer otherwise), seats, template, map-binding kind, and entitlements; plus the acquisition-path aliases (issues/evidence/platform require an explicit plan choice — never silently reclassified).
Inferred read-onlybulk_mapDEMOGRAPHIC SPINE — map MANY raw labels at once (map-or-create each), for clearing the unmapped queue at scale.
Potential side effectslist_metricsMEASURE SPINE (EM-109) — list the canonical poll metrics (the WHAT-is-measured registry): dem_ballot, gop_ballot, dem_margin, generic-ballot, trump_net_fav, wrong_track/right_track, approval, etc.
Inferred read-onlytrend_metricMEASURE SPINE (EM-109) — trend a canonical metric across polls/waves: joins every (poll,question,option) you mapped to the metric_key and returns the value per poll (with date, state, sample size), plus COMPARABILITY flags (never silently pools generic-vs-named ballots or pre-vs-retro results).
Inferred read-onlyget_campaign_contextAI-NATIVE MEMORY — load a place's full state-of-play in ONE call: baseline (real returns or presidential proxy), your stored poll timeline for the place, your data overlays (datasets + collections), the campaign plan, and insights — every section provenance-stamped (source + as_of).
Inferred read-onlylist_map_themesMAP THEMES — the audience-preset registry (tk_bb87df86fdbc28): every theme with its semantic color tokens (party safe/likely/lean steps, tossup, missing, independent, selection, canvas).
Inferred read-onlylist_featuresList the geographic features (counties, states, districts, etc.) for a given level.
Inferred read-onlyset_candidatesReplace the entire candidate roster for a simulation+level in one call (add / edit / remove / reorder).
Potential side effectsremove_candidateRemove one candidate from a simulation+level roster (and drop them from any feature overrides).
Potential side effectsset_ballot_orderBALLOT DESIGN — record each candidate's printed ballot POSITION (and an optional per-candidate confusion/roll-off assumption) for a simulation+level roster, so same-name and crowded races can be disambiguated.
Inferred read-onlyget_ballot_orderBALLOT DESIGN — read back the ballot order recorded by set_ballot_order for a simulation+level: every roster candidate with its printed ballot position (candidates with a position first, in ballot order, then any unpositioned) and any confusion/roll-off assumption.
Inferred read-onlycreate_custom_candidateCreate a CUSTOM (write-in) candidate who is NOT in the canonical candidate registry, and persist it to the workspace so it is reusable across ALL of the workspace's forecasts (distinct DB structure from the baked registry).
Potential side effectslist_custom_candidatesList the workspace's custom (write-in) candidates created via create_custom_candidate — the non-canonical field, distinct from the baked candidate registry.
Potential side effectsclear_feature_overrideClear the manual percentage override on a single feature (county/state/district), reverting it to its baseline.
Inferred read-onlyset_cycleSet the election cycle the simulation models (2024 actuals, or the 2026/2028/2030 races you model).
Inferred read-onlyset_modeSet the presidential modeling mode: general election, or the 2028 Democratic / Republican primary.
Inferred read-onlyturnout_forecastSet (or read) this scenario's ELECTION-ENVIRONMENT ballots baseline (EM-016) — YOUR assumption about the electorate's size, not a turnout prediction.
Inferred read-onlyset_ticket_assumptionsCOATTAILS (EM-011): link the top of the ticket to the races below it.
Inferred read-onlymessage_testMESSAGE SALIENCE + contrast/attack effect (EM-026): model WHICH message moves WHICH cohort, on top of the message-agnostic persuasion swing.
Potential side effectsrolloff_rateROLL-OFF (EM-013): how many top-of-ticket voters skip a down-ballot office — office general ballots ÷ presidential general ballots over the IDENTICAL precinct set (joined on the shared precinct key, intersection only), derived from the ingested certified returns.
Inferred read-onlyticket_viewTHE WHOLE BALLOT in one call (EM-014): every ingested office on a state's general ballot (president → state-leg), aligned per precinct over the shared precinct keys, with per-precinct SPLIT-TICKET deltas (each office's certified two-party margin minus the top of the ticket's, + = ran more D), a split_ticket_index (mean |delta| — the EM-012 split-ticket score, filterable via min_split_index to find high- vs low-split cohorts), and CROSS-PRESSURE flags where the top-line and down-ballot lean diverge beyond the threshold or elect different parties — exactly where ticket strategy lives.
Inferred read-onlyset_swingsPersist the swing-slider state so a scenario built by hand in the browser (uniform + demographic share swings, the swing target, and the demographic region scope) survives reload.
Inferred read-onlyadd_annotationPin a note or highlight on the map — an annotation that travels with the scenario, so collaborators see what the scenario is targeting at a glance.
Inferred read-onlyclear_annotationsRemove all annotations from a scenario, or only those of one type when "type" is given.
Potential side effectsadd_map_commentLeave a Google-Docs-style COMMENT on the scenario map — a threaded, resolvable discussion anchored to a place.
Inferred read-onlylist_map_commentsList one campaign's map comments on a scenario (oldest-first), each with its campaign_id, anchor, author, body, @mentions, parent_id, and resolved state.
Inferred read-onlylist_threadsThe War Room as ONE campaign-scoped feed of THREADS — full discussion context in a single call.
Inferred read-onlyresolve_map_commentMark a map comment resolved (closed), like resolving a Google-Docs comment — or reopen it with resolved:false.
Inferred read-onlyreact_map_commentToggle an emoji reaction on a War Room chat message (map comment): adds the caller to reactions[emoji] if absent, removes them if present.
Potential side effectsremove_map_commentDelete a map comment by id (soft-delete, so threads stay intact).
Potential side effectslist_workspace_commentsTEAM/CAMPAIGN DASHBOARD feed — map comments, discussion, and notes across the active workspace.
Inferred read-onlysubmit_ticketFile a bug report, data issue, feature request, or question with the electionsmcp team.
Inferred read-onlysubmit_feedbackEM-053 — file a bug / data error / feature request / question from the workflow where you hit it; returns a durable tracking id you can read back with list_tickets / get_ticket (this is the alias name for submit_ticket — same queue, same verified-key requirement).
Inferred read-onlylist_ticketsList the tickets you have submitted (scoped to your verified key / account), newest first by default, with their current status — now with WORKING filters: status (single, comma-joined, or array — e.g.
Inferred read-onlyget_ticketGet one of your tickets by id: the ticket (status, body, the team's response) PLUS its full follow-up thread — comments[] in chronological order (comment_on_ticket appends; respond_to_ticket archives every prior response here as kind:resolution) and links{outgoing, incoming} (typed relations from link_tickets / submit_ticket follow_up_to, each labeled with the other ticket's title/status).
Inferred read-onlyrespond_to_ticketRespond to one of your tickets and set its status — the submitter-side close-the-loop tool.
Inferred read-onlycomment_on_ticketTICKETING V2 — append a follow-up COMMENT to one of your tickets (same visibility rule as get_ticket: only tickets you submitted).
Inferred read-onlylink_ticketsTICKETING V2 — create a TYPED link from one ticket to another: duplicate_of (this ticket duplicates the target), follow_up_to (this follows up on the target — the regression/bounce-back signal), blocks, implements, supersedes, relates_to.
Potential side effectsticket_insightsTICKETING V2 — the GLOBAL "how does the app need to improve" view, aggregated live from the WHOLE ticket ledger (every submitter: the founder, clients, the Expressibility/Implementation loops): by_status / by_type / by_division counts, open_age_buckets (≤7d / ≤30d / older), filed_last_7d vs resolved_last_7d (velocity), open_followup_count + examples (open follow-ups filed against already-resolved work — regressions and bounce-backs), top_duplicate_clusters, most_linked_tickets, and hot_areas (most-frequent title keywords among OPEN tickets).
Inferred read-onlyapply_uniform_swingApply a uniform swing in points toward one candidate across every feature in a level.
Inferred read-onlycreate_simulationStart a brand-new what-if model: an empty simulation of any race, ready for candidates, swings, and turnout.
Inferred read-onlylist_simulationsList saved simulations in this workspace (id, name, level, cycle, mode, contest_id, last-modified; rows stamped with an identity also carry created_by/updated_by member user_ids).
Inferred read-onlyget_simulationFetch the full state of a simulation: candidates per level, overrides per level, last modified.
Inferred read-onlydescribe_open_campaignShow the agent the campaign the user has OPEN right now, as one editable packet.
Inferred read-onlybind_sessionBIND this agent session to the USER'S OPEN /sim — the session-bootstrap contract (tk_2ba54e8466bc19 / tk_7069d33b0c682e).
Inferred read-onlyannounce_presenceHEARTBEAT — announce that this session (a browser tab or an MCP agent) is live in the workspace, optionally on one scenario.
Inferred read-onlylist_presenceWHO IS LIVE in this workspace right now — every browser tab and MCP agent with a presence heartbeat in the last ~45s, one row per actor: {actor, name, color, scenario_id (the sim they have open / are bound to), level, state_fips, focus_geo_id, last_seen, is_agent, is_you}.
Inferred read-onlyapply_demographic_swingApply a demographic swing to the geographies matching a cohort — for ANY race level.
Inferred read-onlylist_flippedList features whose winner under the simulated overrides differs from the baseline — `count` is the FULL flip total; `flipped` returns up to `limit` rows (default 100).
Inferred read-onlycompare_simulationsCompare two simulations side by side — a per-feature diff at a level.
Inferred read-onlylist_siblingsList a simulation's SIBLING branches — every fork/clone that shares the same parent.
Inferred read-onlygenerate_reportRender a shareable HTML report of the simulation across one or more levels.
Inferred read-onlylist_reportsList the reports generated in this workspace (newest first): report_id, title, simulation_id, created_at, url.
Inferred read-onlyget_reportRead a published report back over the protocol: returns the stored report BODY (the composed HTML generate_report rendered) plus its published metadata — published status, public URL, PDF URL, created_at — and, for the report's scenario, any public share/forecast tokens (each with its /f/ or /share/ URL).
Inferred read-onlycompose_reportDOCUMENT COMPOSITION — assemble an ORDERED list of heterogeneous blocks into ONE hosted long-form report at /reports/<id>.
Inferred read-onlyget_composed_reportRead a composed report's durable SPEC back (the ordered block list) — the reload path for compose_report.
Inferred read-onlylist_composed_reportsList the composed reports in this workspace (newest first): report_id, title, block_count, version_hash, timestamps, url.
Inferred read-onlyget_impact_reportNation-wide election impact across ALL 6 legislative levels in one call.
Inferred read-onlyquery_precinctsQuery precincts with structured filters, sorted + trimmed server-side.
Inferred read-onlyexport_precinctsBULK EXPORT — get a whole state's (or several states', or the national) precinct atoms as ONE downloadable file (csv | json | ndjson) instead of paginating one row at a time.
Inferred read-onlyaggregate_precinctsServer-side roll-up of precinct atoms — grouped sums + the grand total in ONE call, so you never pull thousands of precincts and fold them client-side.
Inferred read-onlycost_modelPrice a vote goal in dollars by channel — $ per net vote (a net vote = +1 to your margin) as a RANGE, not a false-precision point.
Inferred read-onlyclear_precinct_overrideRemove a precinct-level override from a simulation, reverting that precinct to its 2024 baseline.
Potential side effectsprecincts_in_districtReturn precincts whose centroid falls inside the given district boundary.
Inferred read-onlyapply_swing_to_queryApply a uniform swing to every precinct matching a filter, in one call.
Inferred read-onlyroll_up_state_racesRoll up every race in scope at a single level for a state, in one call.
Inferred read-onlyget_manual_editsEvery manual edit in a scenario — the human's (or an agent's) overrides — in one scenario-scoped read, so a connected AI can see exactly what has been modeled and the deltas it produced.
Potential side effectsscenario_handoff_bundleOne consolidated, machine-readable audit + handoff packet for a scenario, so a teammate or a future AI session can resume without reconstructing context from many calls.
Inferred read-onlyprimary_narrativeDATA-ONLY narrative package for a presidential-primary scenario — the STORY of the race as structured data an AI client turns into its own storyboard, press piece, memo, or social thread (electionsmcp returns the numbers/structure; the client renders).
Inferred read-onlysenate_path_to_majoritySenate path-to-majority solver: given a cycle and a target party, it computes the MINIMAL set of up-for-grabs seats that party must win to reach control — respecting the real class calendar (only ~34 seats up, the rest carry over), the carryover baseline, and the VP tiebreak.
Inferred read-onlytipping_pointChamber-control triage from the 2024 baseline: orders every race from most-Democratic to most-Republican, runs the cumulative count to the majority line (270 EV for president, 51 seats for senate incl.
Inferred read-onlyexposureExposure / sensitivity sweep: applies a uniform national swing across a race set and reports how control responds — the wave size that flips the chamber each way (flip_control_at), each seat's swing-to-flip (how exposed it is), and the seat curve across swings.
Inferred read-onlyrank_geoData-driven map: rank geographies by a variable, COLOR them by one variable and (optionally) EXTRUDE their HEIGHT by a second, then repaint the wall.
Inferred read-onlycandidate_standingPORTAL — one candidate/official's standing across every race you model them in.
Inferred read-onlylist_modeled_candidatesPORTFOLIO — every candidate or elected official you are modeling, unioned across ALL of your simulations and every level, deduped by name+party.
Inferred read-onlyrace_contextRACE BRIEF — one contest's whole situation in a single structured object the client AI renders: the seat, its incumbent, the candidate field, the certified-2024 rating, poll availability + the latest quality-weighted poll, Senate carryover impact, and any STORED ballot-access / candidate-turmoil facts.
Inferred read-onlyget_catalogDISCOVERY — find the right tool when nothing in your list fits, like survey ingest or polling, by searching the whole catalog including gated tools.
Inferred read-onlyget_usageOBSERVABILITY — session usage meter: total api_calls (every tool invocation since this server session began), distinct tools used, a by_category breakdown, and the per-tool leaderboard.
Inferred read-onlylist_eventsWITNESS STREAM (EM-116) — replay the ordered server-side event log of every tool-call (a running then a done event each, carrying category, latency_ms, args_digest, affected{precinct_ids,count}, delta{margin_shift}, scenario_id, version, channel).
Inferred read-onlyverify_auditWITNESS AUDIT (EM-116) — re-verify the immutable, content-hashed audit chain of a scenario's committed versions (commit_version is the append-only hash-stamped write).
Potential side effectslist_primary_calendarReturn the ordered 2028 primary calendar for D or R: state by state, with date, type (primary/caucus), delegates, and tier (carve-out / super-tuesday / april).
Inferred read-onlyset_primary_candidatesDefine the candidate field for a party's presidential primary on this simulation (the GOP/Dem contenders).
Inferred read-onlyexit_primary_candidateRemove a candidate from a party's presidential-primary FIELD and REDISTRIBUTE their modeled vote share to the survivors in one atomic, provenance-carrying edit — the "so-and-so drops out, where do their voters go?" primitive (dropouts are recurring news in every contested primary).
Potential side effectsset_primary_sharesSet a party's presidential-primary vote shares — one state, or MANY states in a single call.
Inferred read-onlyset_primary_county_sharesModel a party's presidential primary at COUNTY level: set one county's candidate vote shares within a state's primary.
Inferred read-onlyset_primary_precinct_sharesModel a party's presidential primary at PRECINCT level — the finest grain.
Inferred read-onlyapply_primary_cohortBULK conditional primary edit — for every precinct in a HOUSE district that matches a 2024 cohort filter, set the candidate shares, in ONE call (instead of one set_primary_precinct_shares per precinct).
Potential side effectsbulk_set_primary_sharesBULK primary-share writer — apply a party's presidential-primary shares across MANY geographies in ONE call, instead of one set_primary_shares / set_primary_county_shares per geo.
Inferred read-onlybuild_strategyBuild a multi-step STRATEGY PLAYBOOK for a HOUSE / state-leg district, in one call.
Inferred read-onlyget_strategyReturn the saved strategy playbook for a simulation (s.strategy), or {strategy:null} if none.
Inferred read-onlyclear_primary_sharesRemove a state's primary vote shares for a party (un-model that contest).
Potential side effectsset_primary_asofMove the calendar playhead — the point in the primary calendar "as of" which to view the race on the map/chart.
Inferred read-onlyset_primary_grain_prefPin which modeling grain DRIVES a state in a party's presidential primary — i.e.
Inferred read-onlyset_primary_demo_leversSet a candidate's GLOBAL DEMOGRAPHIC DIALS in a primary — how many points to shift them among a voter group across the whole district/state.
Inferred read-onlyset_compare_pathsGenerate a two-path comparison that the browser renders side-by-side.
Inferred read-onlyroll_up_primaryThe running delegate count — OR, for a race-scoped downballot sim, that race's own share rollup.
Inferred read-onlyprimary_state_effectiveONE STATE's primary exactly as the delegate count sees it — the per-state READ view of roll_up_primary.
Inferred read-onlycheck_scenarioSCENARIO TRUST plausibility lint (tk_57e0d6adfac63d) — a READ-ONLY reality check over a presidential-primary scenario's ACTUAL rollup, run before you publish or hand off.
Potential side effectscheck_workspace_consistencySCENARIO TRUST cross-scenario consistency sweep (tk_57e0d6adfac63d) — do this workspace's primary scenarios contradict each other?
Inferred read-onlyfield_snapshotSCENARIO TRUST elicitation gate (tk_960747792b23d3) — the HONEST STARTING POINT for a 2028 presidential-primary scenario, in one call, before any share is invented.
Inferred read-onlyanswer_assumptionSCENARIO TRUST assumptions ledger (tk_960747792b23d3) — record a question you asked the user (or a premise you were given) and the answer that now drives this scenario's modeling: "Does the field consolidate after Super Tuesday?" → "Yes, behind Whitmer — the user's stated premise".
Inferred read-onlycheck_claimSCENARIO TRUST claim checker (EM-049 / tk_4907f0676a5c7c) — stress-test a public claim ("Whitmer wins the Michigan primary via consolidation") by translating it into the EXPLICIT assumption set the delegate kernel would need, each grounded in real platform data.
Inferred read-onlycandidate_path_explainerPATH-TO-THE-NOMINATION explainer — for each candidate in a presidential-primary scenario (or one candidate_id), a DERIVED, plain-numbers account of HOW they win or WHY they fall short, straight from the delegate rollup.
Inferred read-onlydefine_dem_calendarDefine the Democratic primary calendar order + dates (the DNC has not set the 2028 schedule, so the user/AI models it).
Inferred read-onlyclear_dem_calendarDiscard the simulation's user-defined Democratic calendar and revert to the default 2024-based Dem calendar.
Inferred read-onlyget_geo_knowledgeSTRATEGIC KNOWLEDGE — the documented ruleset + knowledge for a geography, so an AI does not have to KNOW the rules; the platform supplies them.
Inferred read-onlyset_geo_knowledgeWrite your workspace CUSTOM overlay for a geography — campaign-specific notes, target shares, turf intel, local relationships, assumptions — layered ON TOP of (and able to override) the global canonical layer read by get_geo_knowledge.
Potential side effectslist_geo_knowledgeList your workspace's CUSTOM geo-knowledge overlays (the rows set_geo_knowledge has written), newest grain first.
Inferred read-onlysave_calendar_scenarioSave a NAMED primary-calendar ordering as a first-class, diffable artifact.
Inferred read-onlylist_calendar_scenariosList the named calendar orderings saved in your workspace (save_calendar_scenario), newest first, optionally filtered by party.
Inferred read-onlydiff_calendar_scenariosDiff two calendar orderings — each an id/name of a saved calendar scenario, or the literal "default" (the platform calendar).
Inferred read-onlyapply_calendar_scenarioApply a saved calendar scenario BY REFERENCE to a simulation — sets the sim's Democratic calendar to that ordering (reusing the define_dem_calendar path, so the delegate math is untouched).
Inferred read-onlyoptimize_calendarRANK primary-calendar orderings for a candidate against the sim's modeled per-state delegate hauls — which calendar order best helps candidate X.
Inferred read-onlyhistorical_primaryRead a REAL, ingested historical PRIMARY result (down-ballot) at state/contest grain — winner, per-candidate vote shares, turnout, precinct coverage — straight from precinct_results, never fabricated.
Inferred read-onlyanalyze_primary_inflectionsINFLECTION + SENSITIVITY analysis of a modeled presidential primary — under YOUR scenario's assumptions: not just who leads, but when your modeled race clinches and which contests could flip it.
Inferred read-onlyprimary_batch_editATOMIC batch-edit transaction for a PRIMARY scenario — validate, preview, apply, and roll back a whole SET of candidate / share / calendar edits as ONE transaction.
Potential side effectsadd_insightAttach a strategist insight (analysis, recommendation, key finding) to a SCENARIO (simulation_id) or — EM-086 — to a RACE (race_id), the campaign "brain" container that spans the race's scenarios.
Inferred read-onlylist_insightsList insights for a SCENARIO (simulation_id) or — EM-086 — for a whole RACE (race_id): the race's own campaign-level insights PLUS every scenario's insights, aggregated with provenance (scope + scenario_id).
Inferred read-onlydelete_contest_factP1 #19 (EM-085) — DELETE a sourced fact previously filed on a CONTEST with attach_contest_fact.
Potential side effectsclear_race_scopeRemove the race scope from a simulation, returning it to national/retrospective mode.
Potential side effectssnapshot_simulationCapture the current state of a simulation as a labeled snapshot.
Inferred read-onlyget_forecast_usageReach of YOUR published forecasts — view counts per published-forecast link in your workspace, so you can see which theses are landing.
Inferred read-onlyfork_forecastClone a published forecast as a new editable simulation in the caller's workspace.
Inferred read-onlyextrapolate_from_seedsTake a small set of seed observations ("Newsom +4 nationally, +6 with under-30s, wins NJ") and propose precinct-level mutations from them.
Inferred read-onlyactual_coverageDiscover what REAL ingested election results are available to analyze — actual precinct-level returns (from RoutPoint), grouped by state × office × year with district / contest / precinct counts.
Inferred read-onlyregion_coverageDISCOVERY + DIAGNOSTICS for custom REGION GROUPS (multi-state / multi-county / multi-district cohorts — campaign regions, media markets, organizing turf, sales territories).
Inferred read-onlyclone_region_templateClone a BUILT-IN region template (discover them under region_coverage.builtin_templates — MAINE FIRST: "maine-reporting-regions") into your workspace as an ordinary, fully-editable REGION GROUP.
Inferred read-onlydata_provenanceGOVERNANCE — machine-readable provenance for every data layer so you can responsibly cite what you publish: source, provider, vintage, kind (actual | boundary | reference | modeled | user_supplied), method, limitations, and which tools use it — plus a legend and methodology card.
Potential side effectsactual_resultsThe real result of one race, rolled up from its actual precinct returns: winner + party, margin (pp), Dem/Rep vote totals & pct, turnout, and the candidate list.
Inferred read-onlycandidate_overperformanceCANDIDATE QUALITY — how a real down-ballot candidate ran vs the TOP OF THE TICKET in the same district.
Inferred read-onlyquery_actual_precinctsAnalytical filter over real precinct returns: closest precincts, precincts a party won, turnout outliers — within one race or across a whole state×office×year.
Inferred read-onlyactual_rollupAggregate real precinct returns up to county, district, or statewide totals for a state×office×year.
Inferred read-onlylist_actual_contestsBrowse the FULL ballot — every individual contest with real precinct returns, including down-ballot races that aren't districted (sheriffs, county commissioners, judges, school boards, ballot measures, city councils).
Inferred read-onlyactual_contestThe real result of any single contest by its contest_id (from list_actual_contests) — works for every ballot line, including non-districted local races.
Inferred read-onlyrace_resultWho actually WON a race — the authoritative, certified winner and result from precinct returns, including the 2024 presidential result by state.
Inferred read-onlycampaign_briefCAMPAIGN COCKPIT — one call, the whole state-of-play for any race, president → state house.
Inferred read-onlycost_to_winThe budget ask for a race: net votes needed to flip (half the current margin in votes) × public per-net-vote benchmarks across persuasion/turnout channels, cheapest first.
Inferred read-onlytarget_listA ranked precinct target list (the field/turf hand-off) for a race — closest-margin precincts first, each with its winner, margin, turnout, and net votes to flip.
Inferred read-onlyflip_frontierCOST-TO-FLIP FRONTIER — the single most-asked strategic question: how big a swing across how many precincts flips this race?
Inferred read-onlycampaign_helpCampaign playbook — call this FIRST when the user is campaign staff (manager, finance, field, data, or the candidate).
Inferred read-onlyswing_for_spendGround a budget in the margin: given $ to spend on a race, returns how many net votes it buys per channel (budget ÷ public $/net-vote benchmark) and how far that moves the margin — current margin → new margin, and whether it flips.
Inferred read-onlyslate_digestA monitoring board for a slate of races: one call returns each race's rating, margin, net-votes-to-flip and turnout, plus a compact snapshot.
Inferred read-onlyCONNECT WITH APPROVAL
Client installation
Review this server and its permissions before adding it. Secret placeholders must be set locally.
Codex
~/.codex/config.toml
[mcp_servers.electionsmcp]
url = "https://www.electionsmcp.com/mcp"
enabled = true
Claude Code
.mcp.json
{
"mcpServers": {
"electionsmcp": {
"type": "http",
"url": "https://www.electionsmcp.com/mcp"
}
}
}
Claude Desktop
Settings → Connectors → Add custom connector
Name: electionsmcp
Remote MCP URL: https://www.electionsmcp.com/mcp
Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.
Cursor
.cursor/mcp.json
{
"mcpServers": {
"electionsmcp": {
"url": "https://www.electionsmcp.com/mcp"
}
}
}
Visual Studio Code
.vscode/mcp.json
Add to Visual Studio Code{
"servers": {
"electionsmcp": {
"type": "http",
"url": "https://www.electionsmcp.com/mcp"
}
}
}
Generic MCP
Client-specific MCP configuration
{
"name": "electionsmcp",
"transport": "streamable-http",
"url": "https://www.electionsmcp.com/mcp"
}
MCP Inspector
Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.
TRUST AND VERIFICATION EVIDENCE
Trust Data Available
BuiltWith Trust API v2 evidence for electionsmcp.com was fetched 2026-08-01T16:43:34.226Z and is being refreshed.
This domain appears to have previously been parked, so its current status is new or unverified.
Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.