Plain Ballot MCP
A read-only, nonpartisan MCP server that provides tools to list election issues, retrieve candidate ballots for a specific address with verified quotes, and score how well candidates fit a voter's stated priorities using deterministic arithmetic.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://plainballot.com/mcpWhat its tools do
3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- List available election issues and their wording
- Retrieve candidate positions and verified quotes for a specific address
- Score candidate fit based on voter priorities
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- plain-ballot 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 3 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
list_issues — List the issues
The 18 issues Plain Ballot tracks. Each has two sides, each worded the way its own supporters would say it. Use the short side labels ("l" and "r") when giving priorities to score_fit.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_ballot — Get a ballot
Every researched race on the ballot for a U.S. street address, with each choice's position on the issues that office decides, the exact quote, and the source URL.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "Full street address with city, state and ZIP"
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}score_fit — Score fit with the voter's priorities
How closely each choice on the voter's ballot fits the priorities the voter stated, from 0 to 100. Plain arithmetic, the same as plainballot.com: issues where a choice has no sourced position are left out, never guessed. Only use priorities the voter actually gave you.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address",
"priorities"
],
"properties": {
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5
},
"priorities": {
"type": "array",
"items": {
"type": "object",
"required": [
"issue",
"side"
],
"properties": {
"side": {
"type": "string",
"description": "A side label from list_issues, or \"neither side\""
},
"issue": {
"enum": [
"tax",
"wages",
"trade",
"debt",
"housing",
"schools",
"transit",
"safety",
"sentencing",
"immigration",
"guns",
"abortion",
"gender",
"cannabis",
"health",
"energy",
"voting",
"judicial"
],
"type": "string"
},
"strength": {
"enum": [
"lean",
"strong"
],
"type": "string",
"default": "lean"
},
"importance": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"default": "medium"
}
}
},
"maxItems": 18,
"minItems": 1
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 416 ms
- 95th percentile latency
- 416 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 416 ms · metadata changed · 3 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http plain-ballot-mcp https://plainballot.com/mcpCodex
codex mcp add plain-ballot-mcp --url https://plainballot.com/mcpCursor
{
"mcpServers": {
"plain-ballot-mcp": {
"url": "https://plainballot.com/mcp"
}
}
}Cline
{
"mcpServers": {
"plain-ballot-mcp": {
"type": "streamableHttp",
"url": "https://plainballot.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"plain-ballot-mcp": {
"type": "http",
"url": "https://plainballot.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http plain-ballot-mcp https://plainballot.com/mcpClaude Desktop
https://plainballot.com/mcpWindsurf
{
"mcpServers": {
"plain-ballot-mcp": {
"serverUrl": "https://plainballot.com/mcp"
}
}
}Let your agent find its tools
Find servers like Plain Ballot MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.