# Snappfood & SnappMarket (pypi · snapp-mcp)

Unofficial read-only Snappfood & SnappMarket: search food and groceries, compare prices, deals.

- Trust score: 83/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-23

## Components

- pypi · `snapp-mcp`: 83/100 (this document), [markdown](https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp.md), [page](https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp)

## Channel facts

- Registry: `pypi`
- Package: `snapp-mcp`
- Version: `0.3.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-23.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs hatchling.build at install time, a recognised build step with no custom scripting around it.
  - 1 of 35 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to sepehr071/snapp-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - 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.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability check failed: the tool surface changed between 0.1.1 and 0.3.1: 0 tool removals, 21 breaking changes, 0 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 22 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### 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.

### Claude

```bash
claude mcp add sepehr071-snapp-mcp -- uvx snapp-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "sepehr071-snapp-mcp": {
      "command": "uvx",
      "args": [
        "snapp-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sepehr071-snapp-mcp": {
      "command": "uvx",
      "args": [
        "snapp-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sepehr071-snapp-mcp -- uvx snapp-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sepehr071-snapp-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "snapp-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sepehr071-snapp-mcp --command uvx --arg snapp-mcp
```

### Hermes

```yaml
mcp_servers:
  sepehr071-snapp-mcp:
    command: "uvx"
    args: ["snapp-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "sepehr071-snapp-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "snapp-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sepehr071-snapp-mcp -t stdio -c uvx -a snapp-mcp
```

### Other

```json
{
  "mcpServers": {
    "sepehr071-snapp-mcp": {
      "command": "uvx",
      "args": [
        "snapp-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-23 (score 83, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-10-22 (score 68, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.3.0 → 0.3.1

### 2026-10-20 (score 82, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10.

### 2026-10-19 (score 81, +15)

- [security improvement] Malware scan: unverified → pass
- [functional] Package version: 0.1.3 → 0.3.0

### 2026-10-18 (score 66, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Package version: 0.2.0 → 0.3.0

### 2026-10-16 (score 80, −7)

- [security regression] Stability: 0.43 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Stability: 0.43 → fail
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Schema quality: 144 → 121
- [functional] Schema quality: excellent → good
- [functional] Package version: 0.1.3 → 0.2.0

### 2026-10-14 (score 87, +38)

- [security improvement] Injection markers: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Stability: unverified → 0.40
- [functional improvement] MCP protocol: unverified → pass

### 2026-10-13 (score 49, 0)

- [functional] Package version: 0.1.2 → 0.1.3

## MCP tools (21)

### `find_location` (~119 tokens)

Find location

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.

Input parameters:

- `limit` (integer): Max places to return.
- `near_lat`: Bias latitude (e.g. a city center from list_cities).
- `near_long`: Bias longitude.
- `query` (string, required): Place, street or landmark, e.g. 'میدان ونک'.

### `reverse_geocode` (~54 tokens)

Describe coordinates

Describe coordinates in words (point of interest, street, neighbourhood).

Use to confirm a delivery point with the user before searching.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.

### `list_cities` (~59 tokens)

List cities

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.

Input parameters:

- `query`: Filter on Persian title or English code, e.g. 'شیراز'.

### `food_search` (~167 tokens)

Search dishes

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.

Input parameters:

- `discounted_only` (boolean): Only dishes with a discount.
- `include_protein` (boolean): Also search protein stores (butchers, eggs), hidden by default.
- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max dishes.
- `long` (number, required): Delivery point longitude.
- `query` (string, required): Dish word, e.g. 'پیتزا'.
- `sort` (string): Order of the results.

### `food_find_cheapest` (~137 tokens)

Find cheapest dish

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max dishes.
- `long` (number, required): Delivery point longitude.
- `max_restaurants` (integer): Open restaurants' menus to scan (more = slower).
- `query` (string, required): Dish word, e.g. 'پیتزا'.

### `food_restaurants` (~170 tokens)

List restaurants

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.

Input parameters:

- `free_delivery` (boolean): Free delivery only.
- `has_coupon` (boolean): With a coupon only.
- `has_discount` (boolean): Discounted only.
- `lat` (number, required): Delivery point latitude.
- `long` (number, required): 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.

### `food_menu` (~114 tokens)

Restaurant menu

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max items.
- `long` (number, required): Delivery point longitude.
- `query`: Only items whose title contains this.
- `vendor_code` (string, required): Vendor code, e.g. '947evd' (from food_search / food_restaurants).

### `food_order_costs` (~108 tokens)

Order costs

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.
- `vendor_code` (string, required): Vendor code, e.g. '947evd' (from food_search / food_restaurants).

### `food_reviews` (~105 tokens)

Restaurant reviews

Read recent customer reviews of a restaurant (rating, text, what they ordered, vendor reply).

Use to judge quality, delays or packaging before recommending.

Input parameters:

- `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, required): Vendor code, e.g. '947evd' (from food_search / food_restaurants).

### `food_party_deals` (~108 tokens)

FoodParty deals

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max deals.
- `long` (number, required): Delivery point longitude.
- `query`: Only deals whose title contains this.
- `sort` (string): Order of the deals.

### `food_meal_for_one` (~93 tokens)

Meals for one

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max meals.
- `long` (number, required): Delivery point longitude.
- `max_price`: Max final price, Toman.

### `food_discounted_vendors` (~68 tokens)

Discounted restaurants

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.

### `market_search` (~122 tokens)

Search groceries

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Stores per page.
- `long` (number, required): Delivery point longitude.
- `page` (integer): Page, from 0.
- `query` (string, required): Product name, e.g. 'شیر'.

### `market_find_cheapest` (~126 tokens)

Find cheapest groceries

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max offers.
- `long` (number, required): Delivery point longitude.
- `pages` (integer): Pages to scan, 12 stores each.
- `query` (string, required): Product name, e.g. 'شیر کم چرب'.

### `market_stores` (~84 tokens)

List grocery stores

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.
- `page` (integer): Page, from 0.
- `sort` (string): Order of the stores.

### `market_store_info` (~116 tokens)

Grocery store details

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.
- `vendor_code` (string, required): Store code from market_search / market_stores, e.g. '32xxwe'.

### `market_store_products` (~161 tokens)

Browse a grocery store

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.

Input parameters:

- `category_id`: Top-level category id (from this tool without arguments).
- `lat` (number, required): Delivery point latitude.
- `long` (number, required): 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, required): Store code from market_search / market_stores, e.g. '32xxwe'.

### `market_categories` (~77 tokens)

Grocery categories

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `long` (number, required): Delivery point longitude.

### `market_product` (~92 tokens)

Grocery product details

Get one product's details and price in one store.

Use to confirm the current price of an item the user picked.

Input parameters:

- `full_text` (boolean): Return the description uncut (default cut to 400 chars).
- `product_id` (integer, required): Product id from a market_* list.
- `vendor_code` (string, required): Store code from market_search / market_stores, e.g. '32xxwe'.

### `market_party_deals` (~92 tokens)

Grocery party deals

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.

Input parameters:

- `lat` (number, required): Delivery point latitude.
- `limit` (integer): Max deals.
- `long` (number, required): Delivery point longitude.

### `market_reviews` (~92 tokens)

Grocery store reviews

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.

Input parameters:

- `full_text` (boolean): Return comment text uncut (default cut to 400 chars).
- `vendor_code` (string, required): Store code from market_search / market_stores, e.g. '32xxwe'.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp#diagnostics

## Score history

- 2026-10-23: 83
- 2026-10-22: 68
- 2026-10-21: 82
- 2026-10-20: 82
- 2026-10-19: 81
- 2026-10-18: 66
- 2026-10-17: 80
- 2026-10-16: 80
- 2026-10-15: 87
- 2026-10-14: 87
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-05: 81
- 2026-10-04: 81
- 2026-10-03: 81
- 2026-10-02: 66

## Common questions

### 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.

## Links

- PyPI project: https://pypi.org/project/snapp-mcp/
- Socket report: https://socket.dev/pypi/package/snapp-mcp
- Repository: https://github.com/sepehr071/snapp-mcp
- Changelog RSS feed: https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp.json
- HTML version of this page: https://verifymcp.io/servers/sepehr071-snapp-mcp/snapp-mcp
