← Registry

Data Collection

electionsmcp.com

Provides geographic boundaries, demographic data, and election information for U.S. locations using canonical IDs.

1 endpoint254 known toolsFirst detected July 2, 2026Last detected August 6, 2026

ENDPOINT 1

https://www.electionsmcp.com/mcp

No auth detected

MCP server metadata

Name
electionsmcp
Version
1.0.0
Capabilities
tools
Server instructions

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_geography

Turn a place name or shorthand into its canonical geo_id — resolve natural-language or structured location input.

Inferred read-only
resolve_candidate

WHO holds or runs for WHAT — turn a candidate/officeholder name into their seat + next race.

Inferred read-only
search_candidates

BROWSE the canonical candidate registry WITHOUT a name — the nameless companion to resolve_candidate (which requires a name).

Inferred read-only
lookup_address

ADDRESS → EVERY district + EVERY race you run there.

Inferred read-only
get_geography

Boundary 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-only
list_contests

What contests are on the 2028 Pennsylvania ballot — the real races (president, senate, house, governor, state legislature) for any state and cycle.

Inferred read-only
election_calendar

THE PLANNER'S CALENDAR — what is on the ballot when.

Inferred read-only
get_election_dates

When is the New Hampshire primary?

Inferred read-only
amend_election_date

New Hampshire moves its primary to June, starting 2028, per <source> — amend the canonical election-date object.

Inferred read-only
set_performance

Set 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-only
compute_vote_goal

How many votes a candidate needs to win a contest — the win number and remaining gap.

Inferred read-only
target_precincts

Return 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-only
create_race

Instantiate a tenant workspace (a Race) on a real-world Contest.

Inferred read-only
delete_race

Delete a Race (workspace-scoped).

Potential side effects
list_races

List the Races (contest workspaces) in this workspace, with scenario counts.

Inferred read-only
get_race

One Race with its contest, scenario list, and latest top-line per scenario.

Inferred read-only
create_scenario

Create a new Scenario (a modeled path) — optionally inside a Race and seeded from a contest_id or an existing scenario (import_from).

Potential side effects
get_view

See what the app RENDERS — the view-model the front end draws, without a browser (tk_0b6d3501).

Inferred read-only
focus_view

Fly 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-only
render_view

A 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-only
render_chart

A headless server-rendered IMAGE of a DATA-BOUND chart/scorecard for a scenario — the standalone counterpart to render_view (which renders maps).

Inferred read-only
list_widgets

AGENT PRESENTATION TOOLKIT (APT) — the discoverable WIDGET CATALOG.

Inferred read-only
get_widget

APT — 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-only
render_widget

APT — the ONE call that mints a slide-ready visual at the right pixel size.

Inferred read-only
list_presentation_templates

APT — the discoverable PRESENTATION TEMPLATE CATALOG: opinionated deck blueprints an agent can build.

Inferred read-only
get_presentation_template

APT — one presentation template with its full slot schema.

Inferred read-only
compose_deck

APT — 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-only
presentation_asset_fountain

APT — the ONE call that mints EVERY visual a presentation template needs, at deck pixel sizes, into a single asset MANIFEST.

Inferred read-only
get_deck

APT — 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-only
update_deck_slide

APT — edit ONE slide of a durable deck.

Potential side effects
list_decks

APT — 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-only
delete_deck

APT — delete a durable deck by id (workspace-scoped).

Potential side effects
generate_speaker_notes

APT — per-slide SPEAKER NOTES assembled DETERMINISTICALLY from the real model numbers (NOT invented prose — there is no app-side LLM).

Inferred read-only
create_brand_kit

APT / 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 effects
list_brand_kits

APT / brand kit — list this workspace's brand kits (most recent first).

Inferred read-only
get_brand_kit

APT / brand kit — read one brand kit by id (workspace-scoped): its colors, fonts, logo, disclaimer and footer tokens.

Inferred read-only
delete_brand_kit

APT / brand kit — delete one brand kit by id (workspace-scoped).

