Skip to main content
Glama

Search city meetings and documents

search
Read-onlyIdempotent

Anything about a city council, mayor, ordinance, zoning case, development permit, meeting agenda, or municipal budget. Combined keyword search across public city-government meeting transcripts AND meeting documents (agendas, minutes, packets, ordinances). Returns results with opaque ids — pass an id to the fetch tool for the full transcript or document text.

OpenCity URLs in the query are understood as scope, not text: a city site (taylorsville.openutah.org) narrows to that city, a state site (utahrecord.org, myopentexas.org) narrows to that state, and a full meeting URL resolves to that exact meeting. A bare URL with no other words returns that scope's most recent activity.

WHEN: General civic questions ('what has the city said about X?') from clients that auto-route through search/fetch (e.g. ChatGPT connectors), and whenever the user pastes an opencity/openutah/opentexas-style URL. WHEN NOT: If search_meetings / search_documents / list_officials are available to you, prefer them — they take filters (city, meeting type, doc type) and return structured fields this tool flattens away.

EXAMPLES: { "query": "short-term rental ordinance" } { "query": "parking taylorsville.openutah.org" } — 'parking', scoped to Taylorsville { "query": "utahrecord.org" } — recent activity across Utah cities

Empty results mean no records matched the query — never interpret them as missing access or permissions; retry with broader keywords instead.

Input Schema

NameRequiredDescriptionDefault
queryYesFree-text search query.

Output Schema

NameRequiredDescriptionDefault
noticeNoPresent when results may mislead — e.g. a URL in the query resolved to cities outside this account's scope. Relay this to the user.
resultsYesMatches across meeting transcripts and documents, newest first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safely-read profile is covered. The description goes well beyond that: it explains the opaque-id → fetch handoff, the URL-as-scope (not text) resolution rules, and that empty results mean no matches rather than a permissions failure with a retry-broader-keywords remedy — genuinely useful operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but organized into purpose, URL semantics, WHEN/WHEN NOT, and worked examples, with the core purpose front-loaded. The opening nominal phrase ('Anything about a city council, mayor, ...') is slightly list-heavy, but every section carries routing or interpretation value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value details are not required, yet the description still explains the id→fetch workflow that makes the output usable. Combined with the URL-scoping rules and empty-result interpretation, an agent has everything needed to call and consume this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single query parameter, so baseline is 3. The description adds real meaning beyond 'Free-text search query' — how embedded OpenCity/state URLs are parsed as scope, and that a bare URL returns that scope's most recent activity — which materially changes how the agent should construct the value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Combined keyword search across public city-government meeting transcripts AND meeting documents') and enumerates the covered content types (ordinances, zoning, agendas, budgets). It explicitly distinguishes itself from search_meetings, search_documents, and list_officials, so an agent can separate it from siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Dedicated WHEN and WHEN NOT sections: prefers this tool for auto-routing clients and pasted OpenCity URLs, and explicitly routes to filtered siblings when they are available. Both the trigger conditions and the alternatives are named, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources