Sheypoor Classifieds
PYPI · SHEYPOOR-MCP
Read-only Sheypoor (sheypoor.com) classifieds: search ads, ad details, price summaries.
Available components
Last scanned (10 hours ago)
Scores higher than 79% 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/sheypoor-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 3 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3197 tokens (~290/item across 11 items; 11 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 Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
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 11 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 12 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
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
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.
- 4 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 3 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 2 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 1 Nov 26 64
First indexed and scored.
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 5 Nov 2026 · Analysed pypi/sheypoor-mcp@0.1.0
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/sheypoor-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/sepehr071/sheypoor-mcp/.github/workflows/publish.yml@refs/tags/v0.1.0 |
| Rekor log index | 3623272889 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:894e3cdb41d8521b6cb1087425d2fd48324cebc3c33fed4e4a0360306dfa64da |
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 →
sp_ad Ad details ~170
Get one Sheypoor ad in full: description, price, location, seller, every attribute and photo links. `id` comes from sp_search. `city_slug` and `category_slug` plug straight into sp_search; sp_similar finds comparable ads. Rentals have `prices` (رهن deposit, اجاره rent) instead of one price. The seller's phone number needs a Sheypoor login and is not available here (the site shows it masked); open `url` in a browser to contact the seller. For a list of similar ads call sp_search with the same category.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Ad id from sp_search, e.g. 468673507. |
| photos | integer | – | How many photo URLs to include (0-10). |
No output schema declared.
No examples provided.
sp_area_prices Prices per neighbourhood ~244
Compare asking prices between neighbourhoods of a city: median price, price per square metre, rent and deposit. Use it for "where is renting cheapest in Tehran" or "price per metre in Pounak vs Saadat Abad". It samples each area's newest 24 ads (one request per area), so medians are rough. Sale ads give `median_price` and, with meterage, `median_per_m2`; rentals give `median_deposit` and `median_rent`. Values in Toman. Pick ids with sp_filters(category, city, area=...); see sp_search with `neighbourhoods` for the ads themselves.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Category slug, e.g. houses-apartments-for-sale, house-apartment-for-rent, car, land. |
| city | string | yes | City slug from sp_cities, e.g. tehran (not 'iran'). |
| neighbourhoods | – | – | Neighbourhood ids from sp_filters(area=...). Omit to take the busiest ones. |
| top | integer | – | How many of the busiest neighbourhoods when none are given (1-8). |
No output schema declared.
No examples provided.
sp_car_prices Daily car prices ~232
Get Sheypoor's daily car price list (قیمت روز خودرو): market price and factory price per model and year, with the day's change. Use it for "what is a 1404 Tiba worth today" or to check an ad's price against the market average; it is Sheypoor's average of market quotes, not ads. `market` is the open-market price, `factory` the maker's list price (null = none). Values are in Toman; `change_pct` is today's move of the market price. For real ad prices use sp_price_summary instead.
| Name | Type | Req | Description |
|---|---|---|---|
| group | – | – | Maker group: saipa-group, iran-khodro-group, domestic-group, foreign-group, modiran-group, kerman-group. Omit for all. |
| limit | integer | – | Max models to return (1-60). |
| query | – | – | Brand or model words, Persian or English, e.g. پراید, 206, Tiba, هایما. |
| year | – | – | Model year as listed, e.g. 1404 or 2023. |
No output schema declared.
No examples provided.
sp_categories Categories ~110
List Sheypoor's categories with the slug sp_search and sp_filters take, grouped under 11 top-level groups. Pass `query` to keep only matching groups or categories. Brands and models of cars live one level deeper: sp_filters(category="car") lists their slugs (e.g. car/peugeot). Use the slug of a sub-category alone (car, not vehicles/car).
| Name | Type | Req | Description |
|---|---|---|---|
| query | – | – | Part of a category name or slug to filter by, e.g. خودرو or apartment. |
No output schema declared.
No examples provided.
sp_cities Cities and provinces ~119
Find the city or province slug that sp_search, sp_price_summary and sp_filters take. With `query`, returns matching cities (slug, province); a province slug also works as `city` and covers every city in it. Without `query`, lists the 31 provinces with their slugs and number of cities.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max cities to return (1-50). |
| query | – | – | Part of a city or province name or slug, e.g. مشهد or isfahan. Omit to list provinces. |
No output schema declared.
No examples provided.
sp_filters Filters of a category ~386
List the filters, sort orders, sub-categories (car brands, models) and neighbourhoods Sheypoor offers in one category. Call this before using `filters` in sp_search or sp_price_summary; every category has its own (cars: year, km, gearbox; sale: meterage mn68085/mx68085, rooms; rent: deposit mn68090 and rent mn68092; jobs: salary, contract). Each filter has a `name` (a<id>, mn<id>, mx<id>) and, for choices, `options` as {id, label}: pass {name: id}. Range filters list min/max names (pass a plain number, e.g. mn68101='1400'). Yes/no filters have `value` '1' (pass {name: '1'}); number filters take a plain number. `subcategories` slugs (car/peugeot, then car/peugeot/206) go in `category`. `neighbourhoods` (id, name, ads) go in sp_search `neighbourhoods`; pass `area` to search the full list by name. The nearest-first sort needs the visitor's GPS and is not offered. Prices use min_price/max_price instead.
| Name | Type | Req | Description |
|---|---|---|---|
| area | – | – | Part of a neighbourhood name to look up its id, e.g. پونک. Needs a city (not 'iran'). |
| category | string | yes | Category slug from sp_categories, e.g. car, houses-apartments-for-sale, house-apartment-for-rent, jobs sub-categories like driver. A brand path (car/peugeot) lists its models. |
| city | string | – | City or province slug from sp_cities, e.g. tehran, mashhad, tehran-province. 'iran' = all Iran. |
No output schema declared.
No examples provided.
sp_price_summary Price summary for a search ~381
Summarise asking prices of the newest ads for a search: count, min, median, quartiles, max, plus cheapest and priciest ads. Use it to answer "what does X cost on Sheypoor". It samples the newest ads (up to 5 pages), so it shows current asking prices, not sold prices. Ads without a numeric price and placeholder prices under 10,000 Toman are left out. Narrow the query (year, brand, city via sp_filters/sp_cities) for a useful median. Values are in Toman.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Category slug from sp_categories (e.g. car, apartment-sell, mobile-phone) or a brand/model path from sp_filters (car/peugeot, car/peugeot/206). Omit to search every category. |
| city | string | – | City or province slug from sp_cities, e.g. tehran, mashhad, tehran-province. 'iran' = all Iran. |
| filters | – | – | Extra filters from sp_filters as {name: value}: a<id> takes an option id (a69150: '445100'), mn<id>/mx<id> are range ends (mn68101: '1400' = year from). |
| max_price | – | – | Highest price in Toman. |
| min_price | – | – | Lowest price in Toman, e.g. 100000000. |
| neighbourhoods | – | – | Neighbourhood ids from sp_filters(area=...) to search inside (up to 10), e.g. ['888', '974']. City-level only. |
| pages | integer | – | How many result pages (24 ads each) to sample, 1-5. |
| query | – | – | Words to search in ads, Persian, e.g. پراید or آیفون 13. |
No output schema declared.
No examples provided.
sp_search Search ads ~557
Search Sheypoor classified ads (cars, real estate, goods, jobs, services) by words, city, category and price. Use it to find ads or see what is on sale; call sp_ad with an ad `id` for the full text, seller and all attributes. Slugs come from sp_cities and sp_categories; for attribute filters (year, brand, colour, gearbox, area...) call sp_filters first. `price` is in Toman (null when the seller wrote negotiable: see `price_text`); prices of 1,000 Toman are placeholders. Rentals carry `prices` ({رهن deposit, اجاره rent}; `price` is the first of them). Use `neighbourhoods` (ids from sp_filters area=...) for areas inside a city. `nearby` ads are from around the city: the site adds them when few ads match inside it. `promoted` ads are paid showcase slots and may not match your filters exactly. `matching` is the count of real matches; `total` also counts nearby/padding ads. Sorting by price puts placeholder prices first: set min_price to skip them. For a median or range of prices use sp_price_summary instead.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Category slug from sp_categories (e.g. car, apartment-sell, mobile-phone) or a brand/model path from sp_filters (car/peugeot, car/peugeot/206). Omit to search every category. |
| city | string | – | City or province slug from sp_cities, e.g. tehran, mashhad, tehran-province. 'iran' = all Iran. |
| filters | – | – | Extra filters from sp_filters as {name: value}: a<id> takes an option id (a69150: '445100'), mn<id>/mx<id> are range ends (mn68101: '1400' = year from). |
| limit | integer | – | Max ads to return (1-40). |
| max_price | – | – | Highest price in Toman. |
| min_price | – | – | Lowest price in Toman, e.g. 100000000. |
| neighbourhoods | – | – | Neighbourhood ids from sp_filters(area=...) to search inside (up to 10), e.g. ['888', '974']. City-level only. |
| page | integer | – | Page number, 24 ads each. |
| query | – | – | Words to search in ads, Persian, e.g. پراید or آیفون 13. |
| sort | string | – | Order: newest (default), cheapest, priciest; cars also lowest_km, highest_km, oldest_year, newest_year. |
No output schema declared.
No examples provided.
sp_shop Shop details ~111
Get one internet shop or agency: name, hours, group, its agents and its current ads. `slug` comes from sp_shops (or `seller.shop` ads from sp_ad). Phone numbers are masked on the site and left out. Each ad has an `id` for sp_ad.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max of the shop's ads to return (0-24). |
| slug | string | yes | Shop slug from sp_shops, e.g. amlakalijenabtehran. |
No output schema declared.
No examples provided.
sp_shops Internet shops ~203
List Sheypoor's internet shops and agencies (real-estate offices, car dealers...) in a city and group. Use it to find businesses rather than single ads; call sp_shop with a shop `slug` for its details and ads. `category` is a top-level group (real-estate, vehicles...), not a sub-category such as car. Shops with no ads are left out (the site lists them but their page is gone), so a page may hold fewer than `limit` shops.
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | Top-level group slug from sp_categories, e.g. real-estate, vehicles, jobs, home, electronics. Omit for all. |
| city | string | – | City or province slug from sp_cities, e.g. tehran, mashhad, tehran-province. 'iran' = all Iran. |
| limit | integer | – | Shops per page (1-24). |
| page | integer | – | Page number. |
No output schema declared.
No examples provided.
sp_similar Similar ads ~195
Find ads comparable to one ad: same city and deepest category (car model...), price within a percent band. Use it to judge whether an ad is cheap or dear, or to find alternatives; the `id` comes from sp_search. If fewer than 3 ads match, it widens to the parent category (car/hyundai/creta -> car/hyundai) and says so in `category`. Rentals and ads without a numeric price are matched by category only. Newest first; the ad itself and paid showcase ads are left out. For the price distribution of the category use sp_price_summary.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Ad id from sp_search, e.g. 468673507. |
| limit | integer | – | Max ads to return (1-24). |
| price_range_pct | integer | – | Keep ads priced within this percent of the ad's price (5-100). |
No output schema declared.
No examples provided.
How do I install the Sheypoor Classifieds MCP server?
Sheypoor Classifieds runs locally as a PyPI package, launched with uvx sheypoor-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 · sheypoor-mcp
claude mcp add sepehr071-sheypoor-mcp -- uvx sheypoor-mcp
What is the Sheypoor Classifieds MCP server?
Sheypoor Classifieds is an MCP server listed in the public MCP registry as io.github.sepehr071/sheypoor-mcp. Read-only Sheypoor (sheypoor.com) classifieds: search ads, ad details, price summaries. This page covers its PyPI package (sheypoor-mcp).
Is the Sheypoor Classifieds MCP server safe to use?
Sheypoor Classifieds scores 79 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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 Sheypoor Classifieds MCP server expose?
Sheypoor Classifieds exposes 11 tools: sp_search, sp_ad, sp_price_summary, sp_categories, sp_cities, and 6 more. Their descriptions and schemas cost roughly 2,708 tokens of context every time the server is loaded.
Is the Sheypoor Classifieds MCP server still maintained?
Sheypoor Classifieds is still listed as active in the MCP registry. We last reached this channel on 5 November 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 Sheypoor Classifieds MCP server under?
Sheypoor Classifieds declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.