Search / com.openpublica/civic-meetings
OpenPublica
R0· no sign-inSearch US local-government meetings: AI summaries, transcripts, and adopted plan documents.
v1.0.0 · active · website · descriptor JSON · versions
Search / com.openpublica/civic-meetings
R0· no sign-inSearch US local-government meetings: AI summaries, transcripts, and adopted plan documents.
v1.0.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"civic-meetings": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
}
}claude mcp add --transport http civic-meetings https://api.openpublica.com/mcp[mcp_servers.civic-meetings]
url = "https://api.openpublica.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"civic-meetings": {
"type": "remote",
"url": "https://api.openpublica.com/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"civic-meetings": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=civic-meetings&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vYXBpLm9wZW5wdWJsaWNhLmNvbS9tY3AifQ%3D%3D"
}{
"servers": {
"civic-meetings": {
"type": "http",
"url": "https://api.openpublica.com/mcp"
}
}
}{
"mcpServers": {
"civic-meetings": {
"httpUrl": "https://api.openpublica.com/mcp"
}
}
}extensions:
"civic-meetings":
enabled: true
name: "civic-meetings"
type: streamable_http
uri: "https://api.openpublica.com/mcp"
timeout: 300
protocol.modernnewest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations16 of 16 tools declare readOnlyHint or destructiveHinttools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_meeting_content (idempotentHint); get_meeting (idempotentHint); find_local_governments (idempotentHint); …tools.token_costabout 4,335 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changes22 tool changes in 30 daysstability.rug_pull3 tools kept their name but changed most of their description in 30 days; review before trusting themdeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageget_coverage_overviewchangeddescription, annotationsmeaning changedGet 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 estimated stored-record totals, not publication-filtered coverage. Counts do not establish completeness, searchability or freshness. DC is reported separately from states as `includes_dc`.
search_documentschangedannotationsread_document_pageschangedannotationsget_documentchangedannotationslist_government_documentschangedannotationsdiscover_meeting_vocabularychangedannotationsget_government_statschangedannotationsget_government_infochangedannotationsfind_governments_by_zipchangedannotationsfind_governments_by_namechangedannotationsShowing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+dns-namespace +website +reachable +uptime-100% ~updated-52d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://api.openpublica.com/mcp streamable-http | none | yes | 100% | 424 ms | 2025-06-18 | 2026-10-19 |
discover_meeting_vocabularyread-only | 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`). |
find_governments_by_nameread-only | 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_zipread-only | 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. |
find_local_governmentsread-only | 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. |
get_coverage_overviewread-only | Get estimated stored-record totals, not publication-filtered coverage. Counts do not establish completeness, searchability or freshness. DC is reported separately from states as `includes_dc`. |
get_documentread-only | 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. |
get_government_inforead-only | Get a tracked government's profile: name, location, and meeting categories. |
get_government_statsread-only | 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. |
get_meetingread-only | 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. |
list_government_documentsread-only | 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. |
list_recent_meetingsread-only | 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`. |
read_document_pagesread-only | 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`. |
search_documentsread-only | 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. |
search_meeting_contentread-only | 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_meetings_semanticread-only | 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. |
search_meeting_transcriptread-only | 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. |
Schemas: list_tools.
{
"name": "com.openpublica/civic-meetings",
"icons": [
{
"src": "https://www.openpublica.com/icon.png",
"sizes": [
"512x512"
],
"mimeType": "image/png"
}
],
"title": "OpenPublica",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://api.openpublica.com/mcp",
"type": "streamable-http"
}
],
"version": "1.0.0",
"websiteUrl": "https://www.openpublica.com/api-docs",
"description": "Search US local-government meetings: AI summaries, transcripts, and adopted plan documents."
}