list_state_cities
List all covered cities in a state (with violation counts).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | 2-letter state code. |
List all covered cities in a state (with violation counts).
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | 2-letter state code. |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds that violation counts are returned, but does not disclose other behavioral traits like rate limits, response format, or pagination. It does not contradict 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?
A single sentence of 11 words conveys the essential purpose and additional detail (violation counts) with no redundancy. It is optimally concise.
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 one parameter and no output schema, the description is functional but lacks details on response format, whether the list is paginated, and what 'covered' means. Given the tool's simplicity, it is adequate but not exemplary.
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 has 100% coverage with a clear description of the 'state' parameter as a 2-letter code. The description does not add additional meaning beyond what the schema provides, so baseline 3 applies.
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 verb 'list' and the resource 'covered cities in a state', and specifies that violation counts are included. It is specific enough to distinguish from siblings like compare_cities or coverage_stats, though it doesn't explicitly differentiate.
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?
No guidance is provided on when to use this tool versus alternatives like search_cities or fetch. The description does not mention prerequisites, limitations, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Multiple tools have overlapping purposes: `search` and `search_cities` both find cities by name, and `fetch` and `get_city_water` both retrieve EPA records for a city. This creates ambiguity for an agent deciding which tool to use.
Most tools follow a verb_noun pattern (e.g., compare_cities, get_city_water), but `fetch` and `search` are single-word imperatives without an object, breaking the consistency slightly.
With 10 tools, the server is well-scoped for a data retrieval domain. Each tool has a distinct role, though some overlap could be consolidated, the count is reasonable.
Core operations (search cities, fetch records, compare, list states) are covered, but the redundancy between `fetch`/`get_city_water` suggests unclear boundaries, and there is no tool to search by water system name or list all contaminants.