Potential side effects
apply_brand_kit

APT / brand kit — PAINT a workspace brand kit (logo, colors, fonts, disclaimer, footer) across presentation surfaces in one call.

Inferred read-only
validate_presentation

APT — 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-only
report_qa

Pre-publish QA / lint gate for a REPORT or forecast page — the report-side analogue of validate_presentation (tk_b017c462ae3f96).

Potential side effects
export_deck

APT — 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-only
build_presentation

APT — the ONE-SHOT PRESENTATION ORCHESTRATOR: "build me the 2028 cycle briefing" → the whole pipeline runs in ONE call.

Inferred read-only
export_report_for_cms

Turn an EXISTING generated report for a scenario into CMS-ready publishing fields for WordPress, Substack, or any platform.

Inferred read-only
set_view

WRITE the view — the MCP-writable half of get_view (tk_0b6d3501 P3).

Potential side effects
get_scenario

A Scenario at its latest version (or a specified version_id): metadata (incl.

Inferred read-only
update_scenario

Edit a Scenario's name / description / tags.

Potential side effects
rename_simulation

Rename a simulation/scenario — give the map a real title instead of the stuck default.

Inferred read-only
commit_version

Save the scenario's current state as a new immutable, hash-stamped version in the append-only chain.

Inferred read-only
list_scenario_versions

The append-only version chain for a scenario, newest last, with per-version summary + top_line.

Inferred read-only
list_scenarios

List 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-only
diff_versions

Structured diff between two versions of one scenario: which feature/precinct overrides changed (before/after) and how the top_line moved.

Inferred read-only
revision_ladder

Revision ladder L2 as DATA (not a render): render-ready before/after delta so the CLIENT visualizes it.

Inferred read-only
restore_version

Set 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-only
publish_html_report

Host a SELF-CONTAINED HTML report at a public /r/<token> URL.

Inferred read-only
revoke_html_report

Permanently pull a hosted HTML report you published — /r/<token> immediately begins returning 404.

Inferred read-only
list_html_reports

List 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-only
maine_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-only
maine_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-only
query_metric

CAMPAIGN HQ — the one read path for governed campaign metrics (the semantic layer behind Claude-composed dashboards).

Inferred read-only
save_card

CAMPAIGN HQ — save a dashboard card: a query_metric spec + a viz spec.

Inferred read-only
compose_dashboard

CAMPAIGN HQ — create or update a dashboard: a named, workspace-scoped layout of saved cards.

Potential side effects
get_dashboard

CAMPAIGN HQ — fetch a dashboard with each card's query RESOLVED live (server runs query_metric per card).

Inferred read-only
list_dashboards

CAMPAIGN HQ — list the workspace's saved dashboards (id, name, scope, updated_at).

Inferred read-only
delete_dashboard

CAMPAIGN HQ (EM-150) — delete a saved dashboard in your workspace.

Potential side effects
get_shapes

SHAPE LIBRARY — pull our boundary shapes for ANY area and get a map ready to drop into a client report.

Potential side effects
billing_status

BILLING — your subscription state: {billing_enabled, logged_in, plan (personal|team|null), status, active, renews, can_save}.

Inferred read-only
connection_status

WHO 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-only
start_subscription

BILLING — begin a paid subscription.

Inferred read-only
manage_billing

BILLING — returns {portal_url} to the Stripe Customer Portal, where the USER can update payment, switch plan, or cancel (opened in a browser).

Potential side effects
set_survey_regions

OBSERVED 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-only
verify_journalist

JOURNALIST 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 effects
create_connection_challenge

CUSTOMER SETUP — mint a short-lived (15 min), ONE-TIME connection challenge for a setup session you own.

Inferred read-only
confirm_connection

CUSTOMER 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-only
provision_customer

CUSTOMER 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-only
get_provisioning_status

CUSTOMER 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-only
start_setup

CUSTOMER 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 effects
resume_setup

CUSTOMER SETUP — the authoritative state of a setup session after auth, checkout or reload: status, step, client type, setup_scope, geography, owner linkage.

Inferred read-only
arm_commercial_catalog

OPERATOR 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 effects
get_plan_catalog

COMMERCIAL 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-only
bulk_map

DEMOGRAPHIC SPINE — map MANY raw labels at once (map-or-create each), for clearing the unmapped queue at scale.

Potential side effects
list_metrics

MEASURE 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-only
trend_metric

MEASURE 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-only
query_demographic

DEMOGRAPHIC SPINE (EM-106) — the CROSS-POLL JOIN.

Inferred read-only
get_demographic_report

DEMOGRAPHIC SPINE (EM-106) — RECALL.

Inferred read-only
get_campaign_context

AI-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-only
list_map_themes

MAP 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-only
list_levels

List the legislative levels available to simulate.

Inferred read-only
list_features

List the geographic features (counties, states, districts, etc.) for a given level.

Inferred read-only
list_candidates

List candidates currently configured for a simulation+level.

Inferred read-only
add_candidate

Add a candidate to the candidates list for a simulation+level.

Inferred read-only
set_feature_percentages

Override the vote percentages on a single feature.

Inferred read-only
set_candidates

Replace the entire candidate roster for a simulation+level in one call (add / edit / remove / reorder).

Potential side effects
remove_candidate

Remove one candidate from a simulation+level roster (and drop them from any feature overrides).

Potential side effects
set_ballot_order

BALLOT 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-only
get_ballot_order

BALLOT 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-only
create_custom_candidate

Create 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 effects
list_custom_candidates

List the workspace's custom (write-in) candidates created via create_custom_candidate — the non-canonical field, distinct from the baked candidate registry.

Potential side effects
clear_feature_override

Clear the manual percentage override on a single feature (county/state/district), reverting it to its baseline.

Inferred read-only
reset_overrides

Clear all manual overrides — the "reset to baseline" action.

Inferred read-only
set_cycle

Set the election cycle the simulation models (2024 actuals, or the 2026/2028/2030 races you model).

Inferred read-only
set_mode

Set the presidential modeling mode: general election, or the 2028 Democratic / Republican primary.

Inferred read-only
set_turnout

Set the turnout (mobilization) model.

Inferred read-only
turnout_forecast

Set (or read) this scenario's ELECTION-ENVIRONMENT ballots baseline (EM-016) — YOUR assumption about the electorate's size, not a turnout prediction.

Inferred read-only
set_ticket_assumptions

COATTAILS (EM-011): link the top of the ticket to the races below it.

Inferred read-only
message_test

MESSAGE SALIENCE + contrast/attack effect (EM-026): model WHICH message moves WHICH cohort, on top of the message-agnostic persuasion swing.

Potential side effects
rolloff_rate

ROLL-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-only
ticket_view

THE 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-only
set_swings

Persist 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-only
add_annotation

Pin 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-only
list_annotations

List every annotation (pins, highlights, notes) on a scenario.

Inferred read-only
remove_annotation

Remove a single annotation by its id.

Potential side effects
clear_annotations

Remove all annotations from a scenario, or only those of one type when "type" is given.

Potential side effects
add_map_comment

Leave a Google-Docs-style COMMENT on the scenario map — a threaded, resolvable discussion anchored to a place.

Inferred read-only
list_map_comments

List 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-only
list_threads

The War Room as ONE campaign-scoped feed of THREADS — full discussion context in a single call.

Inferred read-only
resolve_map_comment

Mark a map comment resolved (closed), like resolving a Google-Docs comment — or reopen it with resolved:false.

Inferred read-only
react_map_comment

Toggle 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 effects
remove_map_comment

Delete a map comment by id (soft-delete, so threads stay intact).

Potential side effects
list_workspace_comments

TEAM/CAMPAIGN DASHBOARD feed — map comments, discussion, and notes across the active workspace.

Inferred read-only
submit_ticket

File a bug report, data issue, feature request, or question with the electionsmcp team.

Inferred read-only
submit_feedback

EM-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-only
list_tickets

List 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-only
get_ticket

Get 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-only
respond_to_ticket

Respond to one of your tickets and set its status — the submitter-side close-the-loop tool.

Inferred read-only
comment_on_ticket

TICKETING V2 — append a follow-up COMMENT to one of your tickets (same visibility rule as get_ticket: only tickets you submitted).

Inferred read-only
link_tickets

TICKETING 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 effects
ticket_insights

TICKETING 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-only
apply_uniform_swing

Apply a uniform swing in points toward one candidate across every feature in a level.

Inferred read-only
decay_shift

TIME-DECAYING SHIFT — the timeline-scrub primitive.

Inferred read-only
get_tally

Compute the current per-candidate tally for a simulation+level.

Inferred read-only
create_simulation

Start a brand-new what-if model: an empty simulation of any race, ready for candidates, swings, and turnout.

Inferred read-only
list_simulations

List 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-only
get_simulation

Fetch the full state of a simulation: candidates per level, overrides per level, last modified.

Inferred read-only
describe_open_campaign

Show the agent the campaign the user has OPEN right now, as one editable packet.

Inferred read-only
bind_session

BIND this agent session to the USER'S OPEN /sim — the session-bootstrap contract (tk_2ba54e8466bc19 / tk_7069d33b0c682e).

Inferred read-only
announce_presence

HEARTBEAT — announce that this session (a browser tab or an MCP agent) is live in the workspace, optionally on one scenario.

Inferred read-only
list_presence

WHO 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-only
delete_simulation

Permanently delete a simulation.

Potential side effects
apply_demographic_swing

Apply a demographic swing to the geographies matching a cohort — for ANY race level.

Inferred read-only
list_flipped

List 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-only
compare_simulations

Compare two simulations side by side — a per-feature diff at a level.

Inferred read-only
clone_simulation

Duplicate a simulation under a new name.

Inferred read-only
list_siblings

List a simulation's SIBLING branches — every fork/clone that shares the same parent.

Inferred read-only
generate_report

Render a shareable HTML report of the simulation across one or more levels.

Inferred read-only
list_reports

List the reports generated in this workspace (newest first): report_id, title, simulation_id, created_at, url.

Inferred read-only
delete_report

Delete a generated report (workspace-scoped).

Potential side effects
get_report

Read 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-only
compose_report

DOCUMENT COMPOSITION — assemble an ORDERED list of heterogeneous blocks into ONE hosted long-form report at /reports/<id>.

Inferred read-only
get_composed_report

Read a composed report's durable SPEC back (the ordered block list) — the reload path for compose_report.

Inferred read-only
list_composed_reports

List the composed reports in this workspace (newest first): report_id, title, block_count, version_hash, timestamps, url.

Inferred read-only
share_simulation

Mint a public read-only share token for a simulation.

Inferred read-only
revoke_share

Revoke a previously-minted public share token.

Inferred read-only
get_impact_report

Nation-wide election impact across ALL 6 legislative levels in one call.

Inferred read-only
list_precincts

List precincts in a state with 2024 D/R/total votes baked in.

Inferred read-only
get_precinct

Get a single precinct by external_id (e.g.

Inferred read-only
query_precincts

Query precincts with structured filters, sorted + trimmed server-side.

Inferred read-only
export_precincts

BULK 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-only
aggregate_precincts

Server-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-only
cost_model

Price 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-only
set_precinct_pcts

Set a precinct-level override in a simulation.

Inferred read-only
clear_precinct_override

Remove a precinct-level override from a simulation, reverting that precinct to its 2024 baseline.

Potential side effects
list_precinct_overrides

List every precinct override stored in a simulation.

Inferred read-only
list_districts

List every district at a given race level.

Inferred read-only
precincts_in_district

Return precincts whose centroid falls inside the given district boundary.

Inferred read-only
roll_up_race

Roll up precincts to a race outcome under the current simulation.

Inferred read-only
apply_swing_to_query

Apply a uniform swing to every precinct matching a filter, in one call.

Inferred read-only
roll_up_state_races

Roll up every race in scope at a single level for a state, in one call.

Inferred read-only
get_manual_edits

Every 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 effects
scenario_handoff_bundle

One 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-only
primary_narrative

DATA-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-only
senate_control

Compute Senate control for a cycle using the real class calendar.

Inferred read-only
senate_path_to_majority

Senate 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-only
race_ratings

A race-ratings board (Cook/270towin style).

Inferred read-only
tipping_point

Chamber-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-only
exposure

Exposure / 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-only
rank_geo

Data-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-only
candidate_standing

PORTAL — one candidate/official's standing across every race you model them in.

Inferred read-only
list_modeled_candidates

PORTFOLIO — every candidate or elected official you are modeling, unioned across ALL of your simulations and every level, deduped by name+party.

Inferred read-only
race_context

RACE 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-only
help

High-level orientation for AI clients new to the simulator.

Inferred read-only
get_catalog

DISCOVERY — 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-only
get_usage

OBSERVABILITY — 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-only
list_events

WITNESS 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-only
verify_audit

WITNESS 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 effects
list_primary_calendar

Return 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-only
set_primary_candidates

Define the candidate field for a party's presidential primary on this simulation (the GOP/Dem contenders).

Inferred read-only
exit_primary_candidate

Remove 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 effects
set_primary_shares

Set a party's presidential-primary vote shares — one state, or MANY states in a single call.

Inferred read-only
set_primary_county_shares

Model a party's presidential primary at COUNTY level: set one county's candidate vote shares within a state's primary.

Inferred read-only
set_primary_precinct_shares

Model a party's presidential primary at PRECINCT level — the finest grain.

Inferred read-only
apply_primary_cohort

BULK 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 effects
bulk_set_primary_shares

BULK 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-only
build_strategy

Build a multi-step STRATEGY PLAYBOOK for a HOUSE / state-leg district, in one call.

Inferred read-only
get_strategy

Return the saved strategy playbook for a simulation (s.strategy), or {strategy:null} if none.

Inferred read-only
clear_strategy

Clear the strategy playbook — the one-call reset for the plan.

Inferred read-only
clear_primary_shares

Remove a state's primary vote shares for a party (un-model that contest).

Potential side effects
set_primary_asof

Move the calendar playhead — the point in the primary calendar "as of" which to view the race on the map/chart.

Inferred read-only
set_primary_grain_pref

Pin which modeling grain DRIVES a state in a party's presidential primary — i.e.

Inferred read-only
set_primary_demo_levers

Set 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-only
set_compare_paths

Generate a two-path comparison that the browser renders side-by-side.

Inferred read-only
roll_up_primary

The running delegate count — OR, for a race-scoped downballot sim, that race's own share rollup.

Inferred read-only
primary_state_effective

ONE STATE's primary exactly as the delegate count sees it — the per-state READ view of roll_up_primary.

Inferred read-only
check_scenario

SCENARIO 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 effects
check_workspace_consistency

SCENARIO TRUST cross-scenario consistency sweep (tk_57e0d6adfac63d) — do this workspace's primary scenarios contradict each other?

Inferred read-only
field_snapshot

SCENARIO 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-only
answer_assumption

SCENARIO 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-only
check_claim

SCENARIO 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-only
candidate_path_explainer

PATH-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-only
define_dem_calendar

Define the Democratic primary calendar order + dates (the DNC has not set the 2028 schedule, so the user/AI models it).

Inferred read-only
clear_dem_calendar

Discard the simulation's user-defined Democratic calendar and revert to the default 2024-based Dem calendar.

Inferred read-only
get_geo_knowledge

STRATEGIC KNOWLEDGE — the documented ruleset + knowledge for a geography, so an AI does not have to KNOW the rules; the platform supplies them.

Inferred read-only
set_geo_knowledge

Write 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 effects
list_geo_knowledge

List your workspace's CUSTOM geo-knowledge overlays (the rows set_geo_knowledge has written), newest grain first.

Inferred read-only
save_calendar_scenario

Save a NAMED primary-calendar ordering as a first-class, diffable artifact.

Inferred read-only
list_calendar_scenarios

List the named calendar orderings saved in your workspace (save_calendar_scenario), newest first, optionally filtered by party.

Inferred read-only
diff_calendar_scenarios

Diff two calendar orderings — each an id/name of a saved calendar scenario, or the literal "default" (the platform calendar).

Inferred read-only
apply_calendar_scenario

Apply 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-only
optimize_calendar

RANK primary-calendar orderings for a candidate against the sim's modeled per-state delegate hauls — which calendar order best helps candidate X.

Inferred read-only
historical_primary

Read 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-only
analyze_primary_inflections

INFLECTION + 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-only
primary_batch_edit

ATOMIC 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 effects
add_insight

Attach 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-only
query_insights

WORKSPACE-WIDE typed-fact query for insights (tk_d8e53b6ad55f08).

Inferred read-only
list_insights

List 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-only
delete_insight

Remove an insight from a simulation by id.

Potential side effects
delete_contest_fact

P1 #19 (EM-085) — DELETE a sourced fact previously filed on a CONTEST with attach_contest_fact.

Potential side effects
set_race_scope

Scope a simulation to one specific race/campaign.

Inferred read-only
clear_race_scope

Remove the race scope from a simulation, returning it to national/retrospective mode.

Potential side effects
find_similar_counties

Given a seed county (e.g.

Inferred read-only
snapshot_simulation

Capture the current state of a simulation as a labeled snapshot.

Inferred read-only
list_snapshots

List all snapshots taken against a simulation.

Inferred read-only
restore_snapshot

Roll a simulation back to a previously-captured snapshot.

Inferred read-only
publish_forecast

Turn a simulation into a published forecast article.

Inferred read-only
get_forecast_usage

Reach of YOUR published forecasts — view counts per published-forecast link in your workspace, so you can see which theses are landing.

Inferred read-only
fork_forecast

Clone a published forecast as a new editable simulation in the caller's workspace.

Inferred read-only
extrapolate_from_seeds

Take a small set of seed observations ("Newsom +4 nationally, +6 with under-30s, wins NJ") and propose precinct-level mutations from them.

Inferred read-only
actual_coverage

Discover 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-only
region_coverage

DISCOVERY + DIAGNOSTICS for custom REGION GROUPS (multi-state / multi-county / multi-district cohorts — campaign regions, media markets, organizing turf, sales territories).

Inferred read-only
clone_region_template

Clone 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-only
data_provenance

GOVERNANCE — 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 effects
actual_results

The 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-only
candidate_overperformance

CANDIDATE QUALITY — how a real down-ballot candidate ran vs the TOP OF THE TICKET in the same district.

Inferred read-only
query_actual_precincts

Analytical 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-only
actual_rollup

Aggregate real precinct returns up to county, district, or statewide totals for a state×office×year.

Inferred read-only
list_actual_contests

Browse 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-only
actual_contest

The 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-only
race_result

Who actually WON a race — the authoritative, certified winner and result from precinct returns, including the 2024 presidential result by state.

Inferred read-only
campaign_brief

CAMPAIGN COCKPIT — one call, the whole state-of-play for any race, president → state house.

Inferred read-only
cost_to_win

The 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-only
target_list

A 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-only
flip_frontier

COST-TO-FLIP FRONTIER — the single most-asked strategic question: how big a swing across how many precincts flips this race?

Inferred read-only
campaign_help

Campaign playbook — call this FIRST when the user is campaign staff (manager, finance, field, data, or the candidate).

Inferred read-only
swing_for_spend

Ground 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-only
slate_digest

A 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-only

CONNECT 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.

Trust status New

This domain appears to have previously been parked, so its current status is new or unverified.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.