All servers · Tasks & projects · Government & law
OpenPublica
com.openpublica/civic-meetings · v1.0.0
Tools changed (7 days)
Measured by MCP Station
| Last check | Reachable |
|---|---|
| Checked at | — |
| Check success 7 / 30 days | — |
| First-try success 30 days | — |
| Median response | — |
| Lookups 30 days | — |
| Authentication | No auth |
| MCP version | 2025-06-18 |
| Rank score | — |
| Declared risk | Read-only (all tools declare readOnlyHint) |
| Capabilities declared | experimental, prompts, resources, tools |
| Tool definitions | 16 tools · with description 100% · input schema is an object 100% · read/destructive hints 100% |
Description written by the publisher, not verified
Search US local-government meetings: AI summaries, transcripts, and adopted plan documents.
Connect
streamable-http · https://api.openpublica.com/mcp
claude mcp add --transport http civic-meetings https://api.openpublica.com/mcp{
"mcpServers": {
"civic-meetings": {
"url": "https://api.openpublica.com/mcp"
}
}
}Tools as reported by the server
search_meeting_contentSearch 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 tsearch_meetings_semanticFind 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.list_recent_meetingsBrowse 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`.get_meetingGet 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_transcriptUse 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 passagfind_local_governmentsDiscover 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 trackedfind_governments_by_nameResolve 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_governmentfind_governments_by_zipResolve 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.get_government_infoGet a tracked government's profile: name, location, and meeting categories.get_government_statsGet 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.discover_meeting_vocabularyDiscover 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 inlist_government_documentsList 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 afterget_documentOne 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 transcread_document_pagesRead 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 assesearch_documentsSearch 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 wheget_coverage_overviewGet 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`.
Tool changes
- 2026-10-18: search_meeting_content, search_meetings_semantic, list_recent_meetings, get_meeting, search_meeting_transcript, find_local_governments, find_governments_by_name, find_governments_by_zip, get_government_info, get_government_stats, discover_meeting_vocabulary, list_government_documents
- 2026-10-16: search_meetings_semantic, list_recent_meetings, get_meeting, search_meeting_transcript, find_local_governments, find_governments_by_name, find_governments_by_zip, get_government_info, get_government_stats, discover_meeting_vocabulary, list_government_documents, get_document
Website · JSON · Text for agents · Registry updated 2026-08-28