Snappfood & SnappMarket
PYPI · SNAPP-MCP
Unofficial read-only Snappfood & SnappMarket: search food and groceries, compare prices, deals.
Available components
Last scanned (2 hours ago)
Scores higher than 84% of PyPI servers
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 35 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to sepehr071/snapp-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability71
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 2608 tokens (~124/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
- Stability check failed: the tool surface changed between 0.1.1 and 0.3.1: 0 tool removals, 21 breaking changes, 0 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 23 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 22 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.3.0 → 0.3.1 functional
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10.
- 19 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- Package version: 0.1.3 → 0.3.0 functional
- 18 Oct 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.2.0 → 0.3.0 functional
- 16 Oct 26 −7
- Stability: 0.43 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Stability: 0.43 → fail ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 144 → 121 ▲ functional
- Schema quality: excellent → good functional
- Package version: 0.1.3 → 0.2.0 functional
- 14 Oct 26 +38
- Injection markers: unverified → pass ▲ security
- Tool coverage: unverified → 100 ▲ functional
- Stability: unverified → 0.40 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- 13 Oct 26 0
- Package version: 0.1.2 → 0.1.3 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed pypi/snapp-mcp@0.3.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | sepehr071/snapp-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/snapp-mcp/.github/workflows/publish.yml@refs/tags/v0.3.1 |
| Rekor log index | 3390430380 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:0f350bb7ec2d7c9ebccf79a84c1f3bfbd34c323a164addde36975b127fbb0ca6 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 35 packages
| Packages resolved | 35 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
find_location Find location ~119
Turn a place name or address into latitude/longitude. Use first when the user gives an address; food_* and market_* tools need lat/long. Biased toward near_lat/near_long (default Tehran): pass a city center for other cities.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max places to return. |
| near_lat | – | – | Bias latitude (e.g. a city center from list_cities). |
| near_long | – | – | Bias longitude. |
| query | string | yes | Place, street or landmark, e.g. 'میدان ونک'. |
No output schema declared.
No examples provided.
food_discounted_vendors Discounted restaurants ~68
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: food_menu has prices.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
No output schema declared.
No examples provided.
food_find_cheapest Find cheapest dish ~137
Find the cheapest way to get a dish: scans menus of nearby open restaurants plus FoodParty deals. Use for the lowest total price of X. Ranks by food price after discount + packaging + delivery fee; check min_order, a cheap dish may not reach the minimum basket. Slower than food_search.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max dishes. |
| long | number | yes | Delivery point longitude. |
| max_restaurants | integer | – | Open restaurants' menus to scan (more = slower). |
| query | string | yes | Dish word, e.g. 'پیتزا'. |
No output schema declared.
No examples provided.
food_meal_for_one Meals for one ~93
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 minimum basket.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max meals. |
| long | number | yes | Delivery point longitude. |
| max_price | – | – | Max final price, Toman. |
No output schema declared.
No examples provided.
food_menu Restaurant menu ~114
Get one restaurant's menu: every item with price, discount, packaging fee and availability. Use after picking a restaurant. final_price = price - discount; packaging is added per item at checkout.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max items. |
| long | number | yes | Delivery point longitude. |
| query | – | – | Only items whose title contains this. |
| vendor_code | string | yes | Vendor code, e.g. '947evd' (from food_search / food_restaurants). |
No output schema declared.
No examples provided.
food_order_costs Order costs ~108
Get the extra costs and conditions of ordering from one restaurant. Use before recommending a restaurant: delivery fee, ETA, minimum order and coupons (with the basket total each needs and whether it is first-order only). Packaging is per item in food_menu.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
| vendor_code | string | yes | Vendor code, e.g. '947evd' (from food_search / food_restaurants). |
No output schema declared.
No examples provided.
food_party_deals FoodParty deals ~108
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 starts/ends; outside it the list is empty.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max deals. |
| long | number | yes | Delivery point longitude. |
| query | – | – | Only deals whose title contains this. |
| sort | string | – | Order of the deals. |
No output schema declared.
No examples provided.
food_restaurants List restaurants ~170
List restaurants delivering to a point, with rating, delivery fee, ETA and coupon info. Use to browse or rank restaurants or to find a vendor code by name. No dish prices: use food_menu.
| Name | Type | Req | Description |
|---|---|---|---|
| free_delivery | boolean | – | Free delivery only. |
| has_coupon | boolean | – | With a coupon only. |
| has_discount | boolean | – | Discounted only. |
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
| open_only | boolean | – | Hide closed or non-delivering restaurants. |
| page | integer | – | Page of 20, from 0. |
| query | – | – | Restaurant name filter, e.g. 'پیتزا'. |
| sort | string | – | Order; *_expensive rank by price class, not delivery fee. |
No output schema declared.
No examples provided.
food_reviews Restaurant reviews ~105
Read recent customer reviews of a restaurant (rating, text, what they ordered, vendor reply). Use to judge quality, delays or packaging before recommending.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Return review and reply text uncut (default cut to 400 chars). |
| page | integer | – | Page of 10, newest first, from 0. |
| vendor_code | string | yes | Vendor code, e.g. '947evd' (from food_search / food_restaurants). |
No output schema declared.
No examples provided.
food_search Search dishes ~167
Search dishes by name near a delivery point, with price, discount and restaurant. Use for "find X near me" or "discounted X". relevance is one fast index call; cheapest / biggest_discount drop side items and confirm prices on live menus. For the cheapest X across many menus use food_find_cheapest.
| Name | Type | Req | Description |
|---|---|---|---|
| discounted_only | boolean | – | Only dishes with a discount. |
| include_protein | boolean | – | Also search protein stores (butchers, eggs), hidden by default. |
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max dishes. |
| long | number | yes | Delivery point longitude. |
| query | string | yes | Dish word, e.g. 'پیتزا'. |
| sort | string | – | Order of the results. |
No output schema declared.
No examples provided.
list_cities List cities ~59
List cities Snappfood serves, with id, names and center coordinates. Use the center as a rough delivery point when the user only names a city.
| Name | Type | Req | Description |
|---|---|---|---|
| query | – | – | Filter on Persian title or English code, e.g. 'شیراز'. |
No output schema declared.
No examples provided.
market_categories Grocery categories ~77
List SnappMarket product categories and sub-categories with their ids. The ids work as category_id / subcategory_id in market_store_products. Id 99999999 is the virtual kalabarg (government e-coupon) category.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
No output schema declared.
No examples provided.
market_find_cheapest Find cheapest groceries ~126
Find the cheapest in-stock offers for a grocery product near the point. Use for the lowest price of an item. Scans open stores that deliver to the point; one flat list sorted by final price. Check delivery_fee and min_order before recommending a store.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max offers. |
| long | number | yes | Delivery point longitude. |
| pages | integer | – | Pages to scan, 12 stores each. |
| query | string | yes | Product name, e.g. 'شیر کم چرب'. |
No output schema declared.
No examples provided.
market_party_deals Grocery party deals ~92
List current SnappMarket "market party" flash deals near the point, biggest discount first. Use for the best grocery discounts right now. An order may hold at most capacity_per_order deal items; segment 'new_user' deals are for new customers only.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Max deals. |
| long | number | yes | Delivery point longitude. |
No output schema declared.
No examples provided.
market_product Grocery product details ~92
Get one product's details and price in one store. Use to confirm the current price of an item the user picked.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Return the description uncut (default cut to 400 chars). |
| product_id | integer | yes | Product id from a market_* list. |
| vendor_code | string | yes | Store code from market_search / market_stores, e.g. '32xxwe'. |
No output schema declared.
No examples provided.
market_reviews Grocery store reviews ~92
Read a store's 30 most relevant customer comments, rating 0-5. Use as a quality check before recommending a store. No paging: the API returns the same 30 comments.
| Name | Type | Req | Description |
|---|---|---|---|
| full_text | boolean | – | Return comment text uncut (default cut to 400 chars). |
| vendor_code | string | yes | Store code from market_search / market_stores, e.g. '32xxwe'. |
No output schema declared.
No examples provided.
market_search Search groceries ~122
Search a grocery product across all SnappMarket stores delivering to the point. Use to see which stores carry an item and at what price: stores (open or not) with up to ~5 matching products each. For one flat cheapest-first list use market_find_cheapest.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| limit | integer | – | Stores per page. |
| long | number | yes | Delivery point longitude. |
| page | integer | – | Page, from 0. |
| query | string | yes | Product name, e.g. 'شیر'. |
No output schema declared.
No examples provided.
market_store_info Grocery store details ~116
Get one store's delivery fee, minimum order, opening hours, rating and coupons for the point. Use before recommending a store. Basket cost = sum(final prices) + delivery_fee - coupon, and it must reach min_order. Read each coupon's conditions; is_applicable is false when logged out.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
| vendor_code | string | yes | Store code from market_search / market_stores, e.g. '32xxwe'. |
No output schema declared.
No examples provided.
market_store_products Browse a grocery store ~161
Browse or search the products of one store. - query: search the store (wins over category ids). - category_id (+ optional subcategory_id): that category's products. - neither: the store's categories and sub-categories with ids.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | – | – | Top-level category id (from this tool without arguments). |
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
| page | integer | – | Page, from 0. |
| query | – | – | Search inside this store, e.g. 'ماست'. |
| subcategory_id | – | – | Sub-category id; needs category_id. |
| vendor_code | string | yes | Store code from market_search / market_stores, e.g. '32xxwe'. |
No output schema declared.
No examples provided.
market_stores List grocery stores ~84
List SnappMarket stores delivering to the point, with delivery fee, minimum order and rating. Use to pick a store before browsing it with market_store_products.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
| page | integer | – | Page, from 0. |
| sort | string | – | Order of the stores. |
No output schema declared.
No examples provided.
reverse_geocode Describe coordinates ~54
Describe coordinates in words (point of interest, street, neighbourhood). Use to confirm a delivery point with the user before searching.
| Name | Type | Req | Description |
|---|---|---|---|
| lat | number | yes | Delivery point latitude. |
| long | number | yes | Delivery point longitude. |
No output schema declared.
No examples provided.
How do I install the Snappfood & SnappMarket MCP server?
Snappfood & SnappMarket runs locally as a PyPI package, launched with uvx snapp-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · snapp-mcp
claude mcp add sepehr071-snapp-mcp -- uvx snapp-mcp
What is the Snappfood & SnappMarket MCP server?
Snappfood & SnappMarket is an MCP server listed in the public MCP registry as io.github.sepehr071/snapp-mcp. Unofficial read-only Snappfood & SnappMarket: search food and groceries, compare prices, deals. This page covers its PyPI package (snapp-mcp).
Is the Snappfood & SnappMarket MCP server safe to use?
Snappfood & SnappMarket scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Snappfood & SnappMarket MCP server expose?
Snappfood & SnappMarket exposes 21 tools: find_location, reverse_geocode, list_cities, food_search, food_find_cheapest, and 16 more. Their descriptions and schemas cost roughly 2,264 tokens of context every time the server is loaded.
Is the Snappfood & SnappMarket MCP server still maintained?
Snappfood & SnappMarket is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Snappfood & SnappMarket MCP server under?
Snappfood & SnappMarket declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.