SuperAPI AI Directory

marketplace

General & other

View repository

Updated 10-16 09:44

About this skill

Unified Marketplace Server

One server mounting every installed connector as a namespaced toolset: wb_*, ozon_*, yandex_*, detmir_*, avito_*, taobao_*, megamarket_*, lamoda_*, dns_*, citilink_*, aliexpress_*, cian_*, mpstats_* plus compare_prices / compare_sources and its own marketplace_sources. Tool names keep their prefixes, so habits and configs carry over — but the operator wires a single marketplace entry instead of fourteen. The server exposes 40 tools: 39 mounted plus marketplace_sources. mpstats_* is the optional paid source: without MPSTATS_MP_AUTH its tools answer auth_missing while everything else is unaffected.

When to use

  • "Where is X cheapest" — compare_prices fans out across all searchable sources
  • Client setup: one config entry, not fourteen
  • Health overview: the CLI's doctor runs every selfcheck at once
  • A source came back empty and you can't tell installed-but-quiet from never-loaded → marketplace_sources

Tools

  • marketplace_sources() — no arguments; returns {mounted, skipped, mounted_count, skipped_count, capabilities, server_version}. capabilities is static routing metadata per source: access tier, CDP/login requirements, currency, text-search support, and whether the connector is mounted. skipped maps a source name to the import error that dropped it, usually a missing dependency. Connectors are imported defensively, so a missing dep removes a marketplace instead of killing the server — but from the client an absent source looks identical to one that found nothing. Call this to tell the two apart: a name in skipped was never queried at all.

Operator CLI

  • marketplace-mcp install [client] — print the exact mcpServers JSON to paste. From a source checkout it prints the real filesystem path of that checkout, so there's no /path/to/ru-marketplace-mcp placeholder to hand-edit; installed as a wheel, it prints the console-script paths on PATH instead. client must be one of claude, claude-code, cursor — an unknown name is rejected, not answered with a Claude block.
  • marketplace-mcp doctor [--status-file path] — per-source health plus a CDP session probe, with an optional machine-readable JSON snapshot for monitoring. Exit codes are meaningful for cron and CI: 0 everything healthy, 1 a parser drifted (the alarm — someone has to look), 2 nothing drifted but at least one source couldn't be judged (blocked, no CDP, wrong region). "Couldn't check anything" is a 2, never a 0.

Gotchas

  • Recovery-aware clients should read source_outcomes.requires_user_action before scheduling retries. Keep answered sources visible, show the affected marketplace and challenge_type, and retry that source after the browser interaction completes. A challenge is not an empty product search. See the compare-prices skill for the retry contract. handoff_expires_at confirms that the source retained its tab; repeat the same operation in the same MCP session after browser action and before that expiry. See docs/CDP_SETUP.md for opt-in configuration and supported sources.
  • A source whose optional deps are missing is simply absent from the set — marketplace_sources says which and why.
  • Set MARKETPLACE_SOURCES on the unified server to mount only a comma-separated subset (wildberries,ozon,compare); unset or blank keeps every source. The aliases wb, ym/yandex, detmir, and ali work too. Unknown names fail at startup instead of silently producing a partial server, and deselected sources are reported with a deselected reason.
  • compare_prices ranks on everyday ruble prices; Taobao (CNY) is reported in price_native but never ranked against rubles.

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.