Server has 29 tools with basic naming (verb_noun pattern mostly followed) but critical gaps in schema completeness and parameter descriptions. All tools visible in src/index.ts with explicit registration. Tool names are clear (get_*, create_*, update_*, delete_*) but parameter schemas are severely underdocumented. Most parameters lack detailed descriptions explaining format, constraints, or valid ranges. Output schemas are not documented. Generic 'body' parameters (tools 4, 6, 7, 10, 11, 13, 15, 23, 29) expose unstructured object types with minimal guidance. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Tool descriptions are present but brief (10-50 chars typical), lacking context on when to use each tool vs similar ones.
Make a raw API call to Ukrposhta
Create a new address
Create a new client
Create a new shipment
Create a new shipment group
Delete a shipment by UUID
Get an address by ID
Get address by postcode
Generic 'body' parameters (8 tools: create_address, update_address, create_client, update_client, create_shipment, update_shipment, create_shipment_group, search_city, call_api) lack schema definition. Described only as 'Address data', 'Client data', etc. LLMs cannot infer required fields, types, or constraints.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., shipment UUID, address ID). Responses are opaque.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Get all statuses of a shipment by barcode
Get cities by region ID, district ID, and city name
Get a client by UUID
Get a client by external ID
Get districts by region ID and district name
Get the form 103a URL for a shipment group
Get the label URL for a shipment group
Get the last status of a shipment by barcode
Get nearest post offices by latitude and longitude
Get post office by postcode
Get post office hours by zip code
Get post offices by city ID
Get regions by region name
Get the route of a shipment by barcode
Get a shipment by UUID
Get a shipment group by UUID
Get the label URL for a shipment
Search for cities with custom parameters
Update an address by ID
Update a client by UUID
Update a shipment by UUID
No error handling or recovery guidance. Tools do not document what errors are possible, whether they are retryable, or what the LLM should do next. E.g., 'barcode not found' vs 'API timeout' are indistinguishable to the agent.
Destructive tool (delete_shipment) lacks confirmation or dry-run support. No warning in description that this operation is irreversible. Agents may delete shipments unintentionally.
Tool descriptions are too brief (10-50 chars typical). Lack context on when to use each tool vs similar ones. E.g., get_last_status vs get_all_statuses distinction is unclear. No guidance on prerequisites or dependencies.