ILHealth provides 4 tools with explicit schemas and descriptions. All tools follow verb_noun naming (get_*) and have non-empty descriptions. However, several quality gaps prevent a higher score: (1) descriptions are often vague about downstream context and prerequisites; (2) output schemas are not formally documented, only return types are visible in code; (3) parameter descriptions lack detail about valid ranges, formats, or dependencies; (4) error handling is minimal, ValueError exceptions are raised but responses don't guide recovery; (5) no pagination support despite tools fetching from external APIs that may return large datasets. The tools are functional but below the 70+ threshold for confident production recommendation.
Get a list of all available subject areas with descriptions
Get specific data from an endpoint. If the response includes an embedLink field, it provides access to an interactive GIS map where you can visualize this data - consider suggesting the user to open this map for a better understanding of the information.
Get relevant links and documentation for a subject area
Get metadata about available data endpoints for a specific subject. Some endpoints may include an embedLink field that provides access to an interactive GIS map for data visualization.
Output schemas not formally documented. Tools return Dict with 'status', 'data', 'metadata' fields, but LLM does not know the structure of nested data objects returned from external API calls. get_data() returns raw API response after cleaning whitespace, but no schema describes what fields are available.
Parameter descriptions lack actionable detail. 'subject' parameter has enum constraint but no description of what each subject represents (e.g., 'warCasualties', what data is included?). 'transportProject' and 'endPointName' in get_data have no format guidance, valid range, or examples.
No pagination support despite fetching from external APIs. get_metadata and get_data return entire API responses without limit or page parameters. If an API returns 1000+ records, context window is exhausted and response is truncated, breaking agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
Error handling provides no recovery guidance. Raises ValueError('Invalid subject...') but does not offer next steps. A bare error message like 'Invalid subject' leaves LLM unable to self-correct; pattern is to return 'Invalid subject: got X. Valid options: [list]' with suggested recovery action.
get_data tool description mentions 'embedLink' field for GIS map visualization but does not explain how LLM should present this to user or whether tool should validate that endPointName matches subject context.
Tool compositions lack explicit chaining guidance. get_metadata lists available endpoints, which users must then pass to get_data. Description does not state 'Call get_metadata first to discover available endPointName values.' This forces agent to infer the workflow.