Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,558Letters: 14Defects: 1,331counted 4 min ago
teppi

Server definition

Hash
sha256:64f5e5418a6e30e388fa646218d5edfa3580e37299b986b4d8dff898d818f24e
What it is
What a remote MCP server returned when asked what it offers: 30 tools

The blob, as servednamed by its sha256

{ "instructions": "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": [ { "description": "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.", "inputSchema": { "properties": { "id": { "description": "Official ID", "type": "integer" } }, "required": [ "id" ], "type": "object" }, "name": "politics_alignment", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "bill_id": { "description": "Bill ID (e.g. hr3424-119 for House bill 3424 in 119th Congress)", "type": "string" }, "include_text": { "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).", "enum": [ "none", "excerpt", "full" ], "type": "string" } }, "required": [ "bill_id" ], "type": "object" }, "name": "politics_bill", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "bill_id": { "description": "Bill ID (e.g. hr7148-119)", "type": "string" }, "max_chars": { "default": 30000, "description": "Max characters per part (2000–60000). Larger = fewer parts but bigger responses.", "type": "integer" }, "part": { "default": 1, "description": "1-based part number. Response tells you total_parts and next_part.", "type": "integer" }, "section": { "description": "Jump to a section by label instead of part, e.g. \"2\", \"SEC. 2\", or \"preamble\". Overrides part.", "type": "string" } }, "required": [ "bill_id" ], "type": "object" }, "name": "politics_bill_text", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "bill_id": { "description": "Bill ID (e.g. hr7148-119)", "type": "string" } }, "required": [ "bill_id" ], "type": "object" }, "name": "politics_bill_toc", "outputSchema": null }, { "description": "Search bills by topic, sponsor, status, or congress. Returns bill metadata and whether full text is available.", "inputSchema": { "properties": { "congress": { "default": 119, "description": "Congress number (119 = 2025-2026)", "type": "integer" }, "limit": { "default": 20, "type": "integer" }, "sponsor": { "description": "Sponsor name or bioguide ID", "type": "string" }, "status": { "description": "Bill status: introduced, committee, passed_house, passed_senate, enacted", "type": "string" }, "topic": { "description": "Topic keyword (e.g. crypto, defense, healthcare)", "type": "string" } }, "type": "object" }, "name": "politics_bills_search", "outputSchema": null }, { "description": "Compare multiple politicians side-by-side on a bridge page — positions, party, office, campaign finance. Optionally filter to a specific topic.", "inputSchema": { "properties": { "hash": { "description": "Bridge page session hash", "type": "string" }, "official_ids": { "description": "Array of official IDs to compare", "items": { "type": "integer" }, "type": "array" }, "title": { "description": "Title for this comparison", "type": "string" }, "topic": { "description": "Optional topic to focus comparison on", "type": "string" } }, "required": [ "hash", "official_ids" ], "type": "object" }, "name": "politics_bridge_compare", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "state": { "description": "State abbreviation — auto-adds federal representatives", "type": "string" }, "topics": { "description": "Comma-separated topics of interest (e.g. Healthcare,Climate)", "type": "string" }, "zip": { "description": "ZIP code for precise district matching", "type": "string" } }, "type": "object" }, "name": "politics_bridge_create", "outputSchema": null }, { "description": "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).", "inputSchema": { "properties": { "action_type": { "default": "letter", "enum": [ "letter", "email", "call", "meeting" ], "type": "string" }, "body": { "description": "Letter body text", "type": "string" }, "hash": { "description": "Bridge page session hash", "type": "string" }, "official_id": { "description": "Official to write to", "type": "integer" }, "subject": { "description": "Letter subject", "type": "string" } }, "required": [ "hash", "official_id", "body" ], "type": "object" }, "name": "politics_bridge_letter", "outputSchema": null }, { "description": "Current state of a citizen bridge workspace: tracked officials, saved comparisons, drafted actions, and messages.", "inputSchema": { "properties": { "agent_id": { "description": "Your agent identifier for multi-agent tracking", "type": "string" }, "hash": { "description": "Bridge page session hash", "type": "string" } }, "required": [ "hash" ], "type": "object" }, "name": "politics_bridge_session", "outputSchema": null }, { "description": "Get all current officials for a US state — federal senators and representatives, state legislators, and any indexed local officials. Organized by government level.", "inputSchema": { "properties": { "state": { "description": "State abbreviation (e.g. FL, CA, TX)", "type": "string" } }, "required": [ "state" ], "type": "object" }, "name": "politics_by_state", "outputSchema": null }, { "description": "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\").", "inputSchema": { "properties": { "bioguide_id": { "description": "Bioguide ID (alternative to id)", "type": "string" }, "expand": { "description": "Deliver more positions inline (larger response). Default false = bounded for AI consumption.", "type": "boolean" }, "id": { "description": "Official ID (from politics_search)", "type": "integer" }, "positions_limit": { "description": "Max positions in the delivered feed (default 15, max 500). The complete signed feed (all positions) is always at signed_feed_url.", "type": "integer" }, "positions_offset": { "description": "Pagination offset for positions.", "type": "integer" } }, "type": "object" }, "name": "politics_candidate_feed", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "has_url": { "description": "Only return candidates with campaign websites", "type": "boolean" }, "limit": { "default": 50, "description": "Max results (default 50)", "type": "integer" }, "office": { "description": "Filter by office", "enum": [ "senate", "house", "president" ], "type": "string" }, "offset": { "default": 0, "description": "Pagination offset", "type": "integer" }, "party": { "description": "Filter by party (Democrat, Republican, Libertarian, etc.)", "type": "string" }, "state": { "description": "Two-letter state code (e.g. ME, CA, TX)", "type": "string" } }, "type": "object" }, "name": "politics_candidates", "outputSchema": null }, { "description": "Get recent changes detected across all politicians — position shifts, website updates, new data. Each change links to the before/after snapshots with origin proof.", "inputSchema": { "properties": { "limit": { "default": 50, "type": "integer" }, "since": { "description": "ISO date to filter changes after (e.g. 2026-05-01)", "type": "string" } }, "type": "object" }, "name": "politics_changes", "outputSchema": null }, { "description": "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\".", "inputSchema": { "properties": {}, "type": "object" }, "name": "politics_coverage", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "cadence": { "description": "Digest frequency", "enum": [ "daily", "weekly" ], "type": "string" }, "email": { "description": "Subscriber email (required)", "type": "string" }, "name": { "description": "Watchlist name", "type": "string" }, "officials": { "description": "Official IDs to track", "items": { "type": "integer" }, "type": "array" }, "report_prompt": { "description": "Plain-English brief for how the digest is written", "type": "string" }, "state": { "description": "2-letter state for the town", "type": "string" }, "topics": { "description": "Issue topics (e.g. Crypto, Healthcare)", "items": { "type": "string" }, "type": "array" }, "town": { "description": "Town/city to track local meetings (e.g. Fort Myers)", "type": "string" } }, "required": [ "email" ], "type": "object" }, "name": "politics_create_watchlist", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": {}, "type": "object" }, "name": "politics_methodology", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "limit": { "default": 30, "description": "Max results (default 30)", "type": "integer" }, "name": { "description": "Municipality name (partial match)", "type": "string" }, "state": { "description": "Two-letter state code (MA, CA, TX, etc.)", "type": "string" }, "type": { "description": "Place type: city, town, village, borough, county, cdp", "enum": [ "city", "town", "village", "borough", "county", "cdp", "place", "charter_township" ], "type": "string" } }, "type": "object" }, "name": "politics_municipalities", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "bioguide_id": { "description": "Congress.gov Bioguide ID (e.g. S000033 for Bernie Sanders)", "type": "string" }, "expand": { "description": "Return the fuller record (larger response, untruncated detail). Default false = bounded for AI consumption.", "type": "boolean" }, "id": { "description": "Official ID from politics_search results", "type": "integer" }, "positions_limit": { "description": "Max policy positions to return (default 15, max 250). Response is bounded so it fits any AI client tool-result limit.", "type": "integer" }, "positions_offset": { "description": "Pagination offset for positions (page with offset += limit).", "type": "integer" } }, "type": "object" }, "name": "politics_official", "outputSchema": null }, { "description": "Get origin archive statistics — total snapshots, changes detected, origin proofs recorded, unique URLs tracked. Shows the depth of the political wayback machine.", "inputSchema": { "properties": {}, "type": "object" }, "name": "politics_origin", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "id": { "description": "Poll ID from politics_polls results", "type": "integer" } }, "required": [ "id" ], "type": "object" }, "name": "politics_poll", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "cycle": { "description": "Election/survey cycle year (e.g. 2026)", "type": "integer" }, "limit": { "default": 50, "type": "integer" }, "offset": { "default": 0, "type": "integer" }, "pollster": { "description": "Pollster substring (e.g. \"Quinnipiac\", \"Emerson\")", "type": "string" }, "race_key": { "description": "Stable contest key to get every poll of one race over time (e.g. us-pres-approval-trump)", "type": "string" }, "since": { "description": "Only polls whose field_end >= this ISO date (e.g. 2026-08-01)", "type": "string" }, "state": { "description": "2-letter state (omit for national)", "type": "string" }, "subject": { "description": "Subject substring (e.g. \"approval\", \"TX Senate\", \"immigration\")", "type": "string" } }, "type": "object" }, "name": "politics_polls", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "compact": { "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).", "type": "boolean" }, "limit": { "default": 100, "description": "Max results per page. Compact: default 100, max 250. Full: default 25, max 50.", "type": "integer" }, "offset": { "default": 0, "description": "Pagination offset. Response includes total; page by offset += limit.", "type": "integer" }, "party": { "description": "Filter by party (Republican, Democrat)", "type": "string" }, "state": { "description": "Filter by state (2-letter code)", "type": "string" }, "topic": { "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", "type": "string" } }, "required": [ "topic" ], "type": "object" }, "name": "politics_positions", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "official_id": { "description": "Official ID", "type": "integer" } }, "required": [ "official_id" ], "type": "object" }, "name": "politics_provenance", "outputSchema": null }, { "description": "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).", "inputSchema": { "properties": { "zip": { "description": "5-digit US ZIP code, e.g. 04101", "type": "string" } }, "required": [ "zip" ], "type": "object" }, "name": "politics_represent", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "level": { "description": "Government level to disambiguate", "enum": [ "federal", "state", "county", "municipal", "school" ], "type": "string" }, "name": { "description": "Name to resolve (partial/with title/lowercase all OK)", "type": "string" }, "state": { "description": "State abbreviation to disambiguate (e.g. TX)", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "politics_resolve", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "chamber": { "description": "Legislative chamber", "enum": [ "senate", "house", "council", "board" ], "type": "string" }, "level": { "description": "Government level", "enum": [ "federal", "state", "county", "municipal", "school" ], "type": "string" }, "limit": { "default": 50, "description": "Max results (default 50)", "type": "integer" }, "name": { "description": "Official name (partial match, e.g. \"Sanders\" or \"Alexandria\")", "type": "string" }, "office": { "description": "Office title (e.g. Senator, Mayor, Governor, Town Clerk)", "type": "string" }, "offset": { "default": 0, "description": "Pagination offset", "type": "integer" }, "party": { "description": "Party name (e.g. Democrat, Republican, Independent)", "type": "string" }, "state": { "description": "State abbreviation (e.g. FL, NY, CA)", "type": "string" }, "status": { "description": "Status (default: active + candidate)", "enum": [ "active", "candidate", "former", "defeated" ], "type": "string" } }, "type": "object" }, "name": "politics_search", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "bioguide_id": { "description": "Bioguide ID (e.g. L000571 for Lummis, S001184 for Tim Scott)", "type": "string" }, "chamber": { "description": "Filter by chamber", "enum": [ "house", "senate" ], "type": "string" }, "date_from": { "description": "Start date ISO (e.g. 2025-01-03)", "type": "string" }, "date_to": { "description": "End date ISO", "type": "string" }, "limit": { "default": 20, "description": "Max results", "type": "integer" }, "official_id": { "description": "Official ID from politics_search", "type": "integer" }, "text": { "description": "Full-text search within speech content", "type": "string" }, "topic": { "description": "Topic (Cryptocurrency, Healthcare, Immigration, etc.)", "type": "string" } }, "type": "object" }, "name": "politics_speeches", "outputSchema": null }, { "description": "Search state legislature votes across 26+ US states. Filter by state, topic, or date. Returns bill title, vote result, yes/no counts.", "inputSchema": { "properties": { "bill_id": { "description": "Specific bill identifier (e.g. HB 1234)", "type": "string" }, "days": { "default": 30, "description": "Look back N days (default 30, max 365)", "type": "integer" }, "limit": { "default": 30, "description": "Max results (default 30, max 100)", "type": "integer" }, "state": { "description": "Two-letter state code (CA, TX, NY, etc.)", "type": "string" }, "topic": { "description": "Topic filter (Healthcare, Economy, Education, etc.)", "type": "string" } }, "type": "object" }, "name": "politics_state_votes", "outputSchema": null }, { "description": "Get summary statistics for the politics.rootz.global database — total officials, breakdown by level, party, state, and chamber. Shows coverage completeness.", "inputSchema": { "properties": {}, "type": "object" }, "name": "politics_stats", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "id": { "description": "Official ID", "type": "integer" }, "limit": { "default": 100, "type": "integer" } }, "required": [ "id" ], "type": "object" }, "name": "politics_timeline", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:64f5e5418a6e30e388fa646218d5edfa3580e37299b986b4d8dff898d818f24e | sha256sum