Skip to main content
Glama
frogr

nyc-open-data-mcp

by frogr

NYC 311 complaint summary

service_requests_311
Read-onlyIdempotent

Summarize NYC 311 requests for a chosen area and date range, filtering by ZIP code, borough, or complaint type to return totals, top issues, and recent examples.

Instructions

Summarize NYC 311 service requests for an area and time window. Filter by ZIP codes, borough and/or complaint type (substring); dates default to the last 30 days (max range 366 days). Returns the total, top complaint types with counts and share, and a few recent example requests.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
top_nNoHow many complaint types to rank (1-50, default 10).
boroughNoBorough: Manhattan, Brooklyn, Queens, Bronx or Staten Island.
end_dateNoInclusive end date YYYY-MM-DD. Default: today (New York time).
zip_codesNoOne or more 5-digit ZIP codes. Neighborhoods span several, e.g. East Village = ["10003","10009"].
start_dateNoInclusive start date YYYY-MM-DD. Default: 30 days before end_date.
sample_sizeNoMost recent example requests to include (0-25, default 5).
complaint_typeNoComplaint type contains (case-insensitive), e.g. "noise", "heat", "rodent", "illegal parking".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteNo
filtersYes
samplesYes
date_rangeYes
total_requestsYes
other_types_countYesRequests not in the top_n types.
top_complaint_typesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds real behavioral context beyond them: the 30-day default window, the 366-day hard range cap, and that complaint_type is a substring match rather than exact -- useful constraints an agent cannot get from annotations.

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?

Three tight sentences: what it summarizes, how to scope it, and what comes back. Filtering and the default date window are front-loaded, and no sentence is filler.

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 a 100%-documented schema, full annotation coverage and an output schema, the description need not explain return fields, and it correctly gestures at them briefly. The remaining gap is that it does not clarify how multiple filters combine or whether ZIP and borough are intersected, which matters for a faceted summary tool.

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%, so baseline is 3, but the description contributes value the schema does not: the 366-day maximum range and the implied 'and/or' combination of ZIP, borough and complaint_type filters. It still leaves the AND/OR interaction between filters ambiguous, keeping it below 5.

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

Purpose4/5

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

States a precise verb+resource: summarize NYC 311 service requests, with scope (area + time window) and output shape. It is clearly more specific than the generic sibling query_dataset, but it never names or contrasts those siblings, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the description (aggregate/summarize view of 311 complaints), and the filtering options give a sense of when it applies. However there is no explicit when-to-use vs when-not guidance and no routing to query_dataset or search_datasets for raw-record needs.

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