mcpbeat Sign in

OpenPublica MCP Server

by openpublica Your server? Claim it
answering

OpenPublica is answering right now. Last checked 9 min ago. It exposes 16 tools.

Search US local-government meetings: AI summaries, transcripts, and adopted plan documents.

Uptime history 50 days of history · worst day 99%
50 days agonow
100.0%
Uptime 24h
92 of 92 checks
16
Tools
read from the server
1150 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 20

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 13 September 2026. No other catalogue keeps this.

17 Oct 3 tool descriptions were rewritten4 times that day search_meeting_content, search_meetings_semantic, search_meeting_transcript
17 Oct 2 tools changed the parameters they ask for search_meetings_semantic, search_meeting_transcript
17 Oct a tool appeared search_meeting_content
17 Oct a tool changed version
10 Oct a tool changed the parameters it asks for search_meetings_semantic
10 Oct a tool description was rewritten search_meetings_semantic
15 Sep 4 tools disappeared get_meeting_officials, get_official, list_government_officials and 1 more
15 Sep a tool description was rewritten get_meeting
13 Sep 4 tools appeared get_meeting_officials, get_official, list_government_officials and 1 more
13 Sep a tool description was rewritten get_meeting_officials
and 1 more, back to 13 September 2026

Tools have disappeared from this server

A tool that vanishes takes a piece of your agent with it, and the change arrives silently. Watch this server and every such change lands in your inbox.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 9 min ago.

run in your terminal
claude mcp add civic-meetings --transport http https://api.openpublica.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "civic-meetings": {
      "url": "https://api.openpublica.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.civic-meetings]
url = "https://api.openpublica.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "civic-meetings": {
      "url": "https://api.openpublica.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "civic-meetings": {
      "url": "https://api.openpublica.com/mcp"
    }
  }
}

Available tools 16

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

government
get_government_info
Get a tracked government's profile: name, location, and meeting categories.
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.
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 conclude an element is unpublished because no entry is named after it. `status` says what the entry offers: `converted` is searchable and readable; `superseded` is a retired edition, still stored but not searchable; and **`failed` means we hold this document and could not read it — it is not evidence the city published nothing.** Cite `source_url` in that case; it is always the city's own copy. An `availability` block appears ONLY when something is wrong with a document, and `availability.reason` says what. No `availability` key means there is nothing to report.
meeting
get_meeting
Get a single meeting's full AI summary and topics. Set `include_transcript=true` to also retrieve the complete transcript text for direct quotation. Returns an error object if the meeting is not found.
search_meeting_content
Search public meetings once across metadata and stored transcript text. Returns one card per meeting and native pagination metadata, without a total. Small current-text previews can be absent and do not establish timestamps. Text relevance can lag updates or match across untimed boundaries. Source transcripts searches stored text, including meetings without timed proof.
search_meeting_transcript
Use unified stored-text search inside one currently public meeting. Returns an optional current-text preview, without resolving timing. A text match can lack a literal preview; use get_meeting(include_transcript=true) for full source retrieval. This does not run a separate local scan or fuzzy passage ranking.
document
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 the number it annotates. No such key means the document transcribed cleanly.
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 you see one, say so instead of reading past it. Text is assembled from page windows, so `covered` may be slightly wider than what you asked for; cite the page numbers in `covered`, not `requested`.
governments
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 the search/list tools. Prefer this over `find_local_governments` when starting from a name rather than a latitude/longitude.
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 means none are tracked near that ZIP yet.
coverage
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".
discover
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 `category_tag` (from `categories[].tags`) or `topic` string into `search_meetings_semantic` / `list_recent_meetings`. Scope with a government and/or date range; calls without explicit dates default to a recent window (returned as `default_window_days`).
documents
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 carries `first_page`/`last_page` and `source_url`. Quote those when citing: the page number is what makes the claim checkable against the city's own copy. This is word matching, not semantic search — try the terms a plan would actually use. Only currently-served documents are searchable, so an empty result is not evidence the government has no such policy; check list_government_documents for what is held and what could not be read. A hit with `document_complete: false` comes from a document with transcription findings. Verify it against `source_url` before quoting a number from it.
local
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 set of US localities; an empty result means none are tracked near that point yet.
meetings
search_meetings_semantic
Find AI summaries by meaning; use search_meeting_content for stored words. Results carry relevance_score and a summary preview. Narrow with government, category_tag, topic or dates; get_meeting retrieves the full summary.
recent
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`.

Tools removed

Tools this server used to expose. Anything built against them stopped working on the day they went.

get_meeting_officials
removed 15 Sep 2026
get_official
removed 15 Sep 2026
list_government_officials
removed 15 Sep 2026
list_official_meetings
removed 15 Sep 2026

Endpoints

URLTransportStateLatencyChecked
https://api.openpublica.com/mcp streamable-http answering 636 ms 9 min ago

Alternatives to OpenPublica

same job, measured the same way
NextBid — Government Bids for AI
by nextbid

Search open U.S. federal, state and local government bids and read their documents. Paid; trial.

14 tools answering
NoteCube
by notecube

Your NoteCube meeting and lecture recordings: search, read transcripts, and write cited documents.

answering
OpenCityRecord
by opencityrecord

City council meetings, transcripts, votes, and documents for U.S. cities, with citations.

answering
Meeting Notes Transcript Summary
by theluckystrike

Turn meeting notes or transcripts into a clean structured summary document from chat.

14 tools answering
Shorty
by aishorty

Summarize and transcribe videos, audio, documents and web pages; subtitles; search your library.

answering
MCP Documentation Server
by andrea9293

Local-first document management and semantic search for AI coding agents

63 installs/wk local only
InterMIND
by intermind

Your InterMIND meetings, recaps, transcripts, channels and documents, from your assistant.

answering
Processing
by skavio-eu

OAuth-authenticated document, PDF, media and transcription processing with shared USDC credits.

answering

OpenPublica — questions

Answers built from our own checks of this server.

What can OpenPublica do?
It exposes 16 tools, read directly from the server on our last check. Among them: discover_meeting_vocabulary, find_governments_by_name, find_governments_by_zip, find_local_governments, get_coverage_overview, get_document and 10 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is OpenPublica mostly used for?
Its tools cluster around meeting, government and governments. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is OpenPublica working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 1150 ms. The bar chart above shows every period we have measured.
Did OpenPublica ever remove tools?
Yes. get_meeting_officials, get_official, list_government_officials, list_official_meetings are no longer exposed — we recorded the date each one disappeared. A tool vanishing usually means a breaking change for anything that depended on it.
How do I connect OpenPublica?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does OpenPublica need an API key?
No. OpenPublica completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 16 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is OpenPublica?
It answers our handshake in 1150 ms on average, which is faster than 5% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.