City of Peoria GIS — Peoria, Arizona open geospatial data (ArcGIS). Provides access to parcels, zoning, public works & city services datasets through ArcGIS Feature Services.
Three well-named, read-only tools with clear descriptions and complete input schemas. All tools follow verb_noun naming (search_, query_, layer_info). Descriptions are concise (100 - 200 chars) and explain WHAT, WHEN, and WHAT-TO-DO-NEXT. Input schemas include types and descriptions for all parameters. However, output schemas are NOT documented, LLMs cannot predict response structure. Parameter descriptions lack format constraints (e.g., 'url must be https and end in /FeatureServer/<n>' is stated in code but not in schema descriptions). No error handling guidance in descriptions. Missing pagination details for search_datasets despite returning a 'total' field.
Get an ArcGIS Feature/Map Service layer's schema by url: fields (name + type), geometry type, total record count, and capabilities.
Query an ArcGIS Feature Service / Map Service layer by its url (from search_datasets). SQL-like `where`, comma-separated `out_fields`, `order_by`, `limit`, `offset`. Returns attribute rows (and geometry). Use where="1=1" + out_fields="*" to sample.
Search City of Peoria GIS open geospatial datasets (parcels, zoning, public works & city services) by keyword. Returns each dataset's name, summary, record_count, owner/org, and its Feature Service `url` — pass that url to query_layer / layer_info.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects). search_datasets returns {total, count, datasets[{id, name, summary, org, org_id, record_count, type, url}]} but this is invisible in the tool definition.
Parameter descriptions lack format constraints. 'url' param says 'Feature/Map Service layer url' but does not state 'must be https, must end in /FeatureServer/<n> or /MapServer/<n>, no IP addresses or localhost'. Constraints are enforced in code (layerUrl function) but invisible to LLMs.
No error handling guidance in descriptions. Tools throw errors like 'ArcGIS Hub: 404' or 'url must be https' but descriptions do not explain what to do on failure (retry, check input, contact admin). LLMs have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
search_datasets returns 'total' count but no pagination guidance. Description does not explain how to fetch next page (offset? cursor?). Agents cannot iterate through large result sets.
query_layer 'where' parameter accepts raw SQL but description does not warn about injection risk or escaping rules. LLMs may pass unescaped user input, causing query errors or unexpected results.