mcp-yango-delivery
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YANGO_DELIVERY_LANG | No | Accept-Language header value. | en |
| YANGO_DELIVERY_TOKEN | Yes | OAuth Bearer token from the delivery cabinet. | |
| YANGO_DELIVERY_BASE_URL | No | API root override. | https://b2b.taxi.yandex.net |
| YANGO_DELIVERY_TIMEOUT_MS | No | Per-request timeout, ms. | 60000 |
| YANGO_DELIVERY_MAX_RETRIES | No | Retries on 429 (and 5xx for reads). | 3 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_priceA | Preliminary delivery cost estimate WITHOUT creating a claim — the pricing method for countries outside Russia. Returns price (a decimal STRING, not a number!), currency_rules {code, sign, template}, distance_meters, eta (minutes) and zone_id. Route points take [longitude, latitude] coordinates and/or a full address string. Typical errors: 400 address_not_found (address not recognized), 409 estimating.cant_construct_route (no route between the points), 409 estimating.requirement_unavailable. |
| create_claimA | Creates a delivery claim. IMPORTANT: the claim is NOT dispatched immediately — it goes through estimation (status: new → estimating → ready_for_approval) and must then be confirmed with accept_claim, or pass auto_accept=true. Returns id (claim_id), status, version, route_points, pricing, created_ts. Verify success via get_claim: estimation errors can arrive as an error_messages array inside a 200 response. request_id makes the call idempotent: a retry with the same request_id returns the same claim, not a duplicate. |
| get_claimA | Full claim information: status, version (needed for accept/cancel), items, route_points (with visit status), pricing {offer, final_price, currency}, performer_info (courier name, vehicle, transport type), eta, created_ts/updated_ts. Known statuses: new, estimating, estimating_failed, ready_for_approval, accepted, performer_lookup, performer_draft, performer_found, performer_not_found, pickup_arrived, ready_for_pickup_confirmation, pickuped, delivery_arrived, ready_for_delivery_confirmation, delivered, delivered_finish, pay_waiting, returning, return_arrived, ready_for_return_confirmation, returned, returned_finish, failed, cancelled, cancelled_with_payment, cancelled_by_taxi, cancelled_with_items_on_hands. CAUTION: estimation errors can arrive as an error_messages array [{code, message}] inside a successful 200 response — check both the HTTP error and this field. |
| accept_claimA | Confirms a claim after successful estimation (status ready_for_approval) and starts the courier search — from this point the delivery is actually ordered. The priced offer inside a claim expires ~10 minutes after estimation, so accept promptly. version comes from get_claim. 409 errors: inappropriate_status (wrong claim status), old_version (stale version — re-read the claim), offer_expired (re-create the claim), state_mismatch. |
| get_cancel_infoA | Cancellation terms for a claim — call BEFORE cancel_claim. Returns cancel_state: free (free of charge), paid (a fee applies — price/price_with_vat and currency are returned) or unavailable (the claim can no longer be cancelled). |
| cancel_claimA | Cancels a claim (including an already accepted one). Get the terms with get_cancel_info first and pass its cancel_state: with paid the cancellation fee is charged. version comes from get_claim. 409 errors: old_version, inappropriate_status, free_cancel_is_unavailable. |
| search_claimsA | Search claims by filters with pagination (sorted by creation date). Returns claims (each shaped like get_claim) and a cursor for the next page. Pagination: either offset/limit, or cursor-based — pass the cursor from the previous response (other filters are then not needed). |
| get_performer_positionA | Current courier geoposition for an active claim: position {lat, lon, timestamp (unix), accuracy, speed (m/s), direction (0–360°, clockwise from north)} and route_points with sharing_link. Errors: 404 — claim or courier position not found, 409 — the claim is not active or no courier is assigned. |
| get_tracking_linksA | Public courier tracking links — safe to share with the recipient. Returns route_points [{id, type, visit_order, sharing_link}]; sharing_link is available only for type=destination points. 409 errors: inappropriate_status, unknown_tracking_links. |
| get_points_etaA | Expected arrival times per route point plus the current courier position. Works only while the claim is active and a courier is assigned. Returns route_points [{id, address, type, visit_order, visit_status (pending|arrived|visited|skipped), visited_at {expected, expected_waiting_time_sec, actual}}] and performer_position. Errors: 404 not_found; 409 — the claim is inactive, has no courier, or the courier position is unknown. |
| get_courier_phoneA | Temporary forwarded phone number to call the courier of an active claim: phone (e.g. "+79099999998"), ext (extension, e.g. "0163") and ttl_seconds (how long the number stays operational). Errors: 400 invalid_point_phone; 404 — claim or courier not found; 409 inappropriate_status (the order is already completed). |
| get_confirmation_codeA | Pickup/delivery confirmation code for the current point of the claim (when a code applies). Returns code (string) and attempts (remaining code entry attempts). 404 — claim not found or issuing a confirmation code via the API is prohibited. |
| raw_requestA | Escape hatch: a direct call to any method of the Yango Delivery claims B2B API — for endpoints without a dedicated tool (tariffs, delivery-methods, claims/proof-of-delivery/info, claims/edit, claims/apply-changes, claims/return, claims/bulk_info, claims/journal, …). Paths are relative to the API root, e.g. "b2b/cargo/integration/v2/tariffs". query becomes the query string, body is sent as JSON. CAUTION: this tool can perform state-changing operations; 5xx/network errors are retried only for GETs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct resource and action: creating, checking price, accepting, cancelling, searching, retrieving, tracking position/ETA, sharing links, contacting courier, confirming codes. Even closely related tools like get_performer_position, get_points_eta, and get_tracking_links are clearly differentiated by their descriptions.
The vast majority follow a consistent verb_noun pattern (get_claim, create_claim, cancel_claim, search_claims). The only deviation is 'raw_request', which breaks the pattern but serves as an obvious escape hatch rather than a regular domain operation.
13 tools is well within the ideal 3-15 range for a domain-specific server. Each tool serves a clear purpose in the delivery claim lifecycle, and the count feels neither thin nor bloated.
The tool set covers the full claim lifecycle: create, price check, accept, cancel (with cancel info), retrieve, and search. It also includes operational tools for tracking, ETA, courier contact, and confirmation codes. The raw_request escape hatch ensures no endpoint is unreachable, eliminating noticeable gaps.