| car | Yes | `sprinter` = a seat on the scheduled minibus (the default choice) | |
| dir | Yes | `tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi | |
| lat | No | | |
| lng | No | | |
| pax | Yes | Passengers; at most `types[car].max` | |
| date | Yes | YYYY-MM-DD, today or later (Tbilisi date), at most a year ahead | |
| lang | No | The language we should use with the passenger (an unknown value is treated as `en`) | en |
| name | Yes | The passenger's name | |
| time | Yes | One of `schedule[dir]` from /api/config, or `other` for a time outside the timetable (whole vehicle; the dispatcher sets the price) | |
| agent | No | If an AI agent makes the booking: its name (e.g. `ChatGPT`, `Claude`). Shown to the dispatcher. When you leave it out, your MCP client's name is used. | |
| notes | No | Flight number, luggage, a child seat request and the like (longer text is cut to 1000 characters) | |
| phone | Yes | The passenger's phone in international format, e.g. +995 5xx xx xx xx | |
| point | Yes | A departure point id from `points[dir]` in /api/config, or `@addr` for pick-up from an address (extra fee, confirmed by the dispatcher) | |
| whole | No | `true` = the whole vehicle for this party at a timetable time: the total is `types[car].whole[currency]` from /api/config (not per passenger). Only when that price exists for the chosen currency; `pax` still says how many travel | |
| address | No | Required with `point: "@addr"` unless `lat`/`lng` are given | |
| currency | Yes | One of `currencies` from /api/config; the price is taken from the server | |