Snapp MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SNAPP_DEBUG | No | Set to log raw Snapp API traffic to stderr. | |
| SNAPP_BACKEND | No | Backend to use: `mock` for a simulated Snapp or `snapp` for the real Snapp passenger API. | mock |
| SNAPP_MCP_HOME | No | Directory where saved places and current location are stored in `state.json`. | ~/.snapp-mcp |
| SNAPP_MOCK_SPEED | No | Mock clock speed: simulated seconds per real second. | 10 |
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 |
|---|---|
| get_current_locationA | Returns where the user currently is (the last location set with set_current_location). |
| set_current_locationA | Records where the user is right now, used as the default pickup point. |
| search_addressA | Looks up an address or landmark in Iran on OpenStreetMap and returns matching places with coordinates, nearest to the user's current location first. Use it when a place name is ambiguous, then pass the chosen lat,lng to other tools or save it with save_place. |
| list_placesB | Lists the user's saved places (home, work, ...). |
| save_placeC | Saves or updates a named place so it can be used as a pickup or destination. |
| remove_placeC | Deletes a saved place by name. |
| get_ride_quotesA | Gets price and ETA quotes for a ride, one per service type. Does NOT book anything. Show the user the options, then call request_ride with the quote they choose. Quotes expire after 5 minutes. |
| request_rideA | Books a ride using a quote_id from get_ride_quotes. This sends a real driver and charges the user, so only call it after the user has explicitly confirmed the service and price. |
| get_ride_statusA | Shows a ride's status, driver, car, plate, driver location and ETAs. Defaults to the active ride. |
| cancel_rideA | Cancels a ride that hasn't started. Free while searching and for 2 minutes after a driver accepts; after that a cancellation fee applies. Only call when the user asks to cancel. |
| wait_for_ride_updateA | Waits until the ride changes (driver found, driver arrived, trip started, finished, cancelled) and returns the new state, or returns the current state when the wait times out. Call it in a loop to follow a ride and tell the user each change as it happens. |
| suggest_placesA | Finds the addresses the user rides to and from most often (from their recent rides), so they can be saved with save_place (e.g. as home or work). Ask the user which is which before saving. |
| preview_destination_changeA | Shows what the active ride would cost with a different destination. Changes nothing. Show the user the new price, then call change_destination only if they agree. |
| change_destinationA | Changes the active ride's destination. Only call after preview_destination_change and the user agreeing to the new price; pass that price as confirmed_price_toman. |
| get_schedule_quoteA | Prices a ride booked ahead for a given time (Snapp allows today and tomorrow, in 5-minute slots). Scheduled prices are a range, and Snapp may add a scheduling fee. Books nothing; call schedule_ride after the user agrees. |
| schedule_rideA | Books the ride from get_schedule_quote. Only call after the user agreed to the time and price: pass the range's upper price as confirmed_max_price_toman, or, when Snapp gave no estimate, accept_price_set_later: true. |
| list_scheduled_ridesB | Lists rides booked for later. |
| cancel_scheduled_rideC | Cancels a ride booked for later. Only call when the user asks. |
| list_ridesB | Lists recent rides, newest first. |
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 19 tools
Each tool maps to a distinct step in a clear workflow: quote → request, preview → change, schedule quote → schedule. Descriptions explicitly disambiguate the risky pairs (get_ride_quotes 'does NOT book anything', preview_destination_change 'changes nothing') and separate immediate vs. scheduled ride operations. Place tools (list_places, search_address, save_place, remove_place, suggest_places) are also cleanly partitioned.
Nearly all 19 names follow snake_case verb_noun (get_ride_status, cancel_scheduled_ride, change_destination). Minor deviations: singular/plural drift within the place family (save_place/remove_place vs list_places/suggest_places) and a four-word outlier wait_for_ride_update. Still highly predictable overall.
At 19 tools the surface leans heavy, but every tool maps to a real operation in a ride-hailing flow, and the safety-critical preview/confirm pairs justify their extra entries. No tool appears redundant or filler.
Strong coverage: full place CRUD plus suggestion/search, location get/set, immediate and scheduled ride lifecycle (quote, book, status, cancel, polling), destination change, and ride history. Minor gaps remain — no way to edit or reschedule an existing scheduled ride, and no receipt/fare-detail or driver-contact operation.