# io.github.CloudCorpRecords/racemodel (npm · @reneturcios/racemodel)

Model and map U.S. election races: scenarios, swing, turnout and precinct-level roll-ups.

- Trust score: 66/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `@reneturcios/racemodel`: 66/100 (this document), [markdown](https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel.md), [page](https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel)
- oci · `ghcr.io/cloudcorprecords/racemodel`: 36/100, [markdown](https://verifymcp.io/servers/cloudcorprecords-racemodel/ghcr-io-cloudcorprecords-racemodel.md), [page](https://verifymcp.io/servers/cloudcorprecords-racemodel/ghcr-io-cloudcorprecords-racemodel)

## Channel facts

- Registry: `npm`
- Package: `@reneturcios/racemodel`
- Version: `0.1.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 92 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 18363 tokens (~382/item across 48 items; 48 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 84% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 48 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 48 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.CloudCorpRecords/racemodel MCP server?

io.github.CloudCorpRecords/racemodel runs locally as an npm package, launched with npx -y @reneturcios/racemodel. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add cloudcorprecords-racemodel -- npx -y @reneturcios/racemodel
```

### Cursor

```json
{
  "mcpServers": {
    "cloudcorprecords-racemodel": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/racemodel"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cloudcorprecords-racemodel": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/racemodel"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add cloudcorprecords-racemodel -- npx -y @reneturcios/racemodel
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cloudcorprecords-racemodel": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@reneturcios/racemodel"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cloudcorprecords-racemodel --command npx --arg -y --arg @reneturcios/racemodel
```

### Hermes

```yaml
mcp_servers:
  cloudcorprecords-racemodel:
    command: "npx"
    args: ["-y", "@reneturcios/racemodel"]
```

### Netclaw

```json
{
  "McpServers": {
    "cloudcorprecords-racemodel": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@reneturcios/racemodel"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add cloudcorprecords-racemodel -t stdio -c npx -a -y @reneturcios/racemodel
```

### Other

```json
{
  "mcpServers": {
    "cloudcorprecords-racemodel": {
      "command": "npx",
      "args": [
        "-y",
        "@reneturcios/racemodel"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 0 to 3. That category is still filling its 30-day observation window: 0 days of observed history at the previous scan, 1 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-04 (score 65)

First indexed and scored.

## MCP tools (48)

### `resolve_geography` (~183 tokens)

Turn a place name or shorthand into its canonical geo_id — resolve natural-language or structured location input. Handles "CA-03"/"NC-4" (congressional districts), bare state names/abbreviations, "<County> County…

Input parameters:

- `query` (string, required): "CA-03", "El Dorado County CA", "the 4th state senate district in California", "Pennsylvania"
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…
- `year` (integer): Disambiguates post-redistricting boundaries; defaults to current cycle.

### `resolve_candidate` (~310 tokens)

WHO holds or runs for WHAT — turn a candidate/officeholder name into their seat + next race. Given a name (full, last-name, or a registry alias — "Lauren Boebert", "Boebert"), returns the person(s) who match with their…

Input parameters:

- `cycle` (integer): Optional — keep only matches whose next_race is in this cycle (e.g. 2026).
- `limit` (integer): Max people to return when a name is ambiguous (default 8).
- `name` (string, required): A candidate or officeholder name — full ("Lauren Boebert"), last-name ("Boebert"), or any registry alias. Matching folds free-typed names onto the canonical person.
- `office` (string): Optional — keep only matches whose current OR next-race office matches (house, senate, governor, state_senate, state_assembly, …); the "us_" prefix is optional ("house" == "us_house").
- `party` (string): Optional — keep only matches of this party (D/R/I), normalized by leading letter. For a stage/party-scoped picker.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `search_candidates` (~245 tokens)

BROWSE the canonical candidate registry WITHOUT a name — the nameless companion to resolve_candidate (which requires a name). Filter the registry of canonical people by party, office, and/or a name substring:…

Input parameters:

- `limit` (integer): Max results (default 50). `total` reports the full match count; `truncated:true` when the list was trimmed.
- `office` (string): Optional — match the registry office label. Keywords president / senate / house / governor are normalized; anything else is a case-insensitive substring on the label. The "us_" prefix is ignored.
- `party` (string): Optional — only this party (D/R/I/L/G), normalized by leading letter.
- `q` (string): Optional — case-insensitive substring on the candidate name or any alias (typeahead).
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `lookup_address` (~203 tokens)

Resolve a US street address, ZIP, state, or U.S. House district and show workspace campaigns covering the result. Street addresses return a geocoded point and containing districts, with a precinct when coverage exists.…

Input parameters:

- `address` (string, required): A full street address ("123 Main St, Dallas, TX"), a 5-digit ZIP, a district code ("NC-4", "AK-AL"), a state name/abbreviation, or a canonical state/House geography ID.
- `include_officials` (boolean): Attach the sitting officeholder for each resolved seat (from the committed legislator file).
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_contests` (~199 tokens)

Discover contests for a geography and election cycle. Filter general, primary (dem_primary/rep_primary), or all stages; count describes the returned top-level rows. National presidential primaries are discoverable in…

Input parameters:

- `cycle` (integer): Defaults to the next election year from today.
- `geo_id` (string, required): "us" (national), a state as "us-pa" / postal "PA" / FIPS "42", or a district id — all accepted.
- `stage` (string): primary selects the dem_primary and rep_primary variants; general excludes them; all returns both.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `election_calendar` (~161 tokens)

The election planning calendar. National form ({cycle}) returns federal contests, governors and by_state office lists; state form ({state,cycle}) returns a four-year horizon. Other statewide executive offices use the…

Input parameters:

- `cycle` (integer): Defaults to the next election year from today.
- `state` (string): Postal abbreviation ("PA") for the per-state 4-year horizon; omit for the national summary.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_performance` (~513 tokens)

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). Routes a county/state/district geo_id to a feature override…

Input parameters:

- `expected_version` (string): Optional optimistic-concurrency token: the scenario updated_at you last read. If the scenario changed since, the write is refused with version_conflict + the current token instead of overwriting conc…
- `geo_id` (string, required)
- `level` (string): EM-136: explicit office for the override. A bare state geo (us-pa) otherwise defaults to senate — pass level to target president or governor instead (president is stored as a state-level aggregate th…
- `margin` (number): Shorthand for two-candidate D−R margin in points; sets D/R shares around 50.
- `rebalance` (string)
- `scenario_id` (string, required): The simulation_id (scenario_id alias until the scenario model lands).
- `shares` (object, required): candidate_id → share. Accepts 0–1 or 0–100.
- `simulation_id` (string)
- `total_votes` (integer): Explicit vote volume for a custom campaign city or reviewed precinct. Use level:"custom" and geo_id from get_campaign_vote_data. A precinct requires its own total; source-election turnout is never co…
- `turnout` (number): 0–1 expected turnout (stored as metadata on precinct overrides).
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `target_precincts` (~638 tokens)

Return structured precinct model rows: precinct_id, name, county, county_fips, baseline_share, modeled_share, ballots_est, overridden, and gap_to_goal. The response does not include demographic columns or demographic…

Input parameters:

- `candidate_id` (string)
- `context` (string): Free-text constraints, echoed back (e.g. "field ops in Orange and Durham only").
- `filter` (object): Precinct property → condition map within the requested geography. Properties: external_id, GEOID, name, state, county, county_fips, shape_id, votes_dem, votes_rep, votes_total, pct_dem_lead, official…
- `geo_id` (string): District or state geography — accepts the resolve_geography slug ("us-pa"), postal ("PA"), or FIPS ("42") (EM-056). Defaults to the simulation's race_scope geography.
- `goal_mode` (string): plurality = beat the leading opponent (default); majority = 50.01% share; share = explicit target_pct.
- `limit` (integer)
- `margin` (number): plurality: win by at least this many votes.
- `offset` (integer): Page start; pass next.offset from the prior result with the same scope and filters.
- `rolloff_rate` (number): Explicit roll-off rate (see compute_vote_goal).
- `scenario_id` (string, required): The scenario/simulation handle (EM-056: simulation_id is accepted as an alias).
- `target_pct` (number)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `create_scenario` (~342 tokens)

Create a new Scenario (a modeled path) — optionally inside a Race and seeded from a contest_id or an existing scenario (import_from). Seeds an immutable baseline version (v1). Returns scenario_id + version_id. (A…

Input parameters:

- `baseline_id` (string): Optional explicit source pin. Only 2024_president_mixed_grain is currently selectable. Known county sources return baseline_selection_unavailable; unreconciled sources return baseline_not_model_eligi…
- `boundary_version` (string)
- `campaign_id` (string): Custom campaign to model inside its exact attached city boundary.
- `contest_id` (string): Optional; sets the scenario's race_scope from a canonical contest_id.
- `expected_campaign_revision` (integer)
- `idempotency_key` (string): Optional workspace-scoped retry key for listed races; required for custom campaign models. Identical retries return the same scenario and baseline version. Reusing a key with different creation input…
- `import_from` (string): Optional; copy overrides+candidates from an existing scenario_id.
- `name` (string, required)
- `race_id` (string): Optional; the Race this scenario belongs to.
- `tags` (array)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_view` (~763 tokens)

Read the exact map/view state the application renders for a canonical scenario: headline totals, selected geography, modeled feature colors, annotations, primary-calendar playhead, candidate roster, presence, and a…

Input parameters:

- `campaign_id_a` (string): Optional campaign custody for A when the model belongs to multiple readable campaigns. Does not grant access.
- `campaign_id_b` (string): Optional campaign custody for B when the model belongs to multiple readable campaigns. Does not grant access.
- `compare_simulation_id` (string): Compare B against simulation_id (A), using D-minus-R margin(B) minus margin(A). Requires one explicit state and county/precinct grain; both saved general-election models must share office/cycle/elect…
- `cycle` (integer)
- `difference_scale_pp` (number): Difference-only symmetric color extent: legend runs from negative this value through zero to positive this value. Omit to fit the largest absolute delta; out-of-scale values are disclosed as clamped.
- `expected_hash_a` (string): Optional expected immutable version hash for A; mismatches refuse.
- `expected_hash_b` (string): Optional expected immutable version hash for B; mismatches refuse.
- `expected_version_hash` (string)
- `grain` (string): With a state scoped, the grain of the local features returned: "county" (default) or "precinct". Applies to a statewide-level race (senate/governor/exec — its own overrides) AND to a PRIMARY sim scop…
- `level` (string): Which map the view renders. Default president (or whatever set_view last scoped). house = HOUSE CONTROL (per-state delegation winners + the 218 banner); state_senate/state_assembly = one state's cham…
- `simulation_id` (string, required)
- `state` (string): Optional postal code or 2-digit FIPS — scope the map to one state. president → its county breakdown; senate/governor/exec → that RACE's local county (default) or precinct features from its own overri…
- `version_a` (string): Difference comparison: exact saved version of A. Omit only when its latest version matches the live model.
- `version_b` (string): Difference comparison: exact saved version of B. Omit only when its latest version matches the live model.
- `version_id` (string): Exact saved version for a custom city model.
- `view` (string): difference uses compare_simulation_id as B and simulation_id as A; returns the zero-centered B-minus-A color scale and exact county/precinct rows.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `render_view` (~1657 tokens)

A headless server-rendered IMAGE of the map — the rendered view a viewer sees, as SVG or PNG, WITHOUT a browser (tk_0b6d3501 P2). For a scenario + level (president | senate | house | governor | the execs) it draws the…

Input parameters:

- `asof` (integer|null): PRIMARY sims — render the delegate banner/standings AS OF this calendar checkpoint (contests counted; the same asof roll_up_primary / render_chart take). Omit to honor the scenario's STORED playhead…
- `campaign_id_a` (string): Optional campaign custody for A when the model belongs to multiple readable campaigns. Does not grant access.
- `campaign_id_b` (string): Optional campaign custody for B when the model belongs to multiple readable campaigns. Does not grant access.
- `compare_simulation_id` (string): Compare B against simulation_id (A), using D-minus-R margin(B) minus margin(A). Requires one explicit state and county/precinct grain; both saved general-election models must share office/cycle/elect…
- `comparison_layout` (string): Difference-only 1200x630 card: one B-minus-A map (default), or the same-grain A | B | B-minus-A maps with explicit legends.
- `difference_scale_pp` (number): Difference-only symmetric color extent: legend runs from negative this value through zero to positive this value. Omit to fit the largest absolute delta; out-of-scale values are disclosed as clamped.
- `expected_hash_a` (string): Optional expected immutable version hash for A; mismatches refuse.
- `expected_hash_b` (string): Optional expected immutable version hash for B; mismatches refuse.
- `feature_id` (string): Optional — a state fips (37) or county/precinct id (37xxx) to scope to its state.
- `features` (array): CUSTOM MAP (president): an explicit list of geo_ids to include — county FIPS (5-digit), state FIPS (2-digit), or "us-xx". Hand-pick any counties across states; the map crops to exactly them. Combine…
- `format` (string): Image format. Default svg (png needs the resvg renderer on the host; degrades to svg if absent).
- `geo_id` (string): Optional — a geo slug like "us-nc" to scope to that state.
- `grain` (string): When scoped to ONE state (state/geo_id/feature_id), the geographic grain to render: "county" (default) per-county; "precinct" per-precinct (finest, within-county) — both work at president level AND a…
- `layers` (object): Draw saved highlight annotations on matching visible geography. Omit to honor set_view layers.highlights (default true); false hides them for this export only. Pins and notes are not rendered.
- `level` (string): Which map to render. Default president. house = HOUSE CONTROL: states shaded by delegation majority, D/R seat tally, 218 banner (for one state's district map use grain:"house" with a state scope inst…
- `region` (string): CUSTOM MAP — with region_group, render exactly ONE region in the group (its slug).
- `region_group` (string): CUSTOM MAP — a saved workspace map region-group slug. Expands to its member counties or states; add region to render one named region. Ignored if states[] or features[] are passed.
- `share` (boolean): PUBLISH this map to a hostable URL: mints a share token and returns share.hosted_image_url / hosted_svg_url + a public page_url (/f/<token>) that resolve for ANYONE — cross-workspace, embeddable in a…
- `share_ttl_days` (number): Days the shared URL stays live (default 90, max 365). Only with share:true.
- `simulation_id` (string, required)
- `state` (string): Optional — scope the image to a state (postal "NC" or 2-digit FIPS). president → that state's per-county choropleth; senate/governor/exec → that RACE's LOCAL county map from its own overrides (5-digi…
- `states` (array): CUSTOM MAP (president): a list of states (postal "PA" or 2-digit FIPS) → a cropped county choropleth of just those states' counties, in their real relative positions, zoomed to the region. Combine wi…
- `theme` (string): MAP THEME preset for the rendered image (list_map_themes: control | analyst | field | civic | accessible | broadcast | terrain) — the SAME token resolution the live wall uses, so a civic-themed repor…
- `title` (string): CUSTOM MAP: a title for the card (e.g. "Rust Belt swing"). Defaults to the state list (or the region group / region name).
- `version_a` (string): Difference comparison: exact saved version of A. Omit only when its latest version matches the live model.
- `version_b` (string): Difference comparison: exact saved version of B. Omit only when its latest version matches the live model.
- `view` (string): "result" (default) = the outcome map; "swing" = colour by margin CHANGE vs the baseline (where the scenario MOVES the map). "difference" = margin(B)-margin(A), requires compare_simulation_id and one…
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `render_chart` (~1355 tokens)

share_comparison compares candidate shares for two saved versions of one model or two same-contest statewide general-election models. Returns canonical integer candidate votes, all-ballot shares, D-minus-R margins,…

Input parameters:

- `asof` (integer|null): For the primary charts — evaluate the race at this calendar checkpoint (contests counted), the same asof roll_up_primary takes: standings/clinch totals, the momentum timeline's end, and the calendar…
- `campaign_id_a` (string): Optional campaign custody for A when the model belongs to multiple readable campaigns. Does not grant access.
- `campaign_id_b` (string): Optional campaign custody for B when the model belongs to multiple readable campaigns. Does not grant access.
- `clinch` (boolean): ranking_board only — show each candidate's clinch line on the tiles (CLINCHES <state> · <date>, or how many delegates short). Default true; pass false for a name+delegates-only board. The response's…
- `compare_simulation_id` (string): share_comparison only: alias for simulation_id_b.
- `context_simulation_id` (string): seat_hemicycle / decisive_seats only — compute the WHOLE chamber rollup from THIS scenario (a linked national/statewide view's scenario) instead of simulation_id. Pair with overlay_from_simulation_id…
- `cycle` (integer): Election cycle for seat_hemicycle / decisive_seats (defaults to the sim's cycle, else 2026) — drives the Senate class + governor calendar.
- `expected_hash_a` (string): Optional expected immutable version hash for A; mismatches refuse.
- `expected_hash_b` (string): Optional expected immutable version hash for B; mismatches refuse.
- `format` (string): Image format. Default svg (png needs the resvg renderer; degrades to svg if absent).
- `highlight_race` (object): Mark one race on the card (same shape as overlay_race): its dot wears an amber ring on seat_hemicycle, and decisive_seats always includes it on the board with its true closest-races rank.
- `level` (string): share_comparison only: statewide office; defaults to the saved scope. Both versions must match office, state, cycle and general-election stage.
- `office` (string): For seat_hemicycle / decisive_seats — which chamber (default house). state_senate/state_assembly also need state.
- `overlay_from_simulation_id` (string): seat_hemicycle / decisive_seats only — the scenario that supplies the ONE overlaid race's modeled result. Travels with overlay_race; passing one without the other is refused (overlay_incomplete).
- `overlay_race` (object): The single race to swap in from overlay_from_simulation_id: {office, state, district}. office must match the card's chamber; statewide offices need only state; house takes the district GEOID ("0604")…
- `party` (string): For the primary charts — which party's race (defaults to the sim's primary mode).
- `share` (boolean): PUBLISH to a hostable URL: mints a share token and returns share.hosted_image_url / hosted_svg_url that resolve for ANYONE (cross-workspace, embeddable). Default false. Revoke with revoke_share(token…
- `share_ttl_days` (number): Days the shared URL stays live (default 90, max 365). Only with share:true.
- `simulation_id` (string): Scenario to render; for share_comparison this is A, or the single model with version_a/version_b.
- `simulation_id_a` (string): share_comparison only: A model, alternative to simulation_id. Conflicting aliases refuse.
- `simulation_id_b` (string): share_comparison only: B model in the same contest. Omit for two explicit versions of A.
- `state` (string): State postal or FIPS. Required for share_comparison and state-leg seat_hemicycle/decisive_seats.
- `style` (object): Optional brand overrides for the supported themed charts. Does not remove attribution or change candidate colors or model data.
- `theme` (string): Chart audience palette, using the map-theme registry. Supported by primary charts, swing_bars and chamber_control. Default control.
- `title` (string): Optional eyebrow/title for the chart.
- `type` (string, required): Which widget. share_comparison = saved candidate shares before/after, with paired version anchors and one state. Primary: delegate_standings (bars+clinch), clinch_dial (gauge), delegate_momentum (lin…
- `version_a` (string): Difference comparison: exact saved version of A. Omit only when its latest version matches the live model.
- `version_b` (string): Difference comparison: exact saved version of B. Omit only when its latest version matches the live model.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_view` (~658 tokens)

Set the active scenario view and selected map context: race stage, calendar playhead, geography grain, result source, selected feature, camera, map theme, and rail. The same persisted view state and deep link are used…

Input parameters:

- `asof` (integer|null): The primary calendar playhead — contests counted in the race-so-far (the number set_primary_asof takes). null = full calendar. Writes sim.primary.asof (the store the viewer's scoreboard/map run at),…
- `camera_geo_id` (string): Optional geo to frame the camera on (defaults to the scoped state). 2-digit state / 5-digit county / district GEOID / precinct id.
- `contest` (string): Playhead targeting by contest instead of a number: a state postal code ("FL"), 2-digit FIPS, or full name — the playhead jumps to INCLUDE that contest (same semantics as set_primary_asof).
- `contest_index` (integer): Playhead targeting by 1-based calendar ordinal (list_primary_calendar order).
- `cycle` (integer)
- `layers` (object): View toggles such as precincts/highlights plus the canonical "actuals:pres_2024" baseline layer.
- `level` (string): The map/level the view should show.
- `map_grain` (string): The Map View grain toggle: states | counties | precincts (singular accepted, stored plural).
- `map_theme` (string): Pin a MAP THEME audience preset on this view (list_map_themes has the registry: control | analyst | field | civic | accessible | broadcast | terrain). The open viewer restyles live; "none" clears the…
- `rail` (string): Which right-rail panel the viewer should have open.
- `selected_geo` (object): The selected feature on the map ({level, feature_id} — e.g. {level:"county", feature_id:"12086"} for Miami-Dade). Pass feature_id:"" to clear the selection.
- `simulation_id` (string, required)
- `source` (string): The per-state Outcome SOURCE control (which grain governs the shown outcome). Stored on view_state; the sim's own grain_pref pin stays set_primary_grain_pref's job.
- `stage` (string): The race stage the viewer should see. Persisted on view_state + broadcast live; a primary-mode sim's own mode remains the identity truth (this is the VIEW).
- `state` (string): Postal code or 2-digit FIPS to scope to (pass empty string to clear to the national view).
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…
- `zoom` (number): Optional camera zoom; omit to fit the geo's bounds.

### `get_scenario` (~237 tokens)

A Scenario at its latest version (or a specified version_id): metadata (incl. latest_hash) + the version's top_line (margin / EC / viability) + its content hash/prev_hash. EM-119: pass a version_id (or…

Input parameters:

- `expected_version_hash` (string): Optional exact content hash from list_scenario_versions. Requires version_id; a mismatch is refused rather than returning a different saved model.
- `include_state` (boolean): Include the full per-precinct `state` even for the latest version (for redrawing the map).
- `scenario_id` (string, required)
- `version_id` (string): Optional; defaults to the latest version. When set, the response includes the full per-precinct `state` for that version.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `commit_version` (~330 tokens)

Save the scenario's current state as a new immutable, hash-stamped version in the append-only chain. Records a diff vs the parent version and the recomputed top_line, and returns a content `hash` (+ `prev_hash`…

Input parameters:

- `annotation_ids` (array): Optional — annotation ids (pins/highlights/notes on this sim) this version explains. Validated against the sim's annotations; unknown ids are reported in `unlinked` and dropped, never invented.
- `include_diff` (boolean): Inline the full before/after diff in the response (can be very large). Default false: return compact diff_stats only; fetch the full diff via diff_versions when needed.
- `insight_ids` (array): Optional — insight ids (ins_…) this version explains. Validated against the sim's insights; unknown ids are reported in `unlinked` and dropped.
- `scenario_id` (string, required)
- `summary` (string): Human-readable note on what changed, e.g. "Flipped Orange County to D+40".
- `title` (string): Optional SHORT card title (<=80 chars), distinct from the longer summary — what the VERSIONS card shows as its heading, e.g. "Orange County flip".
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_scenarios` (~182 tokens)

Page saved scenarios/simulations in this workspace by updated_at descending and scenario_id ascending, without version blobs. Returns scenario_id, name, level, cycle, contest_id, race_id, tags, durable_id, published…

Input parameters:

- `limit` (integer)
- `offset` (integer): Use previous next_offset with unchanged tags and limit. Ordered by updated_at descending, scenario_id ascending. Restart at 0 after inventory changes.
- `tags` (array): Return only scenarios carrying any of these tags.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `diff_versions` (~180 tokens)

Structured diff between two immutable versions. Raw before/after remain stored override patches (null means no saved override). Precinct cells also include effective_before/effective_after shares with their…

Input parameters:

- `limit` (integer): Maximum changed precinct cells in this page. Summary counts cover the full version pair.
- `offset` (integer): Use precinct_page.next_offset to continue in stable precinct-id order.
- `scenario_id` (string, required)
- `version_a` (string, required)
- `version_b` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_early_voting_turnout` (~384 tokens)

Read early voting, absentee/mail, election-day, and provisional vote-method breakdowns alongside registered-voter, ballots-cast, and undervote/overvote turnout statistics by race and candidate from RoutPoint v2…

Input parameters:

- `county_fips` (string): Optional 5-digit county FIPS code (e.g. "48081", "37021") to scope returns and turnout to one county.
- `district` (string): Optional district code filter for legislative or congressional races (e.g. "10", "11").
- `election_date` (string): Optional election date in YYYY-MM-DD format (e.g. "2024-11-05", "2026-03-03", "2026-08-18"). Defaults to the most recent covered election for the state.
- `election_type` (string): Optional election stage filter.
- `include_precincts` (boolean): When true, include per-precinct early voting, mail, election-day, and turnout breakdowns inside each race.
- `office` (string): Optional office substring filter (e.g. "U.S. Senate", "Governor").
- `office_level` (string): Optional canonical office level filter.
- `source_id` (string): Optional 64-character SHA-256 source identifier for a specific county/state return file.
- `state` (string, required): Two-letter state postal code (e.g. "TX", "NC", "GA", "FL", "PA", "MI", "AZ").
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_county_voter_turnout_and_registration` (~275 tokens)

Read county voter registration, party registration (DEM/REP/UNA/Other), voting-age population, 2024/2022/2020/2026 ballots cast and turnout percentages, 2020-to-2024 partisan swing, and competitiveness tiers across…

Input parameters:

- `county_fips` (string): Optional 5-digit county FIPS code (e.g. "37183" for Wake NC, "04013" for Maricopa AZ).
- `limit` (integer): Maximum counties to return (default 100, max 500).
- `offset` (integer): Pagination offset (default 0).
- `sort` (string): Sort order (default ballots_cast_2024).
- `state` (string): Optional two-letter state code (e.g. "PA", "GA", "NC", "MI", "WI", "AZ", "NV", "TX").
- `tier` (string): Optional competitiveness tier filter.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_state_historical_turnout` (~215 tokens)

Read 50-year statewide prior-cycle turnout and vote totals (1976 through 2026 across all 50 states and DC): ballots cast, registered voters, voting-age population, turnout percentage, DEM/REP vote shares, margin, and…

Input parameters:

- `limit` (integer): Maximum rows to return (default 100, max 500).
- `offset` (integer): Pagination offset (default 0).
- `state` (string): Optional two-letter state code (e.g. "PA", "GA", "MI", "WI", "CA", "TX").
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…
- `year` (integer): Optional election year filter (1976 through 2026).

### `get_live_early_vote_returns` (~272 tokens)

Read live 2026-11-03 General Election pre-election mail ballot requests, mail ballots returned, early in-person ballots, and ballot composition by voter registration party (DEM/REP/UNA/Other) from continuously…

Input parameters:

- `county_fips` (string): Optional 5-digit county FIPS code (e.g. "37183").
- `election_date` (string): Election date in YYYY-MM-DD format (default "2026-11-03").
- `include_precincts` (boolean): With county_fips (Texas): also return cumulative 2026 early ballots per precinct, aggregated from the SOS early-voting roster.
- `limit` (integer): Maximum county rows to return (default 100, max 500).
- `offset` (integer): Pagination offset (default 0).
- `state` (string): Optional two-letter state code (e.g. "NC", "VA", "GA", "PA").
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_precinct_election_returns` (~356 tokens)

Read precinct-level election returns and normalized early-voting, absentee/mail, election-day, and provisional breakdowns across 87.7M precinct rows (linked to mapsmcp_precinct_id) from RoutPoint v2.

Input parameters:

- `contest_id` (integer): Optional RoutPoint contest identifier for single-contest precinct returns.
- `county_fips` (string): Optional 5-digit county FIPS code.
- `district` (string): Optional legislative or congressional district code.
- `election_date` (string): Optional election date in YYYY-MM-DD format.
- `election_id` (integer): Optional RoutPoint election identifier.
- `election_type` (string): Optional election stage (default general).
- `limit` (integer): Maximum rows to return (default 100, max 500).
- `mapsmcp_precinct_id` (string): Optional MapsMCP precinct UUID filter.
- `office` (string): Optional office name filter.
- `office_level` (string): Optional canonical office level.
- `offset` (integer): Pagination offset (default 0).
- `party` (string): Optional party filter.
- `state` (string): Two-letter state postal code (e.g. "TX", "NC", "GA", "PA").
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…
- `year` (integer): Optional election year (e.g. 2024, 2022, 2026).

### `get_county_officials` (~254 tokens)

Read current local, county, municipal, judicial, and school-board officials (40,431 local officials; 97,231 total officials) by 5-digit county FIPS or state from RoutPoint v2.

Input parameters:

- `fips` (string): Optional 5-digit county FIPS code (e.g. "48201" for Harris County TX, "17031" for Cook County IL).
- `limit` (integer): Maximum officials to return (default 100, max 200).
- `office_level` (string): Optional office level filter.
- `offset` (integer): Pagination offset (default 0).
- `party` (string): Optional party filter.
- `q` (string): Optional name or title search query.
- `state` (string): Optional two-letter state code (e.g. "TX", "IL", "CA").
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_county_economic_and_wealth_profile` (~270 tokens)

Read a county’s economic vitality dossier (Census 15-sector business patterns, establishments, employees, payroll, average annual wage, new SOS LLC/Corp formations, SEC Form D capital raises, Form 4/FEC major donors,…

Input parameters:

- `fips` (string): Optional 5-digit county FIPS code (e.g. "06087" for Santa Cruz County CA, "36061" for New York County NY) for a full county dossier.
- `limit` (integer): Maximum counties to return when ranking a state (default 50, max 200).
- `offset` (integer): Pagination offset (default 0).
- `sort` (string): Sort field when ranking counties in a state (default avg_annual_wage_usd).
- `state` (string): Optional two-letter state code (e.g. "CA", "TX", "NY") to rank counties across a state.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `billing_status` (~128 tokens)

BILLING — your subscription state: {billing_enabled, logged_in, plan (personal|team|null), status, active, renews, can_save}. billing_enabled is false until the server is configured with Stripe; while it is false,…

Input parameters:

- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `connection_status` (~118 tokens)

WHO AM I — how THIS session is authenticated and which workspace this request resolved to. Returns authentication fields plus workspace {workspace_id, role, selection_source}. Modern MCP clients select a workspace with…

Input parameters:

- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_candidates` (~173 tokens)

Replace the entire candidate roster for a simulation+level in one call (add / edit / remove / reorder). Each candidate: {id?, name, party, color?, incumbent?}; ids auto-assigned if omitted. Use this to set the real…

Input parameters:

- `candidates` (array, required)
- `expected_version` (string): The last-read updated_at token; custom model writes refuse stale edits.
- `level` (string, required)
- `simulation_id` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_turnout` (~626 tokens)

Set the turnout (mobilization) model. PRESIDENT (default, unchanged): each dial is a percentage-point boost toward toward_candidate_id in counties over an ACS threshold (college = >20% BA share, immig = >15%…

Input parameters:

- `assumption` (string): The modeling assumption in plain words (e.g. "youth demobilization scenario") — stored on the lever's audit entry.
- `clear` (boolean): Race-scoped levels only: true removes every turnout (ballots) factor on this level and its set_turnout levers, returning ballots to the baseline. Vote-share edits stay. Do not combine with turnout_ch…
- `college` (number)
- `counties` (array): Alias of geo_ids for county cohorts.
- `criterion` (object): ACS-style county matcher (statewide levels): e.g. {field:"population", op:"lt", value:30000} = rural counties. Filters WITHIN geo_ids when both are passed; scope a bare criterion with state_fips.
- `geo_ids` (array): Explicit geography cohort — 5-digit county FIPS on statewide levels (e.g. "23005" = Cumberland ME), district external ids on house/state-leg, or precinct external ids (they contain a dash, e.g. "3401…
- `hiUnemp` (number)
- `highHome` (number)
- `immig` (number)
- `level` (string): president (default) = the classic ACS-threshold dials below. Any other level = the race-scoped ballots lever (turnout_change_pct + cohort).
- `lowHome` (number)
- `simulation_id` (string, required)
- `source` (string): Where this user-authored assumption came from (user statement, field report, or source citation) — stored on the lever's audit entry.
- `state_fips` (string): 2-digit state FIPS to scope a criterion cohort to one state (e.g. "23" = Maine).
- `toward_candidate_id` (string)
- `turnout_change_pct` (number): Race-scoped levels only: percent change to BALLOTS cast in the matched geography (-12 = 12% fewer, +8 = 8% more). Composes multiplicatively with prior levers; the factor is clamped to [0.05, 5].
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `add_map_comment` (~1095 tokens)

Leave a Google-Docs-style COMMENT on the scenario map — a threaded, resolvable discussion anchored to a place. CAMPAIGN ISOLATION: when working inside a campaign, pass campaign_id; the scenario must be filed under it…

Input parameters:

- `attachments` (array): Attachments on the message: [{name,url,mime,size,object_path?,kind?}]. An UPLOADED FILE rides as the object_path returned by /api/chat-upload — the bucket is private, so each read mints a fresh short…
- `audience_scope` (object): Who can read this discussion or assignment. Replies and work originating in a discussion inherit its audience.
- `body` (string, required): The comment text (supports @mentions by email/handle).
- `campaign_id` (string): Campaign that owns this War Room message. The simulation must be tagged into it. Omit only for scenario-global discussion.
- `canvass_data` (object): Optional structured data for a field pin: { label, status, support_score, contacted_at, … } — anything your campaign tracks per pin.
- `canvass_kind` (string): Make this a color-coded FIELD-MAP PIN (Map View canvassing) instead of a plain comment: supporter (green) | voter (amber) | door (blue) | target (red) | note (teal). Use with a point anchor (lng+lat)…
- `category` (string): UNIFIED WAR ROOM OBJECTS: what kind of floater this placement is. Every category shares the same anchor model and starts a thread; the category drives the icon, the War Room grouping, and which paylo…
- `feature_id` (string): Anchor to this feature (5-digit county FIPS / precinct external_id / 2-digit state FIPS / district GEOID).
- `icon_type` (string): The icon/subtype within the category — e.g. note: why|risk|fact|question; target: by role; canvass: the drop kind; action: follow_up|call|door|research|decision.
- `idempotency_key` (string): Optional retry key. Replays return the same post and immutable context instead of duplicating the message.
- `lat` (number): Free-point anchor latitude (use with lng).
- `level` (string): Feature anchor level (county|precinct|state|house|state_senate|state_assembly). Defaults to the sim level.
- `lng` (number): Free-point anchor longitude (use with lat).
- `object` (object): Anchor the comment to an OBJECT (a strategy / strategy step / annotation / version / candidate / workspace person / canonical report widget), not a map place — the comment is ABOUT that object. A per…
- `parent_id` (string): Reply to this comment id (creates a thread; inherits the parent's anchor).
- `payload` (object): Category-specific structured fields, stored as-is. Examples — target: { priority, channel, universe_ref }; action: { status, assignee, due_at, priority }; need: { qty, unit, urgency }; event: { event…
- `region_kind` (string): What grain the regions[] ids are (precinct|county|state|district). Defaults to the anchor level.
- `regions` (array): The post's MANY-TO-MANY location — the region/turf/shapefile ids this post covers (a multi-area comment's selected regions, a canvass turf, a target's shapes). ONE comment can anchor to MANY areas: p…
- `report_context` (object): Bind this discussion to the exact immutable report widget the user is viewing. The report and widget must belong to simulation_id and the caller's workspace; the resulting receipt uses that report's…
- `simulation_id` (string, required)
- `title` (string): Optional short name for the post (a strategy/target/event has one; plain chat does not — feeds fall back to a body excerpt). Indexed for full-text search alongside body.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_map_comments` (~213 tokens)

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. Pass campaign_id inside a campaign; only that exact campaign is…

Input parameters:

- `campaign_id` (string): Exact campaign War Room to read. The simulation must be filed under it.
- `comment_ids` (array): Read only these comments (a delta after a live event named them). The reply carries subset:true plus missing[] for ids that are not in this War Room.
- `include_resolved` (boolean): Include resolved comments (default true).
- `simulation_id` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `apply_uniform_swing` (~277 tokens)

Apply an incremental swing in points toward one candidate at the requested office. A saved race_scope restricts writes to that state or district and refuses a different office or unresolved geography. Unscoped and…

Input parameters:

- `as_of` (string): YYYY-MM-DD timeline point at which to evaluate the decayed swing. Default: decay_start_date (full magnitude). Only used when decay_halflife is set.
- `decay_halflife` (number): Optional. Half-life in DAYS: past decay_start_date the applied swing halves every this-many days (exponential fade toward baseline). Omit for a permanent swing (today's behavior).
- `decay_start_date` (string): YYYY-MM-DD the shift lands / peaks (decay measured forward from here). Default: today. Only used when decay_halflife is set.
- `level` (string, required)
- `simulation_id` (string, required)
- `swing_pp` (number, required)
- `toward_candidate_id` (string)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_tally` (~223 tokens)

Compute the current per-candidate tally for a simulation+level. For President: state-aggregated EVs. For others: feature counts. For level:"senate" the default is the 50-state per-candidate race scoreboard; pass…

Input parameters:

- `chamber` (boolean): level:"senate" only — return real chamber control ({D,R,I,seats_up,held_over,majority_status}) via the same math as senate_control, instead of the 50-state race scoreboard.
- `cycle` (integer): Election cycle for chamber control (level:"senate", chamber:true); default 2028. Ignored otherwise.
- `level` (string, required)
- `simulation_id` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_simulations` (~336 tokens)

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). Optional filters narrow a large…

Input parameters:

- `contest_id` (string): Filter to sims bound to this contest_id.
- `cycle` (integer): Filter by election cycle year (e.g. 2028).
- `level` (string): Filter by office/level (e.g. president, senate, house, governor).
- `limit` (integer): Max rows to return (pagination page size).
- `mode` (string): Filter by president modeling mode: general | dem_primary_2028 | rep_primary_2028.
- `offset` (integer): Rows to skip before returning (pagination cursor).
- `owner` (string): Filter to sims created by this member user_id (the stable UUID from list_members) — "my sims" / "Dana's sims". Sims saved before identity stamping have no owner and never match.
- `q` (string): Case-insensitive substring match on the simulation name.
- `race_id` (string): Filter to sims bound to this race_id.
- `updated_since` (string): Only sims modified at or after this ISO timestamp/date.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_simulation` (~201 tokens)

Read the canonical simulation/scenario state, including candidates, race scope, geography overrides, active version identity, provenance, and optional summary or selected dot-path fields.

Input parameters:

- `fields`: Optional read shaping: the string "summary" → the compact identity card (target <5KB); an array of dot-paths (e.g. ["id","mode","primary.asof","primary.grain_pref","updated_at"]) → just those values…
- `simulation_id` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_flipped` (~184 tokens)

List baseline-to-model winner changes. Defaults to state for statewide offices, county for president, and district for house/state legislature. Explicit grain:county|precinct uses canonical integer local votes for a…

Input parameters:

- `grain` (string)
- `level` (string, required)
- `limit` (integer)
- `offset` (integer)
- `simulation_id` (string, required)
- `state` (string): One postal code/FIPS for explicit county/precinct enumeration; may be inferred from a saved state race.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `compare_simulations` (~398 tokens)

Compare two simulations. Without grain, returns the existing chamber/feature comparison. With grain:county|precinct and one state, compares exact saved canonical vote rows: margin(B)-margin(A), winners, flips, ballots…

Input parameters:

- `campaign_id_a` (string): Optional campaign custody for A when the model belongs to multiple readable campaigns. Does not grant access.
- `campaign_id_b` (string): Optional campaign custody for B when the model belongs to multiple readable campaigns. Does not grant access.
- `expected_hash_a` (string): Optional expected immutable version hash for A; mismatches refuse.
- `expected_hash_b` (string): Optional expected immutable version hash for B; mismatches refuse.
- `format` (string): Local comparison table format; CSV/GeoJSON add a private complete-file download URL.
- `grain` (string): Return canonical local outcomes instead of a chamber tally. county|precinct for president/statewide races; district|precinct for House and state-legislative races.
- `level` (string, required)
- `limit` (integer)
- `offset` (integer)
- `simulation_id_a` (string, required)
- `simulation_id_b` (string, required)
- `state` (string): Required for county/precinct comparison: one state postal code or FIPS.
- `version_a` (string): Difference comparison: exact saved version of A. Omit only when its latest version matches the live model.
- `version_b` (string): Difference comparison: exact saved version of B. Omit only when its latest version matches the live model.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `share_simulation` (~235 tokens)

Mint a public, read-only link to the exact canonical scenario/version. Authenticate for durable workspace ownership; revoke_share disables the link.

Input parameters:

- `campaign_id` (string): Optional campaign that contains this simulation. The share is authorized against that campaign and its frozen context/manifest retain the campaign id.
- `include_deltas` (boolean): Include modeled margin/share deltas from the canonical baseline for this exact race.
- `include_impact` (boolean): Include national impact only for an unscoped national model. Ignored for a single-race or primary scope.
- `sections` (array): Optional public-share section allowlist. Single-race shares remain race-scoped even when impact is requested.
- `simulation_id` (string, required)
- `ttl_days` (integer)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `roll_up_race` (~265 tokens)

Roll up precincts to a race outcome under the current simulation. Sums baseline votes for all precincts inside the district boundary, applying overrides in precedence order: a per-precinct override wins, else…

Input parameters:

- `district_id` (string): District external id (for level=president/senate/governor, the state). EM-056: accepts a resolve_geography handle in any format — the slug "us-pa", postal "PA", or FIPS "42" — and also reads geo_id/s…
- `level` (string)
- `region` (string): Optional — with region_group, scope to exactly ONE region in the group (its slug), rolling up only that region's member counties.
- `region_group` (string): Optional saved county-grain workspace map region-group slug. Returns one modeled race rollup per named region.
- `simulation_id` (string, required)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `apply_swing_to_query` (~947 tokens)

Apply a uniform swing or an explicit per-precinct weights vector to a filtered cohort in one atomic call. Weights select only their named IDs, support canonical statewide mechanisms, and optionally rescale a persuasion…

Input parameters:

- `assumption` (string): mode calls that move ballots: stored on the lever's audit entry.
- `filter` (object, required): Precinct property → condition map within the requested geography. Properties: external_id, GEOID, name, state, county, county_fips, shape_id, votes_dem, votes_rep, votes_total, pct_dem_lead, official…
- `level` (string): The office these swung precincts model — folds them into that race's state rollup (same tag as set_precinct_pcts). REQUIRED for mode:"turnout"/"mixed" (the ballots ride that race's lever kernel; pres…
- `max_precincts` (integer): Safety cap on how many precincts get mutated.
- `mix` (number): mode:"mixed" only — the fraction of swing_pp delivered via persuasion (the rest via turnout).
- `mode` (string): HOW the swing happens (EM-008). persuasion = conversion (×2 margin, ballots hold); turnout = one-sided ballots (×1 margin, votes_total moves); mixed = mix persuasion + the rest turnout. Omit for the…
- `simulation_id` (string, required)
- `source` (string): mode calls that move ballots: stored on the lever's audit entry.
- `state` (string, required): Postal, FIPS, or resolve_geography slug ("us-pa") — required, scopes the query (EM-056: all formats accepted; also fills from geo_id).
- `swing_pp` (number): Percentage-point swing toward the target candidate. mode:"turnout": the percent of each precinct's ballots added for the target side.
- `target_margin_pp` (number): Alternative to swing_pp: desired margin of the target party over the other major party, as a percentage of all modeled ballots in the filtered cohort. Requires mode:persuasion, explicit toward_candid…
- `toward_candidate_id` (string): The candidate id receiving the swing (e.g. "D", "R", or a custom id). Inferred to the level's first candidate of opposite party if omitted.
- `weights` (object): Alternative to swing_pp: exact precinct external_id -> signed swing percentage points. Only these IDs change; all must be inside the state/filter with canonical ballots. Requires explicit D/R target,…
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_campaign_onboarding` (~151 tokens)

CAMPAIGN ONBOARDING — guide a campaign manager or joining staff member through setup in their connected AI. Read one step or the complete guide: connection, campaign identity, team access, optional data imports, first…

Input parameters:

- `section` (string): The next conversational step. Read connection first; all returns the complete guide when campaign tools are available.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `help` (~112 tokens)

Orient an AI client to campaign onboarding through get_campaign_onboarding, user-controlled election modeling, candidate and presidential-primary workflows, supported geography, scenario versions, contextual War Room…

Input parameters:

- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `get_catalog` (~355 tokens)

DISCOVERY — browse workflow/category groups, search tool names and descriptions, or fetch one complete schema and AI guide with tool. No arguments returns a compact counted index of the authorized inventory. Core…

Input parameters:

- `category` (string): Browse one category (e.g. "Scenario") in bounded pages. The category count is the full matching inventory, not this page length.
- `cursor` (string): Opaque next_cursor from the previous discovery page. Keep the same query, category and workflow; restart if the authorized catalog changed.
- `expected_catalog_version` (string): Optional catalog_version from a previous tools/list or get_catalog response. Returns catalog_changed so clients can detect schema drift and refresh cached bindings.
- `limit` (integer): Maximum tool entries per discovery page, subject to the response byte budget. Repeat the same filters with next_cursor as cursor until null.
- `query` (string): Text search over this session's retained tool names and descriptions. Ranked: exact name, name substring, then description matches.
- `tool` (string): Exact retained tool name — returns the complete inputSchema and versioned AI guidance matching its use-<tool> MCP prompt when it is present in this session's tools/list.
- `workflow` (string): Opt into a workflow from the compact index. Filters browsing or search within the authorized inventory; never grants access or changes the connection profile.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `list_primary_calendar` (~156 tokens)

Read the 2028 primary calendar with source dates, schedule certainty, modeled delegate coverage, missing jurisdictions, and threshold basis. New calendars include the six DNC-approved early dates; other unverified…

Input parameters:

- `party` (string, required)
- `simulation_id` (string): Optional. If given (and party=D), returns the sim's user-defined Dem calendar when one is set.
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_primary_shares` (~378 tokens)

Set a party's presidential-primary vote shares — one state, or MANY states in a single call. SINGLE STATE: pass `state` + `shares` (unchanged behavior; echoes the full running roll_up). BATCH: pass `states` = { "SC":…

Input parameters:

- `include_rollup` (boolean): BATCH mode only: also return the full delegate roll_up alongside the default trimmed `delta` summary. Ignored in single-state mode (which always echoes the full roll_up).
- `party` (string, required)
- `shares` (object): SINGLE-STATE mode: Map of candidate_id → percentage (0-100), e.g. {"vance": 42, "desantis": 30}. Must reference set_primary_candidates ids. Empty ({}) un-models the state.
- `simulation_id` (string, required)
- `state` (string): SINGLE-STATE mode: State FIPS ("19") or 2-letter abbr ("IA"). Provide `state`+`shares` OR `states`, not both.
- `states` (object): BATCH mode: Map of state (FIPS or 2-letter abbr) → its {candidate_id: pct} shares, e.g. {"SC":{"newsom":31,"harris":24},"NH":{...}}. Writes all states in one atomic call; an invalid state fails the w…
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `roll_up_primary` (~519 tokens)

The running delegate count — OR, for a race-scoped downballot sim, that race's own share rollup. DOWNBALLOT (tk_2110d54c1d0871): when the scenario is race-scoped to a non-presidential office (set_race_scope…

Input parameters:

- `asof` (integer|null): Optional. Contests counted; omit/null = full calendar.
- `by_district` (boolean): Optional (Democratic only). Also return district_allocation: the SAME authoritative count broken out by DNC Rule 14 pool — per state, the district/at-large/PLEO pool sizes, and per congressional dist…
- `include_states` (boolean): Optional. Also return by_state[]: per voted contest — delegates each candidate won, plus eff_shares (the effective per-state candidate shares after the county/precinct rollup), modeled_by ("precinct"…
- `party` (string, required)
- `simulation_id` (string, required)
- `state` (string): Optional. Scope the read to ONE contest (postal/FIPS/name): returns a `state` block with that contest's calendar position, modeling grain, and delegate allocation — and when the state sits BEYOND thi…
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `primary_batch_edit` (~535 tokens)

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. Pass edits:[{op, ...}, …] where each entry carries…

Input parameters:

- `checkpoint_label` (string): Optional label for the pre-batch rollback checkpoint version created on apply.
- `dry_run` (boolean): DEFAULT true — preview only: returns before/after/delta/warnings/errors/viability_flags and writes NOTHING. Pass false to actually apply.
- `edits` (array, required): Ordered heterogeneous list of primary edits, each an object {op, …opArgs}. op is one of set_primary_shares, set_primary_county_shares, set_primary_precinct_shares, set_primary_candidates, set_primary…
- `expected_version_hash` (string): Copy expected_version_hash from the setup dry run to refuse overwriting an intervening edit. Exact already-applied replay returns the existing version.
- `force` (boolean): Apply despite soft WARNINGS (just-over-100 totals, viability flags, mode/geo/calendar notes). Still BLOCKS on hard errors (unknown candidate, malformed edit, shares over 100.5). Default false.
- `party` (string): Default party (d/r) for edits that omit their own party. Defaults to the sim's primary party.
- `setup_evidence` (object): For automatic public-profile initialization: {kind:"primary_profile_start",model:"geographic-context-v1",profile_version:"2026-09-05.v1",ranking:[{id,name}]}. Use the same ordered ranking; the server…
- `simulation_id` (string, required): The scenario/simulation to edit (sim_…).
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `set_race_scope` (~462 tokens)

Bind the canonical scenario to one race/campaign so its map, tally, candidates, War Room context, operations, outputs, and MCP actions share the same race identity.

Input parameters:

- `candidate` (string): A candidate/officeholder name ("Lauren Boebert") — resolved via resolve_candidate to their office + geography + cycle, so you scope their race in ONE call and they are auto-added to the roster as the…
- `candidates` (array): Optional array of real candidates running this race: [{id, name, party, color, incumbent?}]. Overwrites the office's candidate list. If omitted, keeps existing candidates.
- `cycle` (integer)
- `geography_id` (string): Accepts the canonical resolve_geography slug at every office — president "us" / "US"; senate & governor "us-pa", "PA", or FIPS "42"; house "us-ny-cd-17", "NY-17", or the FIPS+CD external_id "3617". S…
- `level` (string): DEPRECATED alias for `office` (kept for back-compat). Prefer `office`.
- `office` (string): The office (seat) this race is for. This is the canonical parameter name; the older `level` is still accepted as an alias.
- `rebind` (boolean): Deliberately re-district a campaign already bound to a DIFFERENT geography. Without it, re-scoping a bound sim is rejected (scope_locked) — a campaign is tied to the district it was created in.
- `simulation_id` (string, required)
- `stage` (string)
- `workspace_scope` (string): Optional workspace for THIS call: use an exact personal/team ID from list_workspaces. Repeat on each call; it does not change the connection default. Must agree with MCP metadata and the effective HT…

### `call_tool` (~94 tokens)

Run any other tool you are authorized for that is not in this list. Find it and its exact input schema with get_catalog (search, a workflow, or {tool: name}), then call call_tool({ name, arguments }). The named tool…

Input parameters:

- `arguments` (object): That tool's arguments, exactly as its get_catalog schema describes.
- `name` (string, required): The exact tool name, as get_catalog returns it.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel#diagnostics

## Score history

- 2026-11-05: 66
- 2026-11-04: 65

## Common questions

### What is the io.github.CloudCorpRecords/racemodel MCP server?

io.github.CloudCorpRecords/racemodel is an MCP server listed in the public MCP registry as io.github.CloudCorpRecords/racemodel. Model and map U.S. election races: scenarios, swing, turnout and precinct-level roll-ups. This page covers its npm package (@reneturcios/racemodel).

### Is the io.github.CloudCorpRecords/racemodel MCP server safe to use?

io.github.CloudCorpRecords/racemodel scores 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.CloudCorpRecords/racemodel MCP server expose?

io.github.CloudCorpRecords/racemodel exposes 48 tools: resolve_geography, resolve_candidate, search_candidates, lookup_address, list_contests, and 43 more. Their descriptions and schemas cost roughly 18,363 tokens of context every time the server is loaded.

### Is the io.github.CloudCorpRecords/racemodel MCP server still maintained?

io.github.CloudCorpRecords/racemodel is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.CloudCorpRecords/racemodel MCP server under?

io.github.CloudCorpRecords/racemodel declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@reneturcios/racemodel
- Socket report: https://socket.dev/npm/package/@reneturcios/racemodel
- Repository: https://github.com/CloudCorpRecords/racemodel
- Changelog RSS feed: https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel.xml
- Changelog JSON feed: https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel.json
- HTML version of this page: https://verifymcp.io/servers/cloudcorprecords-racemodel/reneturcios-racemodel
