Skip to content
OpenPublica logo

OpenPublica MCP server

Which servers in the official MCP registry are OpenPublica's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-18

← Back to OpenPublica

Whose server it is
  • Registry namecom.openpublica/civic-meetingsverified in the MCP registry

The registry name sits under openpublica.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.

When we asked itchecked 2026-10-18
  • Stateanswerschecked 2026-10-18
  • Tools16
  • Server calls itselfOpenPublica
  • Server version2.0.0
  • Protocol version2025-06-18

On 2026-10-18 the server answered initialize and tools/list without a sign-in. First answer in 117 ms.

Measured dailydaily checks: 2, the first on 2026-10-19
  • Answeredmeasuring2 of the 7 daily checks it takes to print a share
  • Median first answer1746 ms
  • Space in an agent's context≈ 4,279 tokensthe definitions of all its tools (16), which an agent carries on every turn
  • Tool definitionsA · 99 of 100
  • Parameters without a description: in 1 of 16

Worth a look

None of the five warning signs in these definitions.

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The state of vendors' MCP servers: method and numbers →

Tools it offers16 tools · read 2026-10-18
  • 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…

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

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

  • 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_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…

  • 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…

  • 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…

  • 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…

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

  • 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…

  • 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…

  • 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…

  • 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…

  • 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…

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

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

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

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.