Forecast a 2026 race
forecast_raceCurrent VotePredictor forecast for one 2026 US election: win probability, predicted margin, whether it comes from polls or fundamentals, how far it has moved this cycle, and the candidates. Accepts a state name or code ('Ohio', 'OH') or a district ('CA-12'). Returns an explicit refusal for races where a candidate has left the ballot and no forecast is published.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"where": "<where>"
},
"name": "forecast_race"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| where | Yes | Where the race is: a state name ('Ohio'), a two-letter state code ('OH'), or a House district ('CA-12'). Pass what the user said. | |
| office | No | Which office: SEN for U.S. Senate, GOV for governor, HOUSE for a U.S. House district. Any case; 'senate' and 'governor' also work. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Cite this | |
| as_of | Yes | Date of the model run behind this number | |
| office | Yes | ||
| rating | Yes | Safe D / Likely D / Lean D / Toss-up / Lean R / Likely R / Safe R | |
| source | Yes | 'polls' where a poll-driven forecast exists, otherwise 'fundamentals' (lean, incumbency, national environment) | |
| n_polls | Yes | ||
| p_basis | Yes | What set the win probability. 'shop_ratings': an unpolled House district whose probability blends in the rating shops' current ratings while pred_margin stays the lean model's, so the two can point different ways. Say so rather than treating it as an inconsistency. | |
| race_id | Yes | Canonical id, {year}_{OFFICE}_{location} | |
| summary | Yes | One-paragraph answer suitable for reading aloud | |
| location | Yes | State code, or district id for the House | |
| p_dem_win | Yes | Democratic win probability, 0.01-0.99. Never 0 or 1: an election that has not happened is not certain. | |
| state_name | Yes | ||
| pred_margin | Yes | Predicted Dem-minus-Rep margin in points | |
| dem_candidate | Yes | ||
| model_version | Yes | ||
| rep_candidate | Yes | ||
| actual_matchup | Yes | The contest actually on the ballot, when it is not Democrat vs Republican | |
| movement_basis | Yes | ||
| movement_points | Yes | Change in the PUBLISHED win probability, in points, positive toward Democrats, since the current model began (the day after its latest revision). Null when the current model has under two days on file. | |
| no_forecast_code | Yes | independent_contender: no Democrat is on the ballot and an independent challenges the Republican (nobody left the ballot; the model has no slot for an independent). nominee_changed: the polls on file ask about a former nominee. no_major_party_nominee: a side has nobody yet. | |
| forecast_published | Yes | False when this site declines to publish a probability for the race | |
| no_forecast_reason | Yes | Why nothing is published, in words. Do not substitute your own estimate. |