Reads Megamarket through its internal mobile JSON API, using POST requests from the operator's Chrome over CDP. ServicePipe gates the whole site by IP reputation: the API returns valid JSON, but that JSON always contains the code-7 refusal "отключите VPN" (disable your VPN) and echoes your IP. Passing the ServicePipe challenge alone is insufficient: an anonymous browser that has passed it still reads an empty
items list. Real catalog data needs a browser that is actually logged in.
When to use
- Search the Megamarket catalog by text
- One product's price, old price, availability, rating
Tools available
megamarket_search(query)— items + total count. price_rub None when absent.megamarket_card(item_id_or_url)— one product card
Not an MCP tool: megamarket_selfcheck() is a tri-state canary, where a
code-7 refusal is inconclusive (transport), never drift. It is CLI-only —
marketplace-mcp doctor runs every connector's canary at once.
Gotchas
- A code-7 / VPN-error body is an IP block, not data — the connector maps it to transport_down with the fix inline.
- Run megamarket_selfcheck from your Chrome first: these endpoints were probed anonymously, and only a challenge-passed session confirms the in-browser shape.
- A missing price is
null, never0:price_rub: nullmeans Megamarket had no usable price — treat it as no data, never as a free item. - Prices are address-dependent.
_meta.warningscarries the address source only when it changes what the prices mean:address_source:profile(the operator's personal default address — personalized prices) oraddress_source:none(no delivery address resolved, so no offers are deliverable — expect the empty-items symptom). Both mark the response_meta.healthy=false. The default public city-level source (address_source:suggestfromMEGAMARKET_ADDRESS) is the normal healthy case: no address warning.
Privacy: the profile address is opt-in
MEGAMARKET_USE_PROFILE_ADDRESS (default 0) decides whether the connector may
read the private, account-gated /profileService/address/list endpoint from the
operator's logged-in Chrome profile, to use the profile's default delivery
address. Off — the default — it is never called: the address comes from the
public suggest endpoint for MEGAMARKET_ADDRESS (Москва, or Moscow, by default), and prices are city-level rather than personalized. When enabled, the profile's address list, default flag, and region are read once per process. Prices and availability match what the operator sees on the site, and the search response carries address_source:profile plus a profile_address_read warning in
_meta.warnings so the reader knows before quoting a price. The raw addressId
never leaves the process.
Opt in when the operator asks for Megamarket prices "as I see them"; leave it off for neutral, city-level price research.
DSH activation
In DeepSeek Harness, the default profile exposes only compare_prices and
compare_sources through the cheap compare mount. Per-marketplace tools and
marketplace_sources require RU_MARKETPLACE_MCP_FULL=1 and a profile restart;
do not call them in the default mode.