OpenPublica

com.openpublicaPublished by openpublica.comOfficial publisherv1.0.0Updated Oct 24, 2026

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

VerifiedStreamable HTTPWeb executableLocation & LifestyleFiles & StorageKnowledge & Memory

Overview

AI-generated overview

Remote MCP server for searching US local-government meetings, AI summaries, transcripts and adopted plan and budget documents.

What you can do
Search meetings by stored text or by meaning, and browse recent meetings with filters by government, type, topic or date, with pagination metadata but no totals. Retrieve a single meeting's full AI summary and topics, optionally with the complete transcript for direct quotation. Search inside one meeting's transcript for stored-text matches. Resolve governments by coordinate, name or ZIP code, and get their profile and meeting-activity statistics. Discover valid category and topic filter values before filtering. List, search and read adopted plan and budget documents as page-cited markdown excerpts, and get estimated stored-record totals.
When to use it
Useful when answering questions about US city, county or board meetings, what was said or decided, or what a local government's adopted plans and budgets say. Also suited to checking how active a given local government has been.
Requirements
A remote streamable HTTP endpoint; no package, environment variable or header is declared. Coverage is limited to a limited set of US localities, so empty results can mean a place is not tracked.
Before you install
Results are read-only lookups, but the server itself warns that counts are estimates and do not establish completeness, searchability or freshness. Document text is transcribed from rendered pages and may contain lint problems or untranscribed holes; check availability notes before quoting figures. Semantic search matches AI summaries, not stored words.

Installation

In SourceWeft

  1. Open OpenPublica in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.openpublica%2Fcivic-meetings/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "openpublica": {
      "type": "http",
      "url": "https://api.openpublica.com/mcp"
    }
  }
}

Tools

16

search_meeting_content

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.

Parameterslimitqueryrequiredtopiccursorsourceend_datestart_datecategory_taggovernment_idgovernment_ids

search_meetings_semantic

Search meetings

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.

Parameterslimitqueryrequiredtopicend_datemin_scorematch_typestart_datecategory_taggovernment_idgovernment_ids

list_recent_meetings

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`.

Parameterspagelimittopicend_datestart_datecategory_taggovernment_id

get_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.

Parametersmeeting_idrequiredinclude_transcript

search_meeting_transcript

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.

Parametersqueryrequiredmeeting_idrequired

find_local_governments

Find governments near a location

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.

Parameterslimitlatituderequiredlongituderequired

find_governments_by_name

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.

Parameterslimitqueryrequired

find_governments_by_zip

Find governments by ZIP code

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.

Parameterslimitpostal_coderequired

get_government_info

Get government profile

Get a tracked government's profile: name, location, and meeting categories.

Parametersgovernment_idrequiredinclude_weekly_summary

get_government_stats

Get government meeting 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.

Parametersdaysgovernment_idrequired

discover_meeting_vocabulary

Discover category and topic filters

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`).

Parametersend_datestart_datetopic_limitgovernment_idgovernment_ids

list_government_documents

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.

Parametersgovernment_idrequiredinclude_superseded

get_document

Get document metadata

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.

Parametersdocument_idrequired

read_document_pages

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`.

Parameterslast_pagerequiredfirst_pagerequireddocument_idrequired

search_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.

Parameterslimitqueryrequiredgovernment_id

get_coverage_overview

Get coverage overview

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`.

Takes no parameters.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

83% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.