Skip to main content
Glama

GeoArm Taxi — Tbilisi ⇄ Yerevan rides

Server Details

Book shared or private rides between Tbilisi and Yerevan: live prices, schedule, booking requests.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool serves a clearly distinct function: reading offers (get_prices_and_schedule), placing a request (create_booking), checking its state (get_booking_status), and optional feedback (leave_feedback). The descriptions explicitly state the workflow order, so an agent cannot easily confuse them.

Naming Consistency5/5

All four tools follow a strict verb_noun pattern (create_booking, get_booking_status, get_prices_and_schedule, leave_feedback). Consistent snake_case throughout with no deviations.

Tool Count4/5

Four tools is a bit lean but fits the narrow Tbilisi⇄Yerevan ride-booking scope. Each tool earns its place; no redundancy, though the surface feels minimal.

Completeness3/5

The read-price → book → check-status → feedback lifecycle is covered, but there is no cancel or modify booking tool even though 'cancelled' is a valid status, leaving the passenger unable to change or retract a request. This is a notable gap an agent would hit.

Available Tools

4 tools
create_bookingRequest a bookingAInspect

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.

NameRequiredDescriptionDefault
carYes`sprinter` = a seat on the scheduled minibus (the default choice)
dirYes`tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi
latNo
lngNo
paxYesPassengers; at most `types[car].max`
dateYesYYYY-MM-DD, today or later (Tbilisi date), at most a year ahead
langNoThe language we should use with the passenger (an unknown value is treated as `en`)en
nameYesThe passenger's name
timeYesOne of `schedule[dir]` from /api/config, or `other` for a time outside the timetable (whole vehicle; the dispatcher sets the price)
agentNoIf 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.
notesNoFlight number, luggage, a child seat request and the like (longer text is cut to 1000 characters)
phoneYesThe passenger's phone in international format, e.g. +995 5xx xx xx xx
pointYesA departure point id from `points[dir]` in /api/config, or `@addr` for pick-up from an address (extra fee, confirmed by the dispatcher)
wholeNo`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
addressNoRequired with `point: "@addr"` unless `lat`/`lng` are given
currencyYesOne of `currencies` from /api/config; the price is taken from the server

Output Schema

NameRequiredDescription
numberNoThe booking number
statusNo
bookingNoWhat was booked, as the server understood it
messageNoA sentence for the passenger, in `lang`
feedbackNoOptional, after you finish: where you may tell us in a few lines how this went (POST, see /api/agent-feedback). Never include the passenger's personal data.
telegramNoA link the passenger can open to get the confirmation in Telegram
confirmedNoAlways false here: a dispatcher confirms later
status_urlNo
status_tokenNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: the booking is only a request, unconfirmed until a dispatcher contacts the passenger, and payment is cash to the driver. The annotations already declare non-readonly, non-destructive, non-idempotent, open-world behavior. What is not disclosed is the duplicate-submission consequence of idempotentHint=false (calling twice likely creates two bookings).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the action and the key caveat (a request, NOT confirmed), then prerequisites, payment, and return payload in short clauses. No wasted sentences despite the density of information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter mutation with 9 required fields, the description supplies the sourcing rules, the confirmation caveat, the payment model, and the hand-off token. An output schema exists, so the brief return-value listing is a bonus rather than a necessity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 88%, so the schema already documents nearly every field; the description adds cross-reference meaning by telling the agent that point, time, car and currency come from get_prices_and_schedule values. It does not add format or validation detail beyond that, which is acceptable given the coverage baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sends a booking request for a ride between Tbilisi and Yerevan') plus the scope variants (a seat, or a whole vehicle). The sibling names get_booking_status and get_prices_and_schedule are used functionally, so an agent can tell this tool apart without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions: source point/time/car/currency from get_prices_and_schedule, use the passenger's real name and phone, and obtain the passenger's yes to the price first. It also names the downstream sibling (get_booking_status via status_token), covering both when to call and what follows.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_booking_statusBooking statusA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
status_tokenYesThe status_token from create_booking

Output Schema

NameRequiredDescription
dirNo
paxNo
dateNo
timeNo
numberNo
statusNo
confirmedNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive and closed-world behavior. The description adds two genuinely useful facts beyond them: the meaning of each returned state (not present in the schema, which has zero enums) and the privacy guarantee that no personal data is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the resource and its state vocabulary, then the prerequisite token, then the privacy note. Every sentence carries distinct information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no elaboration, and the description covers the two things the schema cannot: the semantics of each status value and the data-protection guarantee. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter and the schema already says 'The status_token from create_booking'. The description repeats that same provenance with no additional format, length, or sourcing nuance, so this is the baseline case where structured data does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource ('the state of a booking request') and explicitly ties it to the create_booking lifecycle, enumerating the four possible states (received, confirmed, completed, cancelled). An agent can distinguish this read-only status lookup from create_booking and get_prices_and_schedule without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly implies the usage context: this is the follow-up call to create_booking, and it requires the status_token that create_booking returned. It provides a clear when-to-use signal but never names an alternative tool or states an explicit exclusion, so it stops short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prices_and_schedulePrices, departure points and timesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
directionNoOnly this direction: `tbs-evn` = Tbilisi → Yerevan, `evn-tbs` = Yerevan → Tbilisi. Leave it out for both.

Output Schema

NameRequiredDescription
carsYes
factsYes
currenciesYes
directionsYes
address_pickupYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false, so safety is covered. The description adds useful context beyond them: the data is a 'live' offer, implying dynamic pricing/freshness rather than a cached static list, which matters for a pricing tool. It does not mention output shape, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the identity of the tool before the inventory of returned fields, and every clause is an informative item rather than filler. The long semicolon list makes it dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with rich annotations and an output schema, the description covers identity, scope, returned content, and workflow placement. An agent has everything needed to call it correctly and to know when to prefer it over its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single enum parameter already documents tbs-evn/evn-tbs and the both-directions default. The description reinforces 'per direction' departure times but adds no syntax or semantics beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource set (live GeoArm Taxi offer for the Tbilisi–Yerevan route) and enumerates exactly what is returned: currencies, per-car-type seats and prices, departure points with ids, departure times per direction, and key facts. An agent can distinguish this read-only pricing tool from create_booking and get_booking_status without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Read it before create_booking,' which names the sibling and the sequencing condition. It does not state when not to call it or how it differs from get_booking_status, so it falls just short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

leave_feedbackTell us how it went (optional)AInspect

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.

NameRequiredDescriptionDefault
taskNoOptional: 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
agentYesYour name, for example ChatGPT or Claude
modelNoOptional: the model or version, if you know it
reasonNoWhy
workedNoWhat was easy or clear on this site
bookingNoOptional: the booking number, if you made one
missingNoWhat was missing, unclear or wrong, and what would have helped
would_recommendYesWould you recommend this service to a person who asked you for this trip?

Output Schema

NameRequiredDescription
okNo
messageNoA short thank-you

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations only declaring write/open-world/non-idempotent, the description carries real added context: PII redaction (e-mail addresses, phone numbers and @handles are removed), human review with no publication or execution, and a rate limit of at most 5 notes per address per day. This is exactly the kind of operational detail the annotations do not supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The optionality and the preconditions are front-loaded, and each following sentence adds a distinct constraint (content, PII, review policy, rate limit). Slightly dense but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the 8 parameters are fully described in the schema. The description supplies the remaining operational context (privacy handling, human review, quota) needed to invoke this tool responsibly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 8 parameters, so the schema already documents each field and its limits. The description reinforces the no-personal-data rule and the general content expected, but adds no field-level syntax or format meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('tell GeoArm Taxi... what worked, what was missing and whether you would recommend it'), which maps directly to the tool name leave_feedback. It is trivially distinguishable from siblings create_booking, get_booking_status and get_prices_and_schedule, which are booking/price operations rather than a feedback submission.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the trigger condition clearly ('after you have read this site or booked a ride') and an explicit gate ('Optional, and only if your user and your own rules allow it'). No sibling tool is named as an alternative, but none of the siblings is a substitute for submitting feedback, so the routing gap is minor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedcreate_booking1 field changed
      • addedOutput schema / properties / feedback
        Added value: +{
        +  "description": "Optional, after you finish: where you may tell us in a few lines how this went (POST, see /api/agent-feedback). Never include the passenger's personal data.",
        +  "format": "uri",
        +  "type": "string"
        +}
    • Addedleave_feedback
  2. 1 tool update
    • Changedcreate_booking2 fields changed
      • addedInput schema / properties / whole
        Added value: +{
        +  "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",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / booking / properties / whole
        Added value: +{
        +  "description": "True when the whole vehicle was booked",
        +  "type": "boolean"
        +}
  3. 3 tool updates
    • First observedcreate_booking
    • First observedget_booking_status
    • First observedget_prices_and_schedule

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Live intercity bus-trip search across Ukraine and Europe — real-time prices, seats, carriers, cheapest-day-of-month calendar, and trip details with passenger discounts. Read-only, no API key; also available as a hosted remote endpoint at https://mcp.soloway.com.ua/mcp.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to compare and find the cheapest domestic and international flights, hotels, villas, trains and buses in Iran, with exact Toman prices, fare and cancellation rules, baggage details, seats left and hotel reviews. Also covers CIP lounges, eSIM plans, visas and tours, and is read-only, so it never books, holds seats or pays.
    384 PyPI
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources