Two tools with minimal but present schemas and descriptions. Both tools have clear naming (verb_noun pattern: get-ip-loc, get-latlng) and execute simple read-only operations. However, parameter descriptions are extremely sparse (1-3 words), input schemas lack detailed constraints, output schemas are completely undocumented, and error handling is absent. The codebase shows basic implementation but lacks production-grade tool definition patterns. Tool descriptions average ~45 chars, well below the 194-char baseline for production tools. No enum constraints, no bounds on parameters, no guidance for LLM recovery from errors.
获取指定ip的大致位置与经纬度信息
根据经纬度获取详细位置信息
Output schemas completely undocumented. Both tools return complex dataclass objects (LocationData with nested RGeo; CityDetailData with 15 fields) but no schema is exposed to the LLM. This violates pattern:tool (Document the output schema so LLMs know what fields to expect).
Parameter descriptions are bare and generic. 'The IP address to query' (27 chars) and 'Latitude coordinate' / 'Longitude coordinate' (17 chars each) lack actionable context for LLMs. Baseline for production tools is 72 chars per parameter. No guidance on valid formats, ranges, or error cases.
No input validation or constraint specification. get-latlng accepts 'lat' and 'lng' as strings, not numbers. No range bounds (-90..90 for lat, -180..180 for lng). No format specification (ISO 8601, decimal vs degrees-minutes-seconds?). LLMs will hallucinate invalid values like 'lat=200' or 'lat=north'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | - | v1 |
No error handling or recovery guidance. Both tools use requests.get() with .raise_for_status() but return errors to the LLM with no actionable next steps. If Meituan API returns 4xx/5xx or JSON parse fails, the LLM sees a traceback with no guidance (retry? fallback? user intervention?).
Tool descriptions are in Chinese. While not a code quality issue per se, descriptions must be LLM-understandable and typically in English to ensure broad agent compatibility. Chinese-only descriptions reduce interoperability.
No idempotency hints or destructive annotations. Tools are read-only (risk=READ_ONLY) but this is not documented in the tool definitions. toolAnnotations feature is absent, no readOnlyHint, destructiveHint, or idempotentHint provided to the protocol.