OpenPublica is an MCP server with 15 tools an agent can call, among them discover_meeting_vocabulary, find_governments_by_name, find_governments_by_zip. It answers at https://api.openpublica.com/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 10 of 10 times since 5 September 2026; the last check, on 18 October 2026, succeeded.
Search US local-government meetings: AI summaries, transcripts, and adopted plan documents.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
discover_meeting_vocabulary | Discover the valid category and topic filter values before filtering a search. Meeting `category_tag`s are opaque UUIDs and topics have no fixed list, so you cannot guess them. Call this first to get the real values, then pass a returned `c Inputs: government_id, government_ids, start_date, end_date, topic_limit |
find_governments_by_name | Resolve a place *name* to the governments OpenPublica tracks there. Use this when you know a city/state name but not its coordinates — it returns matching governments with their `account_id` (prefix matches first), which you then pass to th Inputs: query, limit |
find_governments_by_zip | Resolve a ZIP code to nearby tracked governments. Convenience wrapper: geocodes the ZIP, then finds the governments OpenPublica tracks nearest that point. Returns their `account_id`s plus the resolved location. An empty `governments` list m Inputs: postal_code, limit |
find_local_governments | Discover which governments OpenPublica tracks near a coordinate. Returns nearby governments with their `account_id`, which you can pass to the other tools to scope results to a specific city or board. Note OpenPublica only covers a limited Inputs: longitude, latitude, limit |
get_coverage_overview | Get OpenPublica's overall coverage: total governments, states, and meetings indexed. DC is tracked but is not a state, so it is reported separately as `includes_dc` — read the pair as "N states and DC". |
get_document | One document's metadata. Use read_document_pages to read it. If an `availability` key is present, read it before quoting figures: its `problems` are transcription-lint findings, most often a footnote marker that may have been merged into th Inputs: document_id |
get_government_info | Get a tracked government's profile: name, location, and meeting categories. Inputs: government_id, include_weekly_summary |
get_government_stats | Get meeting-activity stats for a government over a recent window. Returns total meeting count, a per-day activity map, and a breakdown of meeting categories — useful for "how active has X been lately?" questions. Inputs: government_id, days |
get_meeting | Get a single meeting's full AI summary, topics, and attendees. Set `include_transcript=true` to also retrieve the complete transcript text for direct quotation. Returns an error object if the meeting is not found. Inputs: meeting_id, include_transcript |
list_government_documents | List a government's adopted plan and budget documents. Each entry carries `covers` — every general-plan element that document answers for. A city that publishes one bound general plan satisfies all eight with the same PDF, so do not conclud Inputs: government_id, include_superseded |
list_recent_meetings | Browse meetings newest-first, optionally filtered by government, type, topic, or date. Use this for "what are the most recent meetings" or to page through a government's history. For topical questions, prefer `search_meetings_semantic`. Inputs: government_id, category_tag, topic, start_date, end_date, limit |
read_document_pages | Read a page range of a document as markdown. Pages are transcribed from rendered pixels, so tables and scanned text come through as text. A page that could not be transcribed appears as a marked hole rather than being silently dropped — if Inputs: document_id, first_page, last_page |
search_documents | Search adopted plan and budget documents, returning page-cited excerpts. Each hit's `text` is a short passage around the match, not the full page — call read_document_pages with the hit's `first_page` to read it in context. Every hit carrie Inputs: query, government_id, limit |
search_meeting_transcript | Find exact quotes/passages inside one meeting's transcript. Use this to pull direct quotations without loading a whole (often very long) transcript: it fetches the transcript server-side, scans it, and returns only the matching passages wit Inputs: meeting_id, query, max_passages, context_chars |
search_meetings_semantic | Search OpenPublica meeting summaries by meaning, exact terms, or both. The best default tool for "what has been said/decided about X" questions. Results carry a `relevance_score` (semantic, 0-1) and/or `keyword_score` (BM25) plus `highlight Inputs: query, government_id, government_ids, start_date, end_date, category_tag |
Every block below points at https://api.openpublica.com/mcp. Pick your client and copy.
claude mcp add --transport http openpublica https://api.openpublica.com/mcp
{
"mcpServers": {
"openpublica": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.openpublica.com/mcp"]
}
}
}{
"mcpServers": {
"openpublica": {
"url": "https://api.openpublica.com/mcp"
}
}
}{
"servers": {
"openpublica": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
}
}{
"context_servers": {
"openpublica": {
"url": "https://api.openpublica.com/mcp"
}
}
}{
"mcpServers": {
"openpublica": {
"serverUrl": "https://api.openpublica.com/mcp"
}
}
}{
"mcpServers": {
"openpublica": {
"url": "https://api.openpublica.com/mcp"
}
}
}name: OpenPublica
version: 0.0.1
schema: v1
mcpServers:
- name: OpenPublica
type: streamable-http
url: https://api.openpublica.com/mcp{
"mcpServers": {
"openpublica": {
"httpUrl": "https://api.openpublica.com/mcp"
}
}
}{
"mcpServers": {
"openpublica": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
}
}{
"mcpServers": {
"openpublica": {
"url": "https://api.openpublica.com/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.openpublica.com%2Fmcp&type=streamable_http&id=openpublica&name=OpenPublica
It answered our last check on 18 October 2026 in 2314 ms. Over 10 checks since 5 September 2026 it answered 10. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by openpublica.com and served from api.openpublica.com, the vendor's own domain: https://api.openpublica.com/mcp.
15, as returned by the server's own tools/list on 31 August 2026: discover_meeting_vocabulary, find_governments_by_name, find_governments_by_zip, find_local_governments, get_coverage_overview, get_document, get_government_info, get_government_stats, and 7 more.
It answered our last check on 18 October 2026 in 2314 ms. Over 10 checks since 5 September 2026 it answered 10.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.openpublica.com/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: com.openpublica. Endpoint host: api.openpublica.com. ARD identifier: urn:air:com.openpublica:mcp:civic-meetings.
First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.