snapp-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SNAPP_MCP_PROXY | No | HTTP proxy for every request, e.g. http://user:pass@host:port |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| find_locationA | Turn a place name or address into latitude/longitude. Use first when the user gives an address instead of coordinates; every food_* and market_* tool needs lat/long. Results are biased toward near_lat/near_long (default Tehran), so pass a city center for other cities. |
| reverse_geocodeA | Describe coordinates in words (point of interest, street, neighbourhood). Use to confirm a delivery point with the user before searching. |
| list_citiesA | List cities Snappfood serves, with id, names and center coordinates. Use the center coordinates as a rough delivery point when the user only names a city. |
| food_searchA | Search dishes by name near a delivery point, with price, discount and restaurant. Use for "find X near me" or "discounted X". With sort=relevance it is one fast call on the search index; cheapest / biggest_discount also drop side items (sauces, drinks, extras) and confirm prices against the live menus. For the cheapest X across many restaurant menus use food_find_cheapest. |
| food_find_cheapestA | Find the cheapest way to get a dish: scans menus of nearby open restaurants plus FoodParty deals. Use when the user wants the lowest total price for X. Ranks by total = food price after discount + packaging + delivery fee; check min_order, since a cheap dish may not reach the restaurant's minimum basket. Slower than food_search. |
| food_restaurantsA | List restaurants delivering to a point, with rating, delivery fee, ETA and coupon info. Use to browse or rank restaurants (best rated, free delivery, with discount) or to find a restaurant's vendor code by name. No dish prices: use food_menu for those. |
| food_menuA | Get one restaurant's menu: every item with price, discount, packaging fee and availability. Use after picking a restaurant (vendor code from food_search / food_restaurants). final_price = price - discount; packaging is added per item at checkout. |
| food_order_costsA | Get the extra costs and conditions of ordering from one restaurant. Use before recommending a restaurant: delivery fee and ETA here, minimum order, and coupons (each with the basket total it needs and whether it is first-order only). Per-item packaging fees are in food_menu. |
| food_reviewsA | Read recent customer reviews of a restaurant (rating, text, what they ordered, vendor reply). Use to judge quality, delays or packaging before recommending a restaurant. |
| food_party_dealsA | List today's FoodParty flash deals (deep discounts, limited stock, time window) still in stock. Use for "what's on a big discount right now". Deals run only inside the window (starts/ends); outside it the list is empty. |
| food_meal_for_oneA | List single-person meals (at most 299k Toman, free delivery), cheapest first. Use for "cheap meal for one". Check min_order: a cheap meal may not reach the restaurant's minimum basket on its own. |
| food_discounted_vendorsA | List restaurants running a discount now, plus the short "Gem" hunt discount if one is live. Use for "which restaurants have offers". Vendor-level only; open food_menu for prices. |
| market_searchA | Search a grocery product across all SnappMarket stores delivering to the point. Use to see which stores carry an item and at what price. Returns stores (open or not) with up to ~5 matching products each. For a single flat cheapest-first list use market_find_cheapest instead. |
| market_find_cheapestA | Find the cheapest in-stock offers for a grocery product near the point. Use when the user wants the lowest price for an item. Scans the search results of open stores that deliver to the point and returns one flat list sorted by final price (price - discount). Check delivery_fee and min_order before recommending a store. |
| market_storesA | List SnappMarket stores delivering to the point, with delivery fee, minimum order and rating. Use to pick a store (cheapest delivery or best rated) before browsing it with market_store_products. |
| market_store_infoA | Get one store's delivery fee, minimum order, opening hours, rating and coupons for the point. Use before recommending a store to know the true cost of a basket: sum(final prices) + delivery_fee - applicable coupon, and the basket must reach min_order. Read each coupon's conditions; isApplicable is false for logged-out users. |
| market_store_productsA | Browse or search the products of one store.
|
| market_categoriesA | List SnappMarket product categories and sub-categories with their ids. The ids work as category_id / subcategory_id in market_store_products. The first entry (id 99999999) is the virtual kalabarg (government e-coupon eligible) category. |
| market_productA | Get one product's details and price in one store. Use to confirm the current price/discount of an item the user picked. |
| market_party_dealsA | List current SnappMarket "market party" flash deals near the point, biggest discount first. Use when the user wants the best grocery discounts right now. Each order may contain at most capacity_per_order deal items. segment 'new_user' deals are only for new customers. |
| market_reviewsA | Read a store's 30 most relevant customer comments, rating 0-5. Use as a quality check before recommending a store. The API returns the same 30 comments whatever the page, so there is no paging. |
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 21 tools
Each tool targets a distinct resource+action, and overlapping pairings (food_search vs food_find_cheapest, market_search vs market_find_cheapest, food_restaurants vs food_discounted_vendors) are explicitly differentiated in their descriptions. A few deal/discovery tools (party_deals, discounted_vendors, meal_for_one) sit close together, but the descriptions give clear routing cues.
Strong, predictable grouping with food_* and market_* prefixes and snake_case verb_noun names throughout (food_search, market_stores, market_store_products). Minor deviations exist: the location utilities (find_location, reverse_geocode, list_cities) carry no domain prefix, and some names embed the verb mid-string (food_find_cheapest).
21 tools is on the heavy side, but it serves two full commerce domains (Snappfood and SnappMarket), each with a coherent search/browse/detail/deals/reviews surface. No tool feels redundant given the dual-domain scope, though it is near the upper bound of comfortable scoping.
Covers discovery, menus/products, cost breakdown (delivery, min order, coupons), reviews and flash deals across both verticals, leaving few dead ends for a browsing/research workflow. The main gap is transactional tools (cart/order placement) and user-specific info, though these may be intentionally out of scope.