mcp
Server Details
Resolve any government entity worldwide and submit service requests. Open civic data for AI agents.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Tool Definition Quality
Average 4.4/5 across 12 of 12 tools scored.
Each tool targets a distinct resource or action: entity lookups, law summaries, CGJ report retrieval/search, service request submission, and supporting utilities (country lists, coverage, domain resolution). Even closely related tools like get_cgj_report vs search_cgj_reports are clearly differentiated as fetch-by-ID vs search.
All tool names follow a consistent verb_noun snake_case pattern: get_* for detail retrieval, list_* for enumerations, search_* for queries, submit_* for the write action, and resolve_* for mapping. No mixed conventions or vague verbs.
With 12 tools, the set is well-scoped for a government transparency and service-request API. Each tool covers a distinct capability without redundancy, and the count is within the ideal 3-15 range.
The surface covers entity lookup, law research (crawl, open records, transparency), CGJ reports, coverage discovery, and service request submission. A minor gap is the lack of a tool to check the status of a submitted service request, but the core domain is well covered.
Available Tools
12 toolsget_cgj_reportCalifornia Grand Jury report detailARead-onlyInspect
Get full details for a specific California Grand Jury report by ID. Includes findings, recommendations, and responses. Requires X-API-Key header (50 req/day shared with data.ungovr.org). Get a key at https://www.ungovr.org/open-data/api-keys.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Report ID (from search results) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds valuable behavioral context: it explicitly states the authentication requirement (X-API-Key header), the rate limit (50 req/day shared with data.ungovr.org), and how to obtain a key. This goes beyond the annotations without contradicting them, providing critical operational details for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The main purpose is front-loaded, followed by essential operational requirements. Every sentence earns its place—no redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple detail-retrieval tool with one parameter and no output schema, the description provides the necessary invocation context: purpose, required input, authentication, and rate limit. It even hints at the response contents (findings, recommendations, responses). While it doesn't specify the exact return format, this is minor for such a straightforward tool and the description is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter 'id' with a clear description ('Report ID (from search results)'), achieving 100% coverage. The description does not add any additional semantic detail about the parameter format or constraints, so it adds no value beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get full details'), the specific resource ('a specific California Grand Jury report by ID'), and what content is expected ('findings, recommendations, and responses'). It is distinct from siblings like search_cgj_reports, which retrieves a list based on criteria, and get_entity, which targets a different resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is used when you have a report ID, and the schema clarifies the ID comes from search results. It does not explicitly state 'use search_cgj_reports first to obtain an ID,' nor does it contrast with alternatives, but the implied workflow is clear enough for an agent to understand when to call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entityGovernment entity detailARead-onlyInspect
Get full details for a specific government entity by its URL slug (e.g., "us/ca/ventura"). Works at any depth of the hierarchy, including cities, school districts and special districts (e.g., "us/ca/santa-barbara/spd/carpinteria-valley"). Returns name, type, website, parent, children, domain status, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Entity URL slug at any depth (e.g., "us/ca/ventura", "us/ca/santa-barbara/city/carpinteria", "ie/cork", "kr/seoul") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses the exact return fields (name, type, website, parent, children, domain status, metadata) and highlights flexibility in hierarchy depth. This adds valuable context about what the agent can expect. It does not contradict annotations and covers the read-only nature adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action and resource are front-loaded, followed by concrete examples and scope clarification, then a concise list of return fields. Every sentence earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter read-only tool, the description covers all necessary guidance: what it does, how to specify the target (slug), what it returns, and its applicability at any hierarchy depth. Without an output schema, the explicit field list is sufficient. No missing information prevents correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a thorough description of the slug parameter with examples, and schema coverage is 100%. The description adds examples and mentions broad hierarchy support, which reinforces but doesn't materially extend the schema's meaning. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('full details for a specific government entity') with a precise identifier (URL slug). It clearly distinguishes from sibling tools like search_entities, which perform searches, and list_countries, which list all entities. The hierarchy depth clarification (cities, school districts, special districts) further nests the tool's unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when you have a specific slug at any hierarchy depth. It gives multiple examples but does not explicitly mention alternatives or exclusions. However, the implied use case (retrieve by known slug) is unambiguous, and the sibling names (e.g., search_entities) make the distinction obvious without needing explicit 'don't use when searching' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_records_lawOpen records law for a jurisdictionARead-onlyInspect
Get the open records law (FOIA/RTI equivalent) governing a jurisdiction: name, citation, response deadlines, fees, exemptions, appeal process, records retention rules and RTI rating. Accepts a jurisdiction slug ("us/ca", "ie", "in/mh") or any UnGovr entity slug at any depth ("us/ca/santa-barbara/city/carpinteria" resolves to the California law). US federal FOIA is jurisdiction "us". When the answer comes from a parent jurisdiction the response includes "resolved_from".
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | Yes | Jurisdiction slug or entity slug at any depth (e.g., "us/ca", "us", "uk", "us/ca/ventura") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavior beyond the readOnlyHint annotation: it explains that any entity slug at any depth resolves to the governing parent law, and that the response includes 'resolved_from' when applicable. This adds non-obvious resolution behavior that the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured, starting with the purpose, then the output fields, then input format and special cases. Each sentence adds necessary information without fluff; it's concise for the complexity it covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter and no output schema, the description lists expected return fields (name, citation, deadlines, fees, etc.), explains input resolution, and notes the special case of US federal FOIA and the 'resolved_from' field. This is comprehensive and leaves no critical detail missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter schema only describes a jurisdiction string; the description expands on this by providing multiple valid formats (e.g., 'us/ca', 'ie'), explaining that entity slugs at any depth are accepted, and giving the resolution rule. This adds significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact purpose: retrieving the open records law (FOIA/RTI) for a jurisdiction, and lists the specific data returned. The description is specific about the resource and the inputs, and is clearly distinct from sibling search or scraping tools given the focus on open records law.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on how to call the tool: accepts jurisdiction slugs or any entity slug, and explains resolution to a parent jurisdiction. However, it does not explicitly mention alternatives like search_transparency_laws or when not to use this tool, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_product_coverageWhere an UnGovr product is availableARead-onlyInspect
Get the full hierarchy of government entities where an UnGovr product is available. product="request" returns the worldwide UnGovr Request coverage footprint (where you can file a government service request); product="cgj" returns Civil Grand Jury coverage. Public, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product id: "request" or "cgj" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the read-only nature is already disclosed. The description adds valuable behavioral context beyond the annotations: it specifies that the tool is public and requires no API key, and it describes the nature of the result (a full hierarchy). This goes beyond the baseline set by annotations and provides useful operational details, though it does not cover response format or potential size limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with no redundancy or filler. The core purpose is front-loaded in the first sentence, and the second sentence efficiently explains the product options and public access. Every word contributes value, making it optimally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one required parameter, read-only annotation, and no output schema. The description covers the essential context—what the tool returns (hierarchy of entities), the two product options, and authentication requirements. An agent can confidently select and call this tool without needing additional info, so the description is fully complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the parameter with an enum. The description adds significant semantic meaning: it defines what each enum value ('request' and 'cgj') actually represents (worldwide coverage footprint vs. Civil Grand Jury coverage). This clarifies the mapping beyond the schema's bare 'Product id' description, enriching the agent's understanding of expected values and their effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('full hierarchy of government entities where an UnGovr product is available'), and explicitly names the two product variants ('request' and 'cgj') with their meanings. This makes the tool's purpose unambiguous and differentiates it from siblings like get_cgj_report or search_entities, which focus on individual records or searches rather than coverage footprints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by explaining what each product value returns and stating that it is public and requires no API key. It implicitly indicates when to use this tool (to obtain coverage footprints) versus siblings, but it does not explicitly name alternative tools or state when not to use it. This is a clear context with no exclusions, fitting a score of 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scraping_lawScraping and access legalityARead-onlyInspect
Get the scraping/access legality summary for a jurisdiction: verdict-level crawl policy, a per-scenario access matrix (public pages, robots-disallowed, behind login, after cease-and-desist), and legality fields such as robots.txt legal weight and TDM opt-out status. Accepts a slug at any depth ("us", "us/ca", "us/ca/ventura", "eu"); resolution walks to the most specific jurisdiction with data and reports the walk in resolved_from. Every response carries as_of_date, confidence, and stale flags — check them. This is a research summary, NOT legal advice and NOT authorization to access any system. Obligations that follow YOUR OWN operator posture (EU AI Act Art. 53(1)(c), GDPR Art. 3) apply regardless of the target jurisdiction — see jurisdiction "eu". Requires X-API-Key header (50 req/day, shared with data.ungovr.org). Get a key at https://www.ungovr.org/open-data/api-keys.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction | Yes | Jurisdiction slug, lowercase, "/"-separated (e.g. "us", "us/ca", "us/ca/ventura", "de", "eu") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true and openWorldHint=false, which already indicate a non-destructive read. The description adds substantial behavioral context: response fields (as_of_date, confidence, stale flags) that the agent should check, the slug-resolution behavior that walks to the most specific jurisdiction and reports it in resolved_from, authentication requirements (X-API-Key header), rate limits (50 req/day shared with another service), and legal disclaimers. It also clarifies that this is research, not authorization. This goes well beyond the annotations and fully informs the agent about side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is approximately 120 words and each sentence serves a purpose: main function, resolution details, response-field warning, legal disclaimer, and authentication instructions. It is front-loaded with the core purpose and specific deliverables. While it is a bit long, the length is justified by the tool's complexity; it could arguably be tightened, but it remains efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—multiple legality dimensions, slug resolution, response metadata, and legal caveats—the description covers everything an agent needs to decide whether and how to call it: what it returns, how resolution works, what to check in the response, the auth requirement, and the disclaimers. Since there is no output schema, the description appropriately explains return values and safety implications. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers the parameter (jurisdiction) with a description and example formats, so baseline is 3. The description adds valuable semantics about slug depth and resolution behavior: it accepts slugs at any depth and resolves to the most specific jurisdiction with data, populating resolved_from. This clarifies behavior not present in the schema, justifying an above-baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, specific verb ('Get') and resource ('scraping/access legality summary for a jurisdiction'), then enumerates exactly what it returns (verdict-level crawl policy, per-scenario access matrix, legality fields). It also names the sibling context indirectly by being jurisdiction-specific, distinguishing it from related tools like get_open_records_law without ambiguity. An agent can immediately understand the tool's function and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on when to use it (for a jurisdiction's scraping legality) and even points the agent to 'eu' for operator-specific obligations. It does not explicitly mention when NOT to use it or name alternatives, but the purpose is distinct enough that an agent would not confuse it with siblings. The lack of explicit exclusions is a minor gap given the clarity of purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesCountries with entity coverageARead-onlyInspect
List all countries with government entity data in UnGovr, including entity counts and coverage metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds meaningful context by specifying the nature of the data returned (entity counts and coverage metadata). It does not describe potential edge cases like empty responses or pagination, but for a zero-parameter list tool, this is minor. The description complements the annotations without redundancy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the action and scope, then specifies the output details. Every word contributes; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no parameters and no output schema, the description covers the essentials: what is listed and what data it includes. It doesn't mention limits or ordering, but the term 'all countries' implies completeness, and the simplicity of the tool makes this adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is trivially 100%. The baseline for zero parameters is 4, and the description correctly avoids inventing parameter explanations. No additional semantic guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a clear resource ('countries'), and a precise scope ('with government entity data in UnGovr'). It also specifies the output includes entity counts and coverage metadata, distinguishing it from sibling search tools like search_entities which target individual entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage (to get an overview of country-level coverage), but no explicit guidance is provided on when to use this tool versus alternatives like search_entities. It doesn't mention any exclusions or conditions, though the simplicity of the tool makes over-explanation unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_typesService request typesARead-onlyInspect
List available service request categories and types for a country. Returns service types grouped by category (e.g., Infrastructure, Utilities, Parks). Use this to discover valid service_type_id values for submit_service_request. Supported countries: US, IE (Ireland), GB (United Kingdom).
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code: "us", "ie", or "gb" (default: "us") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description doesn't need to repeat that. It adds useful behavioral context by stating the return format (grouped by category) and giving example categories (Infrastructure, Utilities, Parks). This goes beyond the annotation to clarify the output structure without contradicting the read-only hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero filler. The verb and purpose are front-loaded, and the supported countries and return format follow logically. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description states what the tool returns (service types grouped by category) and gives examples. It also covers the supported countries and the relationship to submit_service_request. For a simple list tool with one optional parameter, this is comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for the single parameter is 100% complete ('Two-letter country code: "us", "ie", or "gb" (default: "us")'). The description reiterates the supported countries but adds no new parameter-specific information beyond what the schema already provides. Since schema coverage is full, this gets the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), identifies the resource ('service request categories and types'), and scopes it by country. It also explicitly states the tool's purpose: to discover valid service_type_id values for submit_service_request, which clearly differentiates it from that sibling and other listing tools like list_countries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to discover valid service_type_id values for submit_service_request,' giving a concrete use case. It also lists supported countries (US, IE, GB), informing agents when the tool is applicable. This provides clear guidance on when to use it relative to the sibling submit_service_request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_domain_jurisdictionDomain to governing jurisdictionARead-onlyInspect
Best-effort mapping from a domain to the jurisdiction whose law governs its OPERATOR, for feeding into get_scraping_law. Authoritative for government domains in the UnGovr corpus (method "entity_domains"); otherwise an inference from suffix or country-code TLD, or "unknown". Never uses server or edge-node location: a CDN PoP's geography is not the legal signal, the operator's establishment is. IP addresses are refused for the same reason. Requires X-API-Key header (50 req/day, shared with data.ungovr.org). Get a key at https://www.ungovr.org/open-data/api-keys.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Hostname or URL (e.g. "ventura.org", "https://www.stadt-koeln.de/x"). IP addresses are rejected. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true, so the description carries the burden of behavioral disclosure. It adds substantial context: 'best-effort', authoritative vs. inference methods, the rationale for ignoring server/edge-node location, and rate limits/auth requirements. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each serving a purpose: purpose and method, behavioral caveat, IP refusal, auth/rate-limit, and key acquisition. It is slightly longer than the bare minimum but every sentence earns its place; the core information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully explains the mapping logic (authoritative vs. inference), the main exclusions, and the required authentication and rate limits. An agent can decide to call this tool and know what to expect without needing more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'domain' parameter, including the rejection of IP addresses. The description adds the underlying rationale (server location is not a legal signal), which enriches the schema's literal constraint and helps the agent understand why.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('mapping') and resource ('domain to jurisdiction'), and explicitly names its consumer ('get_scraping_law'). It also distinguishes itself by its unique purpose and method (authoritative for government domains, inference otherwise), making it easy for an agent to identify among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says 'for feeding into get_scraping_law' and provides explicit exclusions: never uses server location and refuses IP addresses, with rationale. However, it does not explicitly name an alternative tool for IP-based jurisdiction, so the guidance falls short of a full when/alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cgj_reportsSearch California Grand Jury reportsARead-onlyInspect
Search California Grand Jury reports by county, year, and/or title keyword. Returns report metadata (title, year, county, themes). Requires X-API-Key header (50 req/day). Get a key at https://www.ungovr.org/open-data/api-keys. For the list of valid county names, query the UnGovr entity API: GET https://data.ungovr.org/v1/entities/us/ca.json
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Filter by jury year (reports from that year) | |
| limit | No | Maximum results to return (default 20, max 100) | |
| query | No | Substring to match against report title (case-insensitive) | |
| county | No | County name (e.g., "Los Angeles", "San Francisco") | |
| offset | No | Number of results to skip for pagination (default 0) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't repeat that. It adds important behavioral traits: the API key requirement and 50 req/day rate limit, and the return structure ('report metadata (title, year, county, themes)'). It also points to a helper endpoint for valid counties, which affects call success. These go beyond the annotation, though it doesn't cover edge cases like no results or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded. It opens with the primary action and filters, then the return type, then the authentication and county-list hint. Every sentence adds distinct information without redundancy. It is well-structured and avoids fluff, making it easy for an agent to parse key requirements quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with all-optional parameters, the description covers the essential: what it searches, what it returns, authentication, rate limits, and how to get valid county names. It lacks explicit details on how filters combine (AND vs OR) and any details on sorting or default behavior, but those may not be critical given the schema and the 'and/or' phrasing. Overall, it's sufficiently complete for a well-behaved search endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has a description, so the baseline is 3. The description adds extra meaning by mapping the 'query' parameter to 'title keyword' and explaining how to obtain a valid county list (via the entity API). This supplements the schema's example county values and clarifies the intended use of the query parameter. It doesn't describe limit/offset beyond the schema, but the added context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search California Grand Jury reports by county, year, and/or title keyword.' It specifies the resource, the action, and the filter dimensions, and the return metadata. This distinguishes it from sibling tools like get_cgj_report (which likely retrieves a single report) and search_entities (which searches broader entity data). No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides key usage context: it requires an API key with a rate limit and instructs how to obtain valid county names via a secondary API. This helps the agent prepare valid inputs. However, it does not explicitly contrast this tool with alternatives (e.g., 'use get_cgj_report to fetch a specific report'), so the agent must infer when this is preferred over other search tools. Still, the practical setup guidance is valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesSearch government entitiesARead-onlyInspect
Search government entities by country, optional state/province, name query, and entity type. Searches every tier of government in the jurisdiction, not just the top one: counties, cities, school districts, special districts, fire and police districts, joint powers authorities and regulated utilities are all reachable. Returns matching entities with slugs, types, and website URLs, plus a "scope" field — "full" means every tier was searched, "direct_children" means only the top tier was (narrow by state and search again). Unrecognised arguments are rejected, not ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by entity type, exact match (e.g., "county", "city", "school_district", "special_district", "fire_district", "police_department", "jpa", "regulated_utility"). The parameter is named "type", not "entity_type". | |
| limit | No | Maximum results to return (default 20, max 100) | |
| query | No | Substring to match against entity name (case-insensitive) | |
| state | No | State/province code to narrow search (e.g., "ca" for California, "on" for Ontario) | |
| offset | No | Number of results to skip for pagination (default 0) | |
| country | Yes | Two-letter country code (e.g., "us", "ca", "ie") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds substantial behavioral context beyond that: it specifies that searches cover every tier of government, explains the meaning of the 'scope' field ('full' vs 'direct_children'), and explicitly warns 'Unrecognised arguments are rejected, not ignored' – a behavioral trait not otherwise disclosed. This is exactly the kind of information an agent needs to use the tool correctly, and it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and information-dense. It front-loads the purpose, then details the tiers covered, the return fields including the scope semantics, and concludes with a behavioral note about argument handling. Every sentence contributes valuable information; there is no filler or redundancy. While it's longer than average, the complexity of the tool justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple government tiers, 6 parameters, a 'scope' field with nuanced behavior) and the absence of an output schema, the description carries the full burden of explaining what the agent will receive. It covers return fields (slugs, types, website URLs) and the meaning of 'scope' for interpreting results. It also flags a potential edge case (rejection of unrecognized arguments). This makes the tool fully usable without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters are individually documented. The description adds value by connecting parameters to behavior: it explains how 'state' narrowing interacts with the 'scope' field and hints that search results include slugs/types/URLs based on query parameters. This enriches understanding beyond the per-parameter schema lines, though it doesn't introduce fully new semantics for each parameter. The baseline is 3; the extra context lifts it to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('search'), a precise resource ('government entities'), and adds unique distinguishing details: it searches every tier of government (counties, cities, school districts, etc.) and returns slugs, types, URLs, and a 'scope' field. This clearly separates it from sibling search tools like search_cgj_reports and search_transparency_laws, which target different resources. The purpose is unambiguous and not a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (searching for government entities across jurisdictions) and provides operational guidance: the 'scope' field indicates whether all tiers were searched, and it advises narrowing by state and re-searching when scope is 'direct_children'. It does not explicitly name alternatives or state when not to use it, but the distinct purpose is clear enough that an agent can infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transparency_lawsSearch government transparency lawsARead-onlyInspect
Search government transparency laws across five domains: open records, open meetings, fiscal transparency, digital accessibility, and oversight bodies. Filter by country, pillar, and/or a substring of the law name, citation, or jurisdiction. Returns compact records with jurisdiction slugs; use get_open_records_law for full open-records detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return (default 20, max 100) | |
| query | No | Substring to match against law name, citation, or jurisdiction (case-insensitive) | |
| offset | No | Number of results to skip for pagination (default 0) | |
| pillar | No | Law domain to search | |
| country | No | Two-letter country code (e.g., "us", "de", "br") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds behavioral detail by stating the return format (compact records with jurisdiction slugs) and implying a search/filter operation, which is useful beyond the annotations. No contradictions exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence presents the core purpose and scope, the second covers filters and output/alternative. No filler words; every clause contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with all-optional parameters and no output schema, the description covers the domains, filters, and output nature (compact records with jurisdiction slugs) and points to the detailed alternative. It does not explain default ordering or pagination semantics, but those are inferable from the schema and do not block correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters (limit, query, offset, pillar, country) are documented in the schema. The description reiterates that filtering is possible by country, pillar, and substring but does not add any new syntax or meaning beyond the schema's own descriptions. Thus, at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches government transparency laws and enumerates the five domains: open records, open meetings, fiscal transparency, digital accessibility, and oversight bodies. It also specifies the filters (country, pillar, substring) and distinguishes the output as compact records, separating it from the sibling get_open_records_law.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly directs users to get_open_records_law when full open-records detail is needed, which is a clear alternative for a specific use case. It does not discuss other siblings (e.g., search_cgj_reports) but those cover different domains, so the guidance is sufficient for the primary context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_service_requestFile a government service requestADestructiveInspect
Submit a government service request (e.g., report a pothole, broken streetlight, illegal dumping). The request is validated, geocoded, classified, routed to the correct government entity, and recorded. Delivery is enabled per-entity: where the target channel is live, the request is transmitted (response delivery.state = "sent", or "held" when queued for review); for entities not yet enabled it is recorded and routable but not transmitted (delivery.state = "dry_run", or "handoff" with a redirect_url the user finishes). Always check delivery.state. Requires X-API-Key header. Rate limit: 2 requests/hour. Supported countries: US, IE (Ireland), GB (United Kingdom).
| Name | Required | Description | Default |
|---|---|---|---|
| images | No | Up to 3 base64-encoded images (optional). Each item: {data: "base64...", media_type: "image/jpeg"} | |
| address | No | Address to geocode (e.g., "123 Main St, Ventura, CA 93001"). Provide this OR latitude+longitude. | |
| latitude | No | Latitude (-90 to 90). Provide with longitude as alternative to address. | |
| longitude | No | Longitude (-180 to 180). Provide with latitude as alternative to address. | |
| description | Yes | Description of the issue (10-5000 characters) | |
| country_code | No | Country code: "US", "IE", or "GB" (default: "US") | |
| contact_email | Yes | Email of the person reporting the issue | |
| service_type_id | No | Service type ID from list_service_types (optional — auto-classified from description if omitted) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=true, openWorldHint=true), the description discloses critical runtime behavior: the request is validated, geocoded, classified, routed, and recorded; delivery has four distinct states (sent, held, dry_run, handoff) with a redirect_url for handoff; and it explicitly instructs 'Always check delivery.state'. It also reveals rate limiting and country restrictions, which are not part of the annotations. This adds substantial context that an agent needs to interpret the outcome, and it does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but organized: it leads with purpose and examples, then explains the backend processing, then details delivery states and the imperative to check delivery.state, and finishes with auth, rate limit, and supported countries. Every sentence adds new information; there is no fluff. The length is justified by the tool's complexity, though a more compact phrasing of the delivery states could tighten it slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 8 parameters and no output schema, the description covers the essential behavioral context: how the request flows (validation → geocoding → classification → routing → recording), what delivery states to expect, auth requirements, rate limits, and supported countries. It explicitly mentions redirect_url for handoff. It does not detail error scenarios or the full response envelope, but the reminder to check delivery.state mitigates the missing output schema. Given the richness of the input schema, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — every parameter has a descriptive entry, including the address/lat-long alternative, country_code default, and service_type_id auto-classification. The description adds no additional parameter-level guidance beyond what the schema already provides; it only presents examples and high-level behavior. Baseline 3 is appropriate because the schema carries the full explanatory load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Submit a government service request') and concrete examples (pothole, broken streetlight, illegal dumping) that make the tool's function unmistakable. It clearly distinguishes itself from the read-focused siblings (get_*, search_*, list_*) which all retrieve or list data, whereas this is the only submission tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use the tool: when a citizen wants to file a service request. It also explains the delivery states and the need to check delivery.state, implicitly steering agents toward caution when the request is not immediately transmitted. However, it does not explicitly name alternative tools to use in other scenarios (e.g., when looking up a status, use get_cgj_report), though the sibling set makes the distinction obvious. It also outlines prerequisites (X-API-Key, rate limit, supported countries) that guide safe invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Urban intelligence knowledge graph. Structured locality data for civic problem-solving.
US public-records intelligence for AI agents — companies, SEC, courts, spending, licenses.
Provides access to Civic Plus - See Click Fix, allowing you to interact with your data via an LLM.…
U.S. civic data for AI agents: reps, votes, bills, finance, lobbying, cited gov sources. 47 tools.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceUnified API for Government Data and Web Scraping100
- AlicenseAqualityBmaintenanceEnables AI assistants to answer DFW civic and property questions using official data sources without API keys.91512Apache 2.0
- AlicenseAqualityBmaintenanceAn MCP server that gives AI agents clean, token-efficient access to US civic & property data — geocoding, census tracts, Opportunity Zones, ACS demographics, and FEMA flood zones — sourced entirely from free federal open data.5521MIT
- AlicenseBqualityAmaintenanceProvides sovereign geospatial awareness by wrapping open, non-US-dependent geospatial APIs for AI-agent situational awareness, environmental compliance, and disaster response.5MIT