Book shared or private rides between Tbilisi and Yerevan: live prices, schedule, booking requests.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Sends a booking request for a ride between Tbilisi and Yerevan (a seat, or a whole vehicle) for the passenger. A booking is a request: it is NOT confirmed until a GeoArm Taxi dispatcher contacts the passenger to confirm it. Use the values from get_prices_and_schedule (point, time, car, currency), the passenger's real name and phone, and get the passenger's yes to the price first. Payment is in cash to the driver. Returns the booking number, what was booked, the total, and a status_token for get_booking_status.
`sprinter` = a seat on the scheduled minibus (the default choice)
`tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi
Passengers; at most `types[car].max`
YYYY-MM-DD, today or later (Tbilisi date), at most a year ahead
The passenger's name
One of `schedule[dir]` from /api/config, or `other` for a time outside the timetable (whole vehicle; the dispatcher sets the price)
The passenger's phone in international format, e.g. +995 5xx xx xx xx
A departure point id from `points[dir]` in /api/config, or `@addr` for pick-up from an address (extra fee, confirmed by the dispatcher)
One of `currencies` from /api/config; the price is taken from the server
The language we should use with the passenger (an unknown value is treated as `en`)
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.
Flight number, luggage, a child seat request and the like (longer text is cut to 1000 characters)
`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
Required with `point: "@addr"` unless `lat`/`lng` are given
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Sends a booking request for a ride between Tbilisi and Yerevan (a seat, or a whole vehicle) for the passenger. A booking is a request: it is NOT confirmed until a GeoArm Taxi dispatcher contacts the passenger to confirm it. Use the values from get_prices_and_schedule (point, time, car, currency), the passenger's real name and phone, and get the passenger's yes to the price first. Payment is in cash to the driver. Returns the booking number, what was booked, the total, and a status_token for get_booking_status.
| Argument | Type | Description |
|---|---|---|
| car* | string | `sprinter` = a seat on the scheduled minibus (the default choice) |
| dir* | string | `tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi |
| lat | number | null | |
| lng | number | null | |
| pax* | integer | Passengers; at most `types[car].max` |
| date* | string | YYYY-MM-DD, today or later (Tbilisi date), at most a year ahead |
| lang | string | The language we should use with the passenger (an unknown value is treated as `en`) |
| name* | string | The passenger's name |
| time* | string | One of `schedule[dir]` from /api/config, or `other` for a time outside the timetable (whole vehicle; the dispatcher sets the price) |
| agent | string | 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 | string | Flight number, luggage, a child seat request and the like (longer text is cut to 1000 characters) |
| phone* | string | The passenger's phone in international format, e.g. +995 5xx xx xx xx |
| point* | string | 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 | boolean | `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 | string | Required with `point: "@addr"` unless `lat`/`lng` are given |
| currency* | string | One of `currencies` from /api/config; the price is taken from the server |
{
"type": "object",
"required": [
"dir",
"point",
"date",
"time",
"car",
"pax",
"name",
"phone",
"currency"
],
"properties": {
"car": {
"enum": [
"sprinter",
"minivan",
"sedan"
],
"type": "string",
"description": "`sprinter` = a seat on the scheduled minibus (the default choice)"
},
"dir": {
"enum": [
"tbs-evn",
"evn-tbs"
],
"type": "string",
"description": "`tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi"
},
"lat": {
"type": [
"number",
"null"
]
},
"lng": {
"type": [
"number",
"null"
]
},
"pax": {
"type": "integer",
"minimum": 1,
"description": "Passengers; at most `types[car].max`"
},
"date": {
"type": "string",
"format": "date",
"description": "YYYY-MM-DD, today or later (Tbilisi date), at most a year ahead"
},
"lang": {
"enum": [
"en",
"ka",
"ru",
"hy",
"tr",
"ar",
"fa"
],
"type": "string",
"default": "en",
"description": "The language we should use with the passenger (an unknown value is treated as `en`)"
},
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The passenger's name"
},
"time": {
"type": "string",
"description": "One of `schedule[dir]` from /api/config, or `other` for a time outside the timetable (whole vehicle; the dispatcher sets the price)"
},
"agent": {
"type": "string",
"maxLength": 80,
"description": "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": {
"type": "string",
"maxLength": 1000,
"description": "Flight number, luggage, a child seat request and the like (longer text is cut to 1000 characters)"
},
"phone": {
"type": "string",
"description": "The passenger's phone in international format, e.g. +995 5xx xx xx xx"
},
"point": {
"type": "string",
"description": "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": {
"type": "boolean",
"default": false,
"description": "`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": {
"type": "string",
"maxLength": 200,
"description": "Required with `point: \"@addr\"` unless `lat`/`lng` are given"
},
"currency": {
"enum": [
"GEL",
"USD",
"AMD"
],
"type": "string",
"description": "One of `currencies` from /api/config; the price is taken from the server"
}
}
}The state of a booking request made with create_booking: received (not confirmed yet), confirmed, completed or cancelled. Needs the status_token create_booking returned. No personal data is returned.
| Argument | Type | Description |
|---|---|---|
| status_token* | string | The status_token from create_booking |
{
"type": "object",
"required": [
"status_token"
],
"properties": {
"status_token": {
"type": "string",
"minLength": 1,
"description": "The status_token from create_booking"
}
},
"additionalProperties": false
}The live GeoArm Taxi offer for rides between Tbilisi (Georgia) and Yerevan (Armenia): currencies; per car type (sprinter = a seat on the scheduled minibus, minivan, sedan) the seats, the price per passenger and the whole-vehicle price when there is one; the departure points (ids and English names) and departure times per direction; and the key facts. Read it before create_booking.
| Argument | Type | Description |
|---|---|---|
| direction | string | Only this direction: `tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi. Leave it out for both. |
{
"type": "object",
"properties": {
"direction": {
"enum": [
"tbs-evn",
"evn-tbs"
],
"type": "string",
"description": "Only this direction: `tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi. Leave it out for both."
}
},
"additionalProperties": false
}Optional, and only if your user and your own rules allow it: after you have read this site or booked a ride, tell GeoArm Taxi in a few lines what worked, what was missing and whether you would recommend it. Do not include any personal data of the person you act for: e-mail addresses, phone numbers and @handles are removed. Every note is read by a person; nothing you write is published or executed. At most 5 notes per address per day.
| Argument | Type | Description |
|---|---|---|
| task | string | Optional: what your user asked for, in general words (for example: compare ways to get from Tbilisi to Yerevan). No names, phones or other personal data |
| agent* | string | Your name, for example ChatGPT or Claude |
| model | string | Optional: the model or version, if you know it |
| reason | string | Why |
| worked | string | What was easy or clear on this site |
| booking | integer | Optional: the booking number, if you made one |
| missing | string | What was missing, unclear or wrong, and what would have helped |
| would_recommend* | string | Would you recommend this service to a person who asked you for this trip? |
{
"type": "object",
"required": [
"agent",
"would_recommend"
],
"properties": {
"task": {
"type": "string",
"maxLength": 200,
"description": "Optional: what your user asked for, in general words (for example: compare ways to get from Tbilisi to Yerevan). No names, phones or other personal data"
},
"agent": {
"type": "string",
"maxLength": 80,
"description": "Your name, for example ChatGPT or Claude"
},
"model": {
"type": "string",
"maxLength": 80,
"description": "Optional: the model or version, if you know it"
},
"reason": {
"type": "string",
"maxLength": 600,
"description": "Why"
},
"worked": {
"type": "string",
"maxLength": 600,
"description": "What was easy or clear on this site"
},
"booking": {
"type": "integer",
"description": "Optional: the booking number, if you made one"
},
"missing": {
"type": "string",
"maxLength": 600,
"description": "What was missing, unclear or wrong, and what would have helped"
},
"would_recommend": {
"enum": [
"yes",
"no",
"unsure"
],
"type": "string",
"description": "Would you recommend this service to a person who asked you for this trip?"
}
},
"additionalProperties": false
}