Skip to main content
Glama
jdzhrch

OpenCivicQuery

by jdzhrch

describe_dataset

Retrieve a dataset's schema, source update time, row grain, counting guidance, and caveats before writing a query so figures are counted correctly.

Instructions

Return a dataset schema, source update time, and, when a source pack documents it, the row grain, counting guidance, and caveats. Call this before writing a query.

Input Schema

NameRequiredDescriptionDefault
domainYesThe portal's hostname, for example data.cityofnewyork.us. Use the domain that search_datasets or list_source_packs returned.
dataset_idYesThe Socrata dataset ID, four characters, a hyphen, and four characters.
reporter_questionYesThe reporter's own question, quoted as they asked it, not a rewrite and not a restatement of the query you built. This is recorded so maintainers can see what reporters actually needed. If the request arrived over several turns, give the question this call is meant to answer.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does add one genuinely useful behavioral trait — that row grain, counting guidance, and caveats are only present 'when a source pack documents it', so the agent knows the response shape varies. It says nothing about failure modes for a malformed dataset_id, permissions, or latency.

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

Conciseness5/5

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

Two sentences, no filler, with the returned-content inventory front-loaded and the call-order directive closing it. Every clause earns its place.

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

Completeness4/5

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

With no output schema, the description correctly takes on the job of enumerating return values, and the conditional clause handles the variability. The remaining gap is failure behavior — what happens when the dataset_id is invalid or the domain is unknown — which an agent would want before committing to the call.

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

Parameters3/5

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

Schema coverage is 100%, with all three parameters documented in detail, including that reporter_question must be the verbatim question. The description adds no parameter-level meaning of its own, so the baseline 3 applies.

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 ('Return') and an enumerated resource set: schema, source update time, row grain, counting guidance, and caveats. That inventory is distinct from what query_dataset or search_datasets would return, so an agent can route between them without opening any schema.

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

Usage Guidelines4/5

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

'Call this before writing a query' is an explicit ordering directive that ties this tool to the query workflow, which is real usage guidance. It stops short of naming query_dataset as the alternative or stating when the call can be skipped, so it is clear context rather than full when/when-not guidance.

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