com.openpublica/civic-meetings

OpenPublica

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

Endpointhttps://api.openpublica.com/mcp (streamable-http)
Registry version1.0.0
Now16 tools · grade B (86) · pin ts_f02c51a202efff04408fde94f5467f8f · protocol 2025-06-18
First / last listed2026-11-08 03:01 UTC / 2026-11-08 03:01 UTC
Grade over time2026-11-08: B (86), 16 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-11-08 03:01 UTC
16 tools, grade B (86)

Tools: 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 get_document read_document_pages search_documents get_coverage_overview

Current tools (16)

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 transcripts searches stored text, including meetings without timed proof.
params: query*, government_id, government_ids, category_tag, topic, start_date, end_date, source, cursor, limit
search_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.
params: query*, government_id, government_ids, start_date, end_date, category_tag, topic, match_type, min_score, limit
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`.
params: government_id, category_tag, topic, start_date, end_date, limit, page
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.
params: meeting_id*, include_transcript
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 passage ranking.
params: meeting_id*, query*
find_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 tracked near that point yet.
params: longitude*, latitude*, limit
find_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_governments` when starting from a name rather than a latitude/longitude.
params: query*, limit
find_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.
params: postal_code*, limit
get_government_infoGet a tracked government's profile: name, location, and meeting categories.
params: government_id*, include_weekly_summary
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.
params: government_id*, days
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 into `search_meetings_semantic` / `list_recent_meetings`. Scope with a government
params: government_id, government_ids, start_date, end_date, topic_limit
list_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 after it. `status` says what the entry offers: `converted` is searchable and readabl
params: government_id*, include_superseded
get_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 transcribed cleanly.
params: document_id*
read_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 assembled from page windows, so `covered` may be slightly wider than what you
params: document_id*, first_page*, last_page*
search_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 when citing: the page number is what makes the claim checkable against the city's
params: query*, government_id, limit
get_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`.
params: none

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.