MCP server providing access to ArcGIS Location Services APIs including geocoding, routing, places, elevation, geoenrichment, and basemap tiles
Single tool with adequate schema but weak descriptions and no output documentation. Tool name follows verb_noun pattern (get_basemap_tile). Input schema is present with 6 parameters, all typed (string, integer). However, tool description is only 56 chars, below the 194-char baseline for production tools. No output schema documented. Error handling exists in code (ArcGISError class) but not surfaced in tool definition. Missing pagination, result limits, and chaining IDs. No tool annotations (readOnlyHint, etc.). Composition is single-purpose (acceptable), but lacks LLM-optimized guidance on when/why to call it.
Access static basemap tiles service with different styles.
Tool description is 56 characters, too brief to guide LLM selection. Should explain WHAT (retrieves map tiles), WHEN (rendering basemaps), and WHAT IT RETURNS (tile image URL or binary). Baseline: 194 chars.
No parameter descriptions in schema. LLM cannot infer meaning of 'level', 'row', 'column', 'style_base', 'style_name', 'version' from names alone. E.g., 'level' could mean zoom level, detail level, or API version level. Each parameter MUST have a description explaining its purpose, valid range, and format.
No output schema documented. LLM does not know what fields to expect (URL? binary tile? metadata?). Production tools must document return type, structure, and fields needed for downstream chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tool is read-only (Risk: READ_ONLY noted), but this is not declared in the tool definition. LLM cannot infer safety/retry semantics without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Parameter 'style_base' and 'style_name' lack enum constraints. Description says 'default: arcgis' and 'e.g. navigation, streets, satellite' but does not enumerate all valid values. LLM will hallucinate invalid style names. Use enum constraint instead of examples.