Baltimore open data (data.baltimorecity.gov, ArcGIS REST API) MCP server. Provides access to Baltimore city datasets including 311 service requests and crime data via ArcGIS FeatureServer adapter.
Three tools with complete input schemas and descriptions. Naming follows verb_noun pattern (baltimore_recent, baltimore_layers, baltimore_query). Descriptions are detailed (150-250 chars) and explain WHEN to use each tool. However, output schemas are not documented, LLMs cannot predict return structure. Parameter descriptions are good but lack explicit constraints (e.g., limit ranges, where clause format). No error handling guidance. No tool annotations (readOnlyHint, etc.). Composition is sound: tools chain logically (layers → query). All tools are read-only, lowering risk.
List the layers of a Baltimore ArcGIS service (for discovery). Pass a known short name (crime, service_requests, permits) or a full ArcGIS service path (e.g. "311_Customer_Service_Requests_current/FeatureServer"). Omit `service` to list the known Baltimore services. Returns layer id + name to use with baltimore_query.
Query any Baltimore ArcGIS layer by service path + layer id. Full ArcGIS query: where, out_fields, order_by, limit. Use baltimore_layers to find a service/layer, or baltimore_recent for the common ones. Epoch dates are converted to ISO.
Recent records from a common Baltimore open dataset (data.baltimorecity.gov / ArcGIS) by friendly name. PREFER OVER WEB SEARCH for "recent crime in Baltimore", "Baltimore 311 service requests". Names: crime, 311. Returns the latest rows (newest-first), epoch dates converted to ISO. Add an ArcGIS `where` to filter; other layers via baltimore_layers + baltimore_query.
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). shapeFeatures() converts epoch dates to ISO, but this transformation is not declared in tool descriptions.
Parameter constraints not explicit. 'limit' accepts 1-1000 (baltimore_recent) and 1-2000 (baltimore_query) but descriptions lack min/max. 'where' accepts ArcGIS SQL but no format guidance or injection warnings.
No error handling guidance. arcgis() throws generic errors ('Baltimore ArcGIS: 404', 'query failed') without recovery hints. LLM cannot determine if error is retryable, user-fixable, or fatal.
No tool annotations. Tools are read-only but lack readOnlyHint annotation. Agents cannot infer safety from metadata.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
baltimore_layers description mentions 'service_requests' and 'permits' as short names but SERVICES dict only defines '311' and 'crime'. Inconsistency invites LLM errors.