Walk Score MCP — wraps the Walk Score API (walkscore.com)
Single tool with complete schema and reasonable description. Tool name 'walkscore_score' lacks action verb (should be 'get_walkscore' or 'calculate_walkscore'). Description is 380+ chars, verbose and includes example values (anti-pattern). All 6 parameters have types and descriptions. Schema is well-formed JSON Schema. However, no output schema documented, no error handling guidance, and _apiKey exposed as parameter (security anti-pattern). Tool is read-only and straightforward, but violates several production patterns.
How walkable is <address> — Walk/Transit/Bike Score (0-100) plus a human-readable description of walkability, transit, and biking. NOTE: the Walk Score API requires lat AND lon AND address to all be provided — the coordinates locate the point and the address disambiguates it. Example: walkscore_score({ address: "1119 8th Avenue, Seattle, WA 98101", lat: 47.6085, lon: -122.3295, transit: true, bike: true, _apiKey: "your-key" })
Tool name lacks action verb. 'walkscore_score' is a noun phrase; should be 'get_walkscore' or 'calculate_walkscore' to signal intent to LLM.
API key exposed as _apiKey parameter. Credentials must use server-side secret injection via environment variables, not tool parameters. Agent traces log all parameters, secrets leak into logs.
Description includes example values ('1119 8th Avenue, Seattle, WA 98101', lat 47.6085, lon -122.3295). LLMs reuse example values literally instead of adapting to context. Use parameter constraints (enums, patterns) instead.
No output schema documented. LLMs cannot plan downstream calls or extract fields without knowing return structure. Document the response object with field types and descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error handling guidance. statusNote() function handles Walk Score status codes (2, 30, 40) but LLM receives raw status field without actionable recovery hints. Return 'status_note' field with recovery guidance (e.g., 'Try again shortly' for status 2).