Three tools with basic verb-noun naming (get_*). All have descriptions (10-50 chars, below baseline 194 chars). Input schemas present but minimal: get-ip-location has one string param with description; get-my-location and get-api-usage have empty schemas ({}). Output is unstructured text formatting, not typed objects. No parameter validation, error handling, or recovery guidance. No tool annotations. Descriptions lack WHEN/WHY context and are too terse to guide LLM selection.
Get the usage statistics of the IPFind API
Get location and network information for an IP address
Get location and network information for the current IP address
Two tools (get-my-location, get-api-usage) have empty input schemas ({}).
All descriptions are under 50 characters and lack WHEN/WHY context. Baseline is 194 chars. Descriptions do not explain when to use each tool vs. the others, or what the LLM should expect in return.
Output is unstructured text (formatIPData, formatUsageData return plain strings). No typed response schema documented. LLMs cannot parse structured fields for downstream tool chaining.
Error handling returns generic error messages without recovery guidance. E.g., 'Error fetching IP data: <error>' does not tell the LLM what to do next or whether to retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only but this is not declared in the schema.