Skip to main content
Glama

Superbuy Zoeker

Better search on Superbuy (Taobao, 1688, Xianyu), with Claude as your shopping assistant.

On Superbuy you search with English keywords that get machine-translated to Chinese, and you get results with Google-translated titles. Finding what you actually want is mostly guesswork. Here Claude turns your wish into proper Chinese search terms (seller jargon, synonyms, model numbers), searches several platforms, judges the original Chinese titles and shows a curated selection. Each item gets a verdict and notes: bait prices, wholesale minimums, second-hand items, shipping weight.

Screenshot

The interface and Claude's notes are in Dutch. To get another language, change ASK_PROMPT in src/superbuy_search/bridge.py and the labels in static/index.html.

How it works

 web page / Claude Code ──▶ bridge (127.0.0.1:8765) ◀──long-poll── Firefox extension
                                                                      │
                                                     fetch inside your own superbuy.com tab
  • Firefox extension: runs Superbuy's own search API inside a superbuy.com tab in your Firefox, with your login and cookies. You solve Cloudflare and hCaptcha checks yourself, like normal browsing. A toolbar button opens the search page.

  • Bridge: a small local server (Python/Starlette), listening on 127.0.0.1 only. It queues requests for the extension and spaces them out so you stay under Superbuy's rate limit (with a back-off when the limit is hit). It also serves the search page.

  • Web page: http://127.0.0.1:8765

    • Direct zoeken shows raw results from the selected platforms, without Claude.

    • Vraag Claude starts a headless claude -p that can only use the Superbuy tools. You see live which search terms it tries, and the curated selection appears when it is done. You can refine a selection afterwards ("cheaper", "only new", ...).

  • MCP server: the same tools (search, details, publish, ...) inside an interactive Claude Code session.

Everything runs on your own computer, with your own Superbuy account. Nothing goes through a third party, apart from Superbuy itself and, for Vraag Claude, Anthropic.

Related MCP server: taobao-mcp-server

Requirements

  • Firefox 142 or newer

  • uv (installs Python and the dependencies for you)

  • For Vraag Claude and the MCP tools: Claude Code, logged in. Direct search works without it.

  • A Superbuy account, logged in in Firefox

Installation

git clone https://github.com/MichielBruijn/superbuy-search
cd superbuy-search
uv sync
uv run superbuy-bridge        # leave this running; open http://127.0.0.1:8765

Install the extension: download the signed .xpi from Releases, then in Firefox go to about:addons, click the gear icon and choose Install Add-on From File…. Open superbuy.com once and log in. The page header should now say Firefox verbonden.

Run the bridge automatically (Linux, systemd):

cp systemd/superbuy-bridge.service ~/.config/systemd/user/
# adjust the path in ExecStart if you cloned somewhere other than ~/Projects/superbuy-search
systemctl --user enable --now superbuy-bridge

Use it from your phone (optional): the bridge keeps running on your computer. On the phone you open the search page and, ideally, install the extension in Firefox for Android too, so searches and captchas happen on the phone. First give the bridge a token:

mkdir -p ~/.config/systemd/user/superbuy-bridge.service.d
printf '[Service]\nEnvironment=SUPERBUY_REMOTE_TOKEN=%s\n' "$(openssl rand -hex 16)" \
  > ~/.config/systemd/user/superbuy-bridge.service.d/remote.conf
systemctl --user daemon-reload && systemctl --user restart superbuy-bridge

Your link is then http://<computer>:8765/login?token=<token>.

  • Page only: open the link once on the phone. It sets a cookie; after that you can use Add to home screen. The searches then run in Firefox on the computer, and if Firefox isn't running the bridge starts it.

  • Phone does the searching: in Firefox for Android, open Settings → About Firefox and tap the logo 5 times. Then use Install add-on from file with the .xpi. Paste the link into the add-on's settings and tap Opslaan en testen. Log in to superbuy.com on the phone. Searches started from the phone now go through the phone's Firefox, so captchas show up there. If the phone isn't connected, the computer's Firefox takes over.

Security: only private IPv4 addresses (LAN, VPN) get in, and only with the token, sent as a cookie or a header. Without a token the bridge listens on 127.0.0.1 only.

Claude Code MCP (optional):

claude mcp add -s user superbuy -- uv run --project /path/to/superbuy-search superbuy-mcp

Notes

  • Rate limit: Superbuy limits its search API per account. If you go over it you get "Request too often" and a captcha on the site. The bridge waits 4 to 7 seconds between searches and backs off when it hits the limit. Claude does at most 8 searches per question. Solve the captcha in Firefox if one appears.

  • Shipping restrictions: Superbuy flags items as Batteried Items, Sensitive Items or irregular shape. Those can only go with selected carriers, which costs more. The flag depends on the category the seller picked, so the same product is often unflagged at another seller. It only shows up in the product details. Cards get a badge, or a verzendcheck button (one detail call), and verberg verzendbeperkt hides flagged items. With geen batterij/sensitive checked, Claude checks its candidates and looks for unflagged alternatives. Results are cached, including products you open yourself on Superbuy.

  • Taobao search on Superbuy uses an affiliate index (ALIMAMA) with a lot of noise. 1688 and Xianyu use Superbuy's own search and give much more relevant results.

  • Vraag Claude uses your Claude subscription. Set SUPERBUY_CLAUDE_MODEL (for example sonnet) in the service to pick a model.

  • Data (sessions, item cache, API captures) is stored in ~/.local/share/superbuy-search/.

  • To build the extension yourself: scripts/sign-extension.sh signs it as unlisted through AMO, with your own API keys. For quick testing, load extension/manifest.json via about:debugging → Load Temporary Add-on….

This is an unofficial tool, not affiliated with Superbuy. Use it at your own risk and within Superbuy's terms.

License

MIT

Available Tools

6 tools
detailsA

Productdetails van een item uit search() (id zoals 'tb:123'): alle varianten met eigen prijs (ontmaskert lokprijzen), verzending binnen China, voorraad, winkelscores, Superbuy-waarschuwingen. Telt zwaar mee voor Superbuy's rate-limit: alleen voor serieuze kandidaten gebruiken.

NameRequiredDescriptionDefault
idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden and does well: it discloses that the call is expensive against Superbuy's rate limit and that it exposes 'lokprijzen' (bait prices) hidden at search level. Missing are auth/permission requirements and any indication of response size or latency, which are relevant for a heavy call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then id provenance, then the rate-limit warning last, which is a sensible ordering. The middle clause is dense with comma-separated return fields but each item adds meaning; no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained, yet the description still prioritizes the fields that matter for comparison shopping. The rate-limit constraint and id provenance are both covered; permission requirements and error behavior are the only notable gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single 'id' parameter, so the description must compensate — and it does, specifying the id comes from search() and follows the 'tb:123' pattern. That is enough to construct a valid call, though nothing is said about invalid-id behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Productdetails van een item'), names the source tool (search()), gives the id format ('tb:123'), and enumerates what is returned (variants, shipping, stock, store scores, warnings), which cleanly separates it from the sibling search tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly constrains usage — 'alleen voor serieuze kandidaten gebruiken' — because of the rate-limit cost, which is actionable selection guidance. It does not positively name alternatives or spell out a full decision tree, but the when-not condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publishB

Publiceer een gecureerde selectie naar de resultatenpagina. items: [{id, title_nl, notes, verdict: 'top'|'goed'|'misschien'|'nee', score?: 0-10}] — id zoals uit search(); prijs/foto/links worden aangevuld uit de cache. request: de oorspronkelijke wens van de gebruiker. queries: gebruikte zoektermen. session_id: meegeven om een bestaande sessie bij te werken.

NameRequiredDescriptionDefault
itemsYes
titleYes
queriesNo
requestYes
summaryNo
session_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. It does disclose a useful behavioral trait — price/photo/links are enriched from the cache rather than supplied by the caller — and hints at update-vs-create via session_id, but it never states side effects, whether an existing results page is overwritten, or any permission/auth requirements for a write-like operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded in the first sentence, followed by compact per-parameter notes. Slightly dense and telegraphic (mixed inline pseudo-formatting), but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Still, for a mutation-style tool with no annotations, the definition omits what happens on republish, whether items replace or merge, and what title/summary are for — gaps an agent would notice at call time.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does well for items (field names, verdict enum values, score 0-10, id provenance), request, queries and session_id. However, two of the six parameters — title and summary — get no explanation at all, leaving a clear gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb and target: publish a curated selection to the results page. Combined with the items/verdict structure it is clear what the tool produces, but it never contrasts itself with siblings like search or details beyond the implicit 'id zoals uit search()' sequencing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Guidance is implied rather than stated: ids must come from search(), and session_id is 'meegeven om een bestaande sessie bij te werken' (pass to update an existing session). There is no explicit when-to-use/when-not-to-use or precondition statement, so the calling workflow must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

statusC

Status van bridge en Firefox-extensie.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it says nothing about whether this is a pure read, whether it performs an active probe against a live bridge, whether it can fail or time out, or what authorization it needs. A single noun phrase cannot substitute for a safety/behavior profile on an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short clause with no waste and the resource is front-loaded, but the brevity is under-specification rather than efficiency — the sentence omits the verb entirely. Also note the description is in Dutch while all sibling tool names are English, which is a minor friction for query matching.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, but the description does not explain what the tool actually checks, what a healthy vs. unhealthy result implies, or when an agent should call it before or after the superbuy_* tools. For a no-param tool this is nearly adequate, yet still leaves the agent without a reason to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The empty schema is self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Status van bridge en Firefox-extensie" identifies the resources reported on (bridge and Firefox extension) but uses no verb and never says what "status" means here — health check, connection state, version info? It also gives no differentiation from the sibling tools (search, details, publish, etc.), so an agent can only infer this is a diagnostic read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance at all on when to call this versus the siblings, no prerequisites, and no indication of what triggers the check or whether calling it has side effects. The agent must guess that this is the first-call smoke test / connectivity probe.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

superbuy_capturesB

API-verkeer dat de extensie passief zag (url-regex grep). Toont request en begin van response.

NameRequiredDescriptionDefault
grepNo
limitNo
max_charsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does disclose that traffic was captured passively by the extension and that output shows the request and beginning of the response. However, it omits permissions, whether the operation is read-only, pagination behavior, and how captures are retained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, front-loading the resource and source before describing the output. Every phrase contributes to the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be explained. Still, with no annotations and 0% schema description coverage, the description should say more about usage boundaries, pagination/limit behavior, and whether this is a safe read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains 'grep' as a URL-regex filter and implies response truncation via 'begin van response', but 'limit' is not addressed and max_chars is only indirectly suggested.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Toont') and resource ('API-verkeer') and clarifies the source as traffic passively seen by the extension, filtered by a URL-regex grep. It clearly describes a retrieval tool for captured requests and partial responses, though it does not explicitly name a sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a use case (inspecting passively captured API traffic) but gives no explicit guidance on when to choose this over siblings such as superbuy_fetch or search. There are no exclusions, prerequisites, or alternative-selection rules.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

superbuy_fetchC

Ruwe fetch binnen de Superbuy-tab (alleen *.superbuy.com), voor API-verkenning.

NameRequiredDescriptionDefault
urlYes
bodyNo
methodNoGET
max_charsNo
content_typeNo

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, yet it only discloses the domain restriction. It never says that method/body allow non-GET requests, whether auth/cookies are supplied automatically, whether responses are truncated (max_chars), or how errors surface — all critical for a tool that can mutate state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the domain restriction front-loaded and no filler. It is efficiently sized, though the brevity is partly under-specification rather than economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, but for a five-parameter HTTP tool with zero annotation coverage the description omits too much: write capability, authentication, truncation and error behavior are all unstated. The domain restriction alone is insufficient context to call it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across five parameters, and the description only constrains the url host. Nothing explains method defaulting to GET, what body/content_type expect, or that max_chars truncates the returned payload, so the description fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (raw fetch) and the resource scope (Superbuy tab, restricted to *.superbuy.com), which separates it from siblings like superbuy_captures, search or details that presumably return structured data. It is clear enough to identify the tool, though 'raw fetch' is never spelled out as an HTTP request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'voor API-verkenning' (for API exploration) hints at the intended context, so an agent can infer this is the exploratory/low-level option versus the structured siblings. However it names no alternative and gives no when-not conditions, leaving the choice of this tool vs superbuy_captures to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observeddetails
    • First observedpublish
    • First observedsearch
    • First observedstatus
    • First observedsuperbuy_captures
    • First observedsuperbuy_fetch

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation4/5

Search, details, and publish form a clear pipeline, and status is diagnostically distinct. The only mild overlap is between superbuy_fetch (active raw fetch) and superbuy_captures (passive traffic log), which could be confused by a hurried agent, but descriptions clarify the difference.

Naming Consistency3/5

The two superbuy_-prefixed snake_case tools sit alongside bare nouns (status, search, details, publish), so there's no single predictable pattern. Names remain readable and inferable, but the mix of prefixed and unprefixed conventions is noticeable.

Tool Count4/5

Six tools is well within the healthy range and each maps to a step in the research-to-publish workflow. The two diagnostic tools (status, captures) are somewhat auxiliary but justified given the bridge/extension architecture.

Completeness4/5

The surface covers the core lifecycle: search → details → publish, with diagnostics for the bridge and API exploration. Minor gaps exist (no session listing/cleanup, no order or cart interaction), but the stated curation workflow is fully supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers