City of Courtenay GIS — Courtenay, BC (Canada) open geospatial data (ArcGIS). Provides access to parcels, zoning, parks & city services datasets via ArcGIS Feature Services.
Three well-named, read-only tools with complete input schemas and clear descriptions. All tools follow verb_noun naming (search_*, query_*, layer_info). Descriptions are substantive (100 - 200 chars) and explain what each tool does and when to use it. Input schemas include types and required fields. However, output schemas are not documented, LLMs cannot predict what fields to expect from responses. Parameter descriptions are good but lack explicit constraints (e.g., 'limit: 1-50' is stated in description but not as JSON Schema minItems/maxItems). Error handling is minimal, no recovery guidance or categorization. Security is strong (SSRF guard in layerUrl, no secrets exposed). Overall solid for a read-only GIS tool, but missing output documentation and error guidance.
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 Courtenay GIS open geospatial datasets (parcels, zoning, parks & 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, pagination). Responses from ArcGIS API are returned raw without shaping or field documentation.
No error recovery guidance. Errors are thrown as raw messages (e.g., 'ArcGIS Hub: 404') without actionable next steps. LLMs cannot determine if errors are retryable or require user intervention.
Parameter constraints stated in descriptions but not enforced in JSON Schema. 'limit: 1-50' should be minItems/maxItems in schema. LLMs may pass out-of-range values.
query_layer returns raw ArcGIS response (potentially thousands of features). No pagination guidance or result-size cap documented. Large responses risk context window exhaustion.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Transport mechanism not declared in code. No explicit MCP server initialization, message handling, or protocol version negotiation visible. Appears to be a tool export only, not a full MCP server.