vladimir-human / megamarket-connector
Use this skill when the operator needs Megamarket data — search the catalog or read a product card. Trigger on "мегамаркет", "megamarket", "цена мегамаркет". Always needs the operator's Chrome over CDP (ServicePipe IP block). Skip for non-Megamarket tasks.
Megamarket Connector
Reads Megamarket via its internal mobile JSON API, POSTed from inside the
operator's Chrome over CDP. ServicePipe gates the whole site by IP reputation:
the API returns valid JSON, but the JSON is always the code-7 "отключите VPN"
refusal with your own IP echoed back. Passing the ServicePipe challenge is not
enough on its own: an anonymous browser that has cleared it still reads an emptyitems 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 (Москва by default), and prices
are city-level, not personalized. On, the profile's address list, its
default flag and the region are read once per process, prices and availability
match exactly 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 andcompare_sources through the cheap compare mount. Per-marketplace tools andmarketplace_sources require RU_MARKETPLACE_MCP_FULL=1 and a profile restart;
do not call them in the default mode.