Koskamo

Politics Rootz MCP

An MCP server providing access to a machine-readable database of US elected officials, candidates, bills, and votes. It exposes tools for searching officials, retrieving full profiles, tracking legislative positions, and accessing origin-provenance data. The server supports both read-only queries and write operations for a 'Citizen Bridge' workspace, allowing users to draft correspondence and create watchlists.

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.

Politics Rootz MCP logo, by Rootz CorpVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Rootz Corp
MCP endpoint (Streamable HTTP)
https://politics.rootz.global/mcp
Vendor documentation

What its tools do

31 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

31 of 31 have a description · 31 of 31 declare behavior hints · 22 of 27 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to politics.rootz.global ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for US officials by name, state, or party
  • Retrieve full profiles including positions and finance
  • Search and read legislative bills and votes
  • Draft correspondence to elected officials

Source and maintenance

Vendor evidenceRegistry 0.3.0
Maintenance checked

Protocol and capabilities

Server
politics-rootz 0.3.0
MCP protocol negotiated in check
2025-11-25
Tools
31 advertised
Resources
2 advertised
Resource templates
3 advertised
Prompts
5 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": true,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Verified, origin-proofed US political data. Tools = actions; Resources = signed records as context (subscribe to get notified when a record changes); Prompts = provenance-enforcing workflows. Every fact traces to a signed source. Open a GET stream to this endpoint (with your Mcp-Session-Id) to receive notifications/resources/updated.

Tools

31 advertised

politics_represent — Find My Representatives
Advertised by the server during the last successful anonymous check.
Advertised read-only

Representation lookup for a US ZIP code: both U.S. Senators, the U.S. House member for that ZIP's congressional district, and the state's statewide executives (governor, attorney general, and similar). Every official carries source_url (the capture origin) and source_link (a public page).

politics_represent input schema
{
  "type": "object",
  "required": [
    "zip"
  ],
  "properties": {
    "zip": {
      "type": "string",
      "description": "5-digit US ZIP code, e.g. 04101"
    }
  }
}
politics_represent annotations
{
  "title": "Find My Representatives",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_search — Search Officials
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search for politicians and elected officials across all levels of US government — federal, state, county, municipal. Filter by name, state, party, level, chamber, or office title. Returns officials with their current office, party, and contact info.

politics_search input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Official name (partial match, e.g. \"Sanders\" or \"Alexandria\")"
    },
    "level": {
      "enum": [
        "federal",
        "state",
        "county",
        "municipal",
        "school"
      ],
      "type": "string",
      "description": "Government level"
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Max results (default 50)"
    },
    "party": {
      "type": "string",
      "description": "Party name (e.g. Democrat, Republican, Independent)"
    },
    "state": {
      "type": "string",
      "description": "State abbreviation (e.g. FL, NY, CA)"
    },
    "office": {
      "type": "string",
      "description": "Office title (e.g. Senator, Mayor, Governor, Town Clerk)"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Pagination offset"
    },
    "status": {
      "enum": [
        "active",
        "candidate",
        "former",
        "defeated"
      ],
      "type": "string",
      "description": "Status (default: active + candidate)"
    },
    "chamber": {
      "enum": [
        "senate",
        "house",
        "council",
        "board"
      ],
      "type": "string",
      "description": "Legislative chamber"
    }
  }
}
politics_search annotations
{
  "title": "Search Officials",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_official — Official Profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full details for a specific official by ID — biography, party, office, policy positions, committee assignments, campaign finance, social media, and contact info. All data includes source URLs for verification.

politics_official input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Official ID from politics_search results"
    },
    "expand": {
      "type": "boolean",
      "description": "Return the fuller record (larger response, untruncated detail). Default false = bounded for AI consumption."
    },
    "bioguide_id": {
      "type": "string",
      "description": "Congress.gov Bioguide ID (e.g. S000033 for Bernie Sanders)"
    },
    "positions_limit": {
      "type": "integer",
      "description": "Max policy positions to return (default 15, max 250). Response is bounded so it fits any AI client tool-result limit."
    },
    "positions_offset": {
      "type": "integer",
      "description": "Pagination offset for positions (page with offset += limit)."
    }
  }
}
politics_official annotations
{
  "title": "Official Profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_resolve — politics_resolve
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolve a messy name string (e.g. "Rep. Johnson", "cornyn") to a canonical official — returns the best match with a 0-1 confidence score and ranked alternatives. Use this first when you have a name but not an ID; then call politics_official with best.id. Add state to disambiguate.

politics_resolve input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Name to resolve (partial/with title/lowercase all OK)"
    },
    "level": {
      "enum": [
        "federal",
        "state",
        "county",
        "municipal",
        "school"
      ],
      "type": "string",
      "description": "Government level to disambiguate"
    },
    "state": {
      "type": "string",
      "description": "State abbreviation to disambiguate (e.g. TX)"
    }
  }
}
politics_resolve annotations
{
  "title": "politics_resolve",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_by_state — Officials by State
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get all current officials for a US state — federal senators and representatives, state legislators, and any indexed local officials. Organized by government level.

politics_by_state input schema
{
  "type": "object",
  "required": [
    "state"
  ],
  "properties": {
    "state": {
      "type": "string",
      "description": "State abbreviation (e.g. FL, CA, TX)"
    }
  }
}
politics_by_state annotations
{
  "title": "Officials by State",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_positions — Policy Positions by Topic
Advertised by the server during the last successful anonymous check.
Advertised read-only

Policy positions across officials by topic, covering who supports or opposes issues such as crypto, stablecoins, AI, healthcare, and guns. Each position carries a source URL and origin hash. Returns compact records by default (id, name, party, state, stance, summary, source) with a total count; the compact parameter controls row detail and offset controls paging.

politics_positions input schema
{
  "type": "object",
  "required": [
    "topic"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 100,
      "description": "Max results per page. Compact: default 100, max 250. Full: default 25, max 50."
    },
    "party": {
      "type": "string",
      "description": "Filter by party (Republican, Democrat)"
    },
    "state": {
      "type": "string",
      "description": "Filter by state (2-letter code)"
    },
    "topic": {
      "type": "string",
      "description": "Policy topic label — use exact stored labels: Cryptocurrency, Technology, Healthcare, Immigration, Climate, Gun Control, Abortion, Taxes, Economy, Education, National Security, Housing, Criminal Justice, Social Security, Voting Rights, Agriculture, Trade"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Pagination offset. Response includes total; page by offset += limit."
    },
    "compact": {
      "type": "boolean",
      "default": true,
      "description": "Compact mode (default). Small bounded record per position; use with offset to page. Set false for full rows (limit capped at 50)."
    }
  }
}
politics_positions annotations
{
  "title": "Policy Positions by Topic",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_stats — Database Statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get summary statistics for the politics.rootz.global database — total officials, breakdown by level, party, state, and chamber. Shows coverage completeness.

politics_stats input schema
{
  "type": "object",
  "properties": {}
}
politics_stats annotations
{
  "title": "Database Statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_timeline — Official Timeline
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full origin timeline for a politician — every page snapshot, every position change, every data source with hash proof. The political wayback machine. Shows what changed, when, and where the data came from.

politics_timeline input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Official ID"
    },
    "limit": {
      "type": "integer",
      "default": 100
    }
  }
}
politics_timeline annotations
{
  "title": "Official Timeline",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_election_2026 — 2026 Election Record
Advertised by the server during the last successful anonymous check.
Advertised read-only

Status of the 2026 general election record: official results sources captured per state, the pre-election baseline, and how fresh each collection is. Counts are unofficial until a state certifies; this service never calls a race. Pass official_id to get what that official's pages said just before the polls opened.

politics_election_2026 input schema
{
  "type": "object",
  "properties": {
    "official_id": {
      "type": "integer",
      "description": "Optional official ID: return that official's election-eve excerpts"
    }
  }
}
politics_election_2026 annotations
{
  "title": "2026 Election Record",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_changes — Recent Changes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get recent changes detected across all politicians: sentences added to or removed from their pages, and pages that changed HTTP status. Each change names the archived records it compares. Topics say what a sentence mentions, never what stance it takes.

politics_changes input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50
    },
    "since": {
      "type": "string",
      "description": "ISO date to filter changes after (e.g. 2026-05-01)"
    }
  }
}
politics_changes annotations
{
  "title": "Recent Changes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_origin — Origin Archive Statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get origin archive statistics — total snapshots, changes detected, origin proofs recorded, unique URLs tracked. Shows the depth of the political wayback machine.

politics_origin input schema
{
  "type": "object",
  "properties": {}
}
politics_origin annotations
{
  "title": "Origin Archive Statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_bridge_create — Create Bridge Workspace
Advertised by the server during the last successful anonymous check.

Create a citizen bridge page — a personalized workspace for tracking representatives, comparing positions, and taking action (write letters, log calls). Returns a shareable URL that any AI agent can collaborate on. Optionally auto-populates with the citizen's state representatives.

politics_bridge_create input schema
{
  "type": "object",
  "properties": {
    "zip": {
      "type": "string",
      "description": "ZIP code for precise district matching"
    },
    "state": {
      "type": "string",
      "description": "State abbreviation — auto-adds federal representatives"
    },
    "topics": {
      "type": "string",
      "description": "Comma-separated topics of interest (e.g. Healthcare,Climate)"
    }
  }
}
politics_bridge_create annotations
{
  "title": "Create Bridge Workspace",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
politics_bridge_session — Read Bridge Workspace
Advertised by the server during the last successful anonymous check.
Advertised read-only

Current state of a citizen bridge workspace: tracked officials, saved comparisons, drafted actions, and messages.

politics_bridge_session input schema
{
  "type": "object",
  "required": [
    "hash"
  ],
  "properties": {
    "hash": {
      "type": "string",
      "description": "Bridge page session hash"
    },
    "agent_id": {
      "type": "string",
      "description": "Your agent identifier for multi-agent tracking"
    }
  }
}
politics_bridge_session annotations
{
  "title": "Read Bridge Workspace",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_bridge_compare — Save Comparison Set
Advertised by the server during the last successful anonymous check.

Compare multiple politicians side-by-side on a bridge page — positions, party, office, campaign finance. Optionally filter to a specific topic.

politics_bridge_compare input schema
{
  "type": "object",
  "required": [
    "hash",
    "official_ids"
  ],
  "properties": {
    "hash": {
      "type": "string",
      "description": "Bridge page session hash"
    },
    "title": {
      "type": "string",
      "description": "Title for this comparison"
    },
    "topic": {
      "type": "string",
      "description": "Optional topic to focus comparison on"
    },
    "official_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Array of official IDs to compare"
    }
  }
}
politics_bridge_compare annotations
{
  "title": "Save Comparison Set",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
politics_bridge_letter — Draft Letter to Official
Advertised by the server during the last successful anonymous check.

Draft a letter to a politician on the citizen's bridge page. The letter gets an origin hash for proof of content. Returns delivery options (email, web form, USPS, phone).

politics_bridge_letter input schema
{
  "type": "object",
  "required": [
    "hash",
    "official_id",
    "body"
  ],
  "properties": {
    "body": {
      "type": "string",
      "description": "Letter body text"
    },
    "hash": {
      "type": "string",
      "description": "Bridge page session hash"
    },
    "subject": {
      "type": "string",
      "description": "Letter subject"
    },
    "action_type": {
      "enum": [
        "letter",
        "email",
        "call",
        "meeting"
      ],
      "type": "string",
      "default": "letter"
    },
    "official_id": {
      "type": "integer",
      "description": "Official to write to"
    }
  }
}
politics_bridge_letter annotations
{
  "title": "Draft Letter to Official",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
politics_bill — Bill Details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Details of a US bill or resolution: vote breakdown, sponsors, cosponsors, status, and origin proof. Returns metadata, a short text excerpt, and a text index by default; full legislative text is omitted because omnibus bills exceed typical token caps. The include_text parameter controls whether the complete text is returned in a single response.

politics_bill input schema
{
  "type": "object",
  "required": [
    "bill_id"
  ],
  "properties": {
    "bill_id": {
      "type": "string",
      "description": "Bill ID (e.g. hr3424-119 for House bill 3424 in 119th Congress)"
    },
    "include_text": {
      "enum": [
        "none",
        "excerpt",
        "full"
      ],
      "type": "string",
      "default": "excerpt",
      "description": "excerpt (default): metadata + ~1.2KB head + text index. none: metadata + index only. full: entire full_text (may exceed the token cap for large bills)."
    }
  }
}
politics_bill annotations
{
  "title": "Bill Details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_bill_toc — Bill Section Index
Advertised by the server during the last successful anonymous check.
Advertised read-only

Section index for a bill: every "SEC. N" heading with its character offset and length, plus the whole-bill origin hash (content_hash) and total text length. A small response that describes the structure of a large bill.

politics_bill_toc input schema
{
  "type": "object",
  "required": [
    "bill_id"
  ],
  "properties": {
    "bill_id": {
      "type": "string",
      "description": "Bill ID (e.g. hr7148-119)"
    }
  }
}
politics_bill_toc annotations
{
  "title": "Bill Section Index",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_bill_text — Bill Text Slice
Advertised by the server during the last successful anonymous check.
Advertised read-only

One signed, bounded slice of a bill's full legislative text, addressed by part number or section label. Each response carries part and total_parts, next_part, the slice's part_sha256, and the whole-bill content_hash. Parts 1 through total_parts concatenated in order hash to content_hash, so a bill too large to return in a single response remains verifiable as complete and unaltered.

politics_bill_text input schema
{
  "type": "object",
  "required": [
    "bill_id"
  ],
  "properties": {
    "part": {
      "type": "integer",
      "default": 1,
      "description": "1-based part number. Response tells you total_parts and next_part."
    },
    "bill_id": {
      "type": "string",
      "description": "Bill ID (e.g. hr7148-119)"
    },
    "section": {
      "type": "string",
      "description": "Jump to a section by label instead of part, e.g. \"2\", \"SEC. 2\", or \"preamble\". Overrides part."
    },
    "max_chars": {
      "type": "integer",
      "default": 30000,
      "description": "Max characters per part (2000–60000). Larger = fewer parts but bigger responses."
    }
  }
}
politics_bill_text annotations
{
  "title": "Bill Text Slice",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_bills_search — Search Bills
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search bills by topic, sponsor, status, or congress. Returns bill metadata and whether full text is available.

politics_bills_search input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 20
    },
    "topic": {
      "type": "string",
      "description": "Topic keyword (e.g. crypto, defense, healthcare)"
    },
    "status": {
      "type": "string",
      "description": "Bill status: introduced, committee, passed_house, passed_senate, enacted"
    },
    "sponsor": {
      "type": "string",
      "description": "Sponsor name or bioguide ID"
    },
    "congress": {
      "type": "integer",
      "default": 119,
      "description": "Congress number (119 = 2025-2026)"
    }
  }
}
politics_bills_search annotations
{
  "title": "Search Bills",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_candidate_feed — Candidate Data Feed
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a candidate's Campaign Data Standard (CDS) feed: a single machine-readable record of who they are, the offices they hold and seek, their positions in their own words (each source-linked), their voting record by reference, and declared data gaps. This is the standardized, signed feed an AI or reporter uses to grab a candidate's positions and verify they are genuine. Every MCP response is signed; the standalone signed feed is also at /official/{id}/candidate.json. Tier is "rootz-compiled" until the campaign claims and signs it ("candidate-signed").

politics_candidate_feed input schema
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Official ID (from politics_search)"
    },
    "expand": {
      "type": "boolean",
      "description": "Deliver more positions inline (larger response). Default false = bounded for AI consumption."
    },
    "bioguide_id": {
      "type": "string",
      "description": "Bioguide ID (alternative to id)"
    },
    "positions_limit": {
      "type": "integer",
      "description": "Max positions in the delivered feed (default 15, max 500). The complete signed feed (all positions) is always at signed_feed_url."
    },
    "positions_offset": {
      "type": "integer",
      "description": "Pagination offset for positions."
    }
  }
}
politics_candidate_feed annotations
{
  "title": "Candidate Data Feed",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_alignment — politics_alignment
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare an official's stated positions against their actual roll-call votes, per topic — what they SAY vs how they VOTED, both source-linked. Does NOT label agreement/contradiction (you judge and cite); surfaces the juxtaposition no unsigned source can. Use official id.

politics_alignment input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Official ID"
    }
  }
}
politics_alignment annotations
{
  "title": "politics_alignment",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_coverage — politics_coverage
Advertised by the server during the last successful anonymous check.
Advertised read-only

Coverage map: per-state, per-dataset completeness (officials by level, positions, finance, state-legislative votes). Shows WHERE the data is deep (federal — complete) vs sparse (local). Use it to know whether silence means "no data captured" rather than "nothing there".

politics_coverage input schema
{
  "type": "object",
  "properties": {}
}
politics_coverage annotations
{
  "title": "politics_coverage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_methodology — Collection Methodology
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full transparency methodology — how we collect, assess, extract, sign, and verify political data. Includes quality assessment algorithm (signals + weights), trust levels, data sources, cron schedule, and what we can and cannot prove. Open and auditable.

politics_methodology input schema
{
  "type": "object",
  "properties": {}
}
politics_methodology annotations
{
  "title": "Collection Methodology",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_provenance — Provenance Chain
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the complete origin proof chain for an official — every data source, content hash, quality assessment, snapshot history, and verification instructions. Proves where every piece of data came from.

politics_provenance input schema
{
  "type": "object",
  "required": [
    "official_id"
  ],
  "properties": {
    "official_id": {
      "type": "integer",
      "description": "Official ID"
    }
  }
}
politics_provenance annotations
{
  "title": "Provenance Chain",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_speeches — Congressional Speeches
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search Congressional Record floor speeches by official, topic, date range, or keyword. Returns verbatim text from the official government record with origin proof hash. Every speech is directly citable with a GPO source URL.

politics_speeches input schema
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "description": "Full-text search within speech content"
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "description": "Max results"
    },
    "topic": {
      "type": "string",
      "description": "Topic (Cryptocurrency, Healthcare, Immigration, etc.)"
    },
    "chamber": {
      "enum": [
        "house",
        "senate"
      ],
      "type": "string",
      "description": "Filter by chamber"
    },
    "date_to": {
      "type": "string",
      "description": "End date ISO"
    },
    "date_from": {
      "type": "string",
      "description": "Start date ISO (e.g. 2025-01-03)"
    },
    "bioguide_id": {
      "type": "string",
      "description": "Bioguide ID (e.g. L000571 for Lummis, S001184 for Tim Scott)"
    },
    "official_id": {
      "type": "integer",
      "description": "Official ID from politics_search"
    }
  }
}
politics_speeches annotations
{
  "title": "Congressional Speeches",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_candidates — Federal Candidates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Registered federal candidates for the 2026 election cycle, filterable by state, office (senate, house, president), party, or presence of a campaign URL. Returns campaign website, social media links, FEC data, and position and speech counts.

politics_candidates input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 50,
      "description": "Max results (default 50)"
    },
    "party": {
      "type": "string",
      "description": "Filter by party (Democrat, Republican, Libertarian, etc.)"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state code (e.g. ME, CA, TX)"
    },
    "office": {
      "enum": [
        "senate",
        "house",
        "president"
      ],
      "type": "string",
      "description": "Filter by office"
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "description": "Pagination offset"
    },
    "has_url": {
      "type": "boolean",
      "description": "Only return candidates with campaign websites"
    }
  }
}
politics_candidates annotations
{
  "title": "Federal Candidates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_state_votes — State Legislature Votes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search state legislature votes across 26+ US states. Filter by state, topic, or date. Returns bill title, vote result, yes/no counts.

politics_state_votes input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "default": 30,
      "description": "Look back N days (default 30, max 365)"
    },
    "limit": {
      "type": "integer",
      "default": 30,
      "description": "Max results (default 30, max 100)"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state code (CA, TX, NY, etc.)"
    },
    "topic": {
      "type": "string",
      "description": "Topic filter (Healthcare, Economy, Education, etc.)"
    },
    "bill_id": {
      "type": "string",
      "description": "Specific bill identifier (e.g. HB 1234)"
    }
  }
}
politics_state_votes annotations
{
  "title": "State Legislature Votes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_municipalities — Search Municipalities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search US municipalities (cities, towns, villages, counties). Every incorporated place in the US with coordinates. Filter by state, name, or type. Returns website, platform, meeting calendar, and board/commission info where available.

politics_municipalities input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Municipality name (partial match)"
    },
    "type": {
      "enum": [
        "city",
        "town",
        "village",
        "borough",
        "county",
        "cdp",
        "place",
        "charter_township"
      ],
      "type": "string",
      "description": "Place type: city, town, village, borough, county, cdp"
    },
    "limit": {
      "type": "integer",
      "default": 30,
      "description": "Max results (default 30)"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state code (MA, CA, TX, etc.)"
    }
  }
}
politics_municipalities annotations
{
  "title": "Search Municipalities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_create_watchlist — Create Watchlist
Advertised by the server during the last successful anonymous check.

Creates a Just the Facts watchlist bound to an email address, covering any combination of specific officials, issue topics, and a town with state for local meetings, agendas, and minutes. Sends a double-opt-in confirmation email and returns the bridge workspace URL.

politics_create_watchlist input schema
{
  "type": "object",
  "required": [
    "email"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Watchlist name"
    },
    "town": {
      "type": "string",
      "description": "Town/city to track local meetings (e.g. Fort Myers)"
    },
    "email": {
      "type": "string",
      "description": "Subscriber email (required)"
    },
    "state": {
      "type": "string",
      "description": "2-letter state for the town"
    },
    "topics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Issue topics (e.g. Crypto, Healthcare)"
    },
    "cadence": {
      "enum": [
        "daily",
        "weekly"
      ],
      "type": "string",
      "description": "Digest frequency"
    },
    "officials": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Official IDs to track"
    },
    "report_prompt": {
      "type": "string",
      "description": "Plain-English brief for how the digest is written"
    }
  }
}
politics_create_watchlist annotations
{
  "title": "Create Watchlist",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
politics_polls — politics_polls
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the SIGNED public-poll archive. Unlike aggregators, every poll keeps the EXACT question wording, population base (LV/RV/adults), sample size, margin of error, mode, and per-option toplines — first-party sourced, snapshot-hashed, and cryptographically signed (verifiable). Filter by race_key, state, subject (e.g. "approval", "Senate"), pollster, or since (ISO date). Returns a list; call politics_poll {id} for full detail + signature. Use this when a question hinges on what a poll ACTUALLY asked vs how it was reported.

politics_polls input schema
{
  "type": "object",
  "properties": {
    "cycle": {
      "type": "integer",
      "description": "Election/survey cycle year (e.g. 2026)"
    },
    "limit": {
      "type": "integer",
      "default": 50
    },
    "since": {
      "type": "string",
      "description": "Only polls whose field_end >= this ISO date (e.g. 2026-08-01)"
    },
    "state": {
      "type": "string",
      "description": "2-letter state (omit for national)"
    },
    "offset": {
      "type": "integer",
      "default": 0
    },
    "subject": {
      "type": "string",
      "description": "Subject substring (e.g. \"approval\", \"TX Senate\", \"immigration\")"
    },
    "pollster": {
      "type": "string",
      "description": "Pollster substring (e.g. \"Quinnipiac\", \"Emerson\")"
    },
    "race_key": {
      "type": "string",
      "description": "Stable contest key to get every poll of one race over time (e.g. us-pres-approval-trump)"
    }
  }
}
politics_polls annotations
{
  "title": "politics_polls",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
politics_poll — politics_poll
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one poll in full: pollster, sponsor, field dates, population, sample size, margin of error, mode, the VERBATIM question(s) asked, per-option toplines, the first-party source_url, and the signature (poll_proof) that binds the exact wording and numbers. This is the ground truth to check any claim about a poll against.

politics_poll input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Poll ID from politics_polls results"
    }
  }
}
politics_poll annotations
{
  "title": "politics_poll",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

5 advertised

compare_officials

Advertised by the server during the last successful anonymous check.

Side-by-side comparison of 2+ US officials on a topic, using only verified, source-cited data (positions, votes with official results, finance).

officials
Names or IDs, comma-separated (e.g. "Warren, Markey") (required)
topic
Issue to focus on (optional)
position_evolution

Advertised by the server during the last successful anonymous check.

Trace how an official's position on a topic changed over time, with the provenance (snapshots, diffs, source hashes).

official
Name or ID (required)
topic
Issue (required)
find_the_vote

Advertised by the server during the last successful anonymous check.

Find the congressional vote(s) matching a plain-English description and report the OFFICIAL result + bill text + a verify link.

description
e.g. 'the vote to stop the war in Iran' (required)
draft_constituent_letter

Advertised by the server during the last successful anonymous check.

Draft a constituent letter to an official grounded only in their verified record, with citations.

official
Name or ID (required)
issue
What the letter is about (required)
tone
e.g. respectful, firm (optional)
who_represents

Advertised by the server during the last successful anonymous check.

Identify who represents a person (federal + statewide), with profile links, and offer to set up tracking.

state
2-letter state code (required)
zip
ZIP for district precision (optional)

Resources

2 advertised

Methodology

Advertised by the server during the last successful anonymous check.

How we collect, assess, sign, and verify — open + auditable.

Methodology URI
politics://methodology

MIME type: application/json

Coverage stats

Advertised by the server during the last successful anonymous check.

What the dataset covers right now.

Coverage stats URI
politics://coverage

MIME type: application/json

Official record

Advertised by the server during the last successful anonymous check.

Verified profile + positions + provenance for one official (by numeric id).

Official record URI template
politics://official/{id}

MIME type: text/markdown

Bill

Advertised by the server during the last successful anonymous check.

Bill metadata + text + sponsor by internal bill id.

Bill URI template
politics://bill/{id}

MIME type: text/markdown

Topic positions

Advertised by the server during the last successful anonymous check.

Officials who addressed a topic, in their own words, with sources.

Topic positions URI template
politics://topic/{topic}

MIME type: application/json

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.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-06: 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
604 ms
95th percentile latency
604 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 604 ms · metadata changed · 31 tool(s), 2 resource(s), 3 resource template(s), 5 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http politics-rootz-mcp https://politics.rootz.global/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add politics-rootz-mcp --url https://politics.rootz.global/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable politics-rootz-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "politics-rootz-mcp": {
      "url": "https://politics.rootz.global/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "politics-rootz-mcp": {
      "type": "streamableHttp",
      "url": "https://politics.rootz.global/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start politics-rootz-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "politics-rootz-mcp": {
      "type": "http",
      "url": "https://politics.rootz.global/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http politics-rootz-mcp https://politics.rootz.global/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://politics.rootz.global/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "politics-rootz-mcp": {
      "serverUrl": "https://politics.rootz.global/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Politics Rootz MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Politics Rootz MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing