This server has significant definition quality gaps. Tool descriptions are present but generic (most are 20-50 chars, below the 194-char baseline). Parameter descriptions are minimal or absent. Most critically, 6 of 8 tools have NO input schema visible in the code, they accept empty objects or are inferred. The make_query tool has a schema, but others like get_product_names, get_activities, get_product_type_options lack explicit schema definitions. Tool naming is reasonable (verb_noun pattern), but composition issues exist: get_product_type_options, get_product_subtype_options, and get_gender_options all have identical descriptions ('Get product type options'), indicating copy-paste and poor differentiation. Error handling is minimal, tools raise ValueError but provide no recovery guidance. No output schemas are documented.
Filter by product name.
Get activity and name key-value pairs.
Get product type options.
Get product image.
Get product names from the On Running website.
Get product type options.
Get product type options.
6 of 8 tools have no visible input schema. Tools like get_product_names, get_activities, get_product_image, and the three options-getter tools accept empty input objects with no schema definition.
Three tools (get_product_type_options, get_product_subtype_options, get_gender_options) have identical descriptions ('Get product type options'), violating the naming clarity rule. LLMs cannot distinguish between them. Descriptions must clarify what each returns.
Tool descriptions are too short (20-50 chars vs 194-char baseline). Most lack context on WHEN to use the tool or what it returns. E.g., 'Get product names from the On Running website' does not explain that make_query must be called first or what the return type is.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
Make a query to the On Running API.
Stateful SESSION_STATE dict in server.py violates stateless request handling. Tools depend on prior make_query call, but this dependency is not documented in descriptions. Error messages ('Please make a query first') are not actionable recovery guidance.
No output schemas documented. Tools return list[str], dict[str, str], Item, Image, etc., but LLMs have no schema to understand structure.