Skip to main content
Glama

tweakers-mcp

MCP server for Tweakers Pricewatch: let Claude search products, read full specifications, filter a category on specs, and find the cheapest shops (new items by default, refurbished/open-box only when you ask for it).

Built on tweakers-pricewatch (unofficial, reverse-engineered endpoints).

"Find the best deal fridge with energy label A and under 30 dB, then the best price per litre."

How to install

Needs uv (brew install uv).

Claude Code

claude mcp add tweakers -- uvx --from git+https://github.com/rleroi/tweakers-mcp tweakers-mcp

Claude Desktop: add this to ~/Library/Application Support/Claude/claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json) and restart Claude Desktop. Desktop does not use your shell PATH, so use the absolute path from which uvx:

{
  "mcpServers": {
    "tweakers": {
      "command": "/absolute/path/to/uvx",
      "args": ["--from", "git+https://github.com/rleroi/tweakers-mcp", "tweakers-mcp"]
    }
  }
}

The first start takes a few seconds while uv builds the package.

Related MCP server: galaxus-mcp

Tools

Tool

What

find_cheapest(query)

Search, pick best hit with offers, return info + specs + cheapest offers

search_products(query)

Autocomplete search (~8 hits max)

get_product(product_id)

Product info + cheapest offers

get_cheapest_offers(product_id)

Offers sorted by total price (incl. shipping), with clickout URL

get_specs(product_id)

Spec table as {group: {label: value}}

get_category_filters(slug, query)

Spec filters of a category (select options, range bounds)

browse_category(slug, filters, details)

Category listing, filtered server-side on specs; details=N adds specs + offers for the first N

list_categories()

Category slugs

Refurbished / open-box / outlet offers are excluded by default (refurbished_hidden shows how many); pass include_refurbished=true only when explicitly asked for. The package ignores the offer condition, so offers are parsed here.

Filter first, then fetch details: browse_category('koelkasten', filters={'Energieklasse (2021)': ['A'], 'Geluidssterkte (max.)': {'max': 29}}, details=25) is ~20s instead of scanning hundreds of products.

Specs are parsed here from the product page (the package has none). Requests are throttled (0.5s) and specs are cached per process.

Development

git clone https://github.com/rleroi/tweakers-mcp && cd tweakers-mcp
uv sync
uv run tweakers-mcp        # stdio server

Caveats

  • Unofficial: relies on reverse-engineered Tweakers endpoints and HTML, which can change or be blocked at any time. Check Tweakers' terms before heavy use.

  • Search is the autocomplete endpoint (~8 hits). Use browse_category with filters for more.

  • Some products lack specs on Tweakers (e.g. no dB value), so a spec filter silently skips them.

  • Not affiliated with Tweakers. MIT licensed.

Available Tools

8 tools
browse_categoryA

Browse a Pricewatch category (e.g. 'videokaarten', 'koelkasten'), optionally filtered server-side by specs, so only matching products are returned. sort: 'prijs' | 'popularity' | 'score'; sort_dir: 'asc' | 'desc'. filters: {filter name: value}, names/options from get_category_filters, e.g. {"Energieklasse (2021)": ["A"], "Geluidssterkte (max.)": {"max": 29}} select filters take an option label or list of labels; range filters take {"min": x, "max": y} (inclusive bounds). details: for the first N items also return full specs and cheapest offers (one extra request each; keep small). Refurbished/open-box/outlet offers are left out of those offers (counted in refurbished_hidden) unless include_refurbished is true; only set that when the user explicitly asks for refurbished/outlet items. Use list_categories to find slugs.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
slugYes
sortNoprijs
detailsNo
filtersNo
sort_dirNoasc
offer_limitNo
include_refurbishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does much of it: it warns that details issues one extra request per item ('keep small'), discloses that refurbished/open-box/outlet offers are excluded and counted in refurbished_hidden, and states filtering happens server-side. Missing auth scope, rate limits, and pagination behavior keeps it from a 5.

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 parameter semantics in a scannable, bullet-like layout; most sentences earn their place. The refurbished paragraph is slightly long and could be tightened, but not wasteful given the behavior it clarifies.

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 needn't be restated, and the description still adds useful return context (refurbished_hidden). For an 8-parameter, unannotated tool it covers most operational detail, with the gap being page/offer_limit semantics and pagination behavior.

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%, so the description must compensate and largely does: it documents sort and sort_dir values, the filters object shape (select vs range, inclusive bounds, example), and the refurbished flag's semantics. However, page and offer_limit are never explained, leaving two of eight parameters undocumented anywhere.

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 description opens with a specific verb+resource ('Browse a Pricewatch category') and gives concrete example slugs, plus the scope of what makes it distinct (server-side spec filtering). It doesn't explicitly contrast with the closest sibling search_products, so an agent must infer that keyword search is the other tool's job.

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?

Usage is clear: use list_categories to find slugs, get_category_filters for filter names/options, and set include_refurbished only when the user explicitly asks for refurbished/outlet items. It gives explicit when-not guidance for one parameter, but no exclusion or routing against search_products for non-category browsing.

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

find_cheapestA

Search for a product and return the best match with its specs and cheapest offers in one call. Takes the first of the top 3 hits that has usable shop offers (falls back to the first hit). Other search hits are returned as alternatives. Refurbished/open-box/outlet offers are left out (counted in refurbished_hidden) unless include_refurbished is true; only set that when the user explicitly asks for refurbished/outlet items.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
offer_limitNo
include_refurbishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/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 does well: it discloses the hit-selection heuristic (first of top 3 with usable shop offers, else first hit), that non-selected hits surface as alternatives, and that refurbished offers are excluded but counted in refurbished_hidden. It omits auth/permission or rate-limit context, which are lower priority here.

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 the primary action, then selection behavior, then the refurbished caveat; nearly every clause carries information. It is dense but readable, with only mild sentence-length pressure in the second sentence.

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-value documentation is not required, and the description instead covers the non-obvious selection and filtering behavior well. The one gap is offer_limit semantics, which leaves an agent guessing about a tunable that changes the result.

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 carry parameter meaning. It explains include_refurbished thoroughly and explains the semantics of the query search, but offer_limit is never mentioned — the agent cannot tell whether it caps returned offers, offers-per-product, or something else.

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 and resource: search for a product and return the best match plus its cheapest offers. The phrase 'in one call' signals that it is a composite of the sibling search/specs/offers tools, but no sibling is named explicitly, so differentiation is inferred rather than stated.

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?

Usage is implied ('find cheapest offers for a product') and there is a genuine when-not constraint for include_refurbished ('only set that when the user explicitly asks for refurbished/outlet items'). However it never says when to prefer this over search_products, get_product, or get_cheapest_offers, so the agent must infer routing.

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

get_category_filtersA

Spec filters available in a category (e.g. 'koelkasten'): name, kind ('select' with options, or 'range' with min/max values). query narrows by filter name. Use the names in browse_category's filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
queryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the shape of the returned filters (select vs range) and that query filters by name, which is genuinely useful, but says nothing about read-only/safety, permissions, or pagination behavior.

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?

Compact and front-loaded: purpose first, then the kind shapes, then the query behavior, then the browse_category tie-in. Dense but every clause earns its place; only the parenthetical examples add slight clutter.

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 needn't be spelled out, and the description adequately covers purpose and the query parameter for a simple 2-param lookup. It is nearly complete; only the lack of safety/permission context keeps it from a 5.

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 that `query` narrows by filter name and implies `slug` is a category (via the 'koelkasten' example), which covers both parameters loosely, but gives no format or example value for the slug itself.

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+resource (get category's spec filters) and even enumerates the return fields (name, kind select/range). It is clearly distinct from siblings like get_specs or get_product. The only gap is that it doesn't explicitly contrast itself with any sibling by name.

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?

"Use the names in browse_category's `filters`" implies the workflow context (resolve filter names supplied by browse_category), and the query param note gives a hint. But there is no explicit when-to-use/when-not or comparison to alternatives such as get_specs.

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

get_cheapest_offersA

Cheapest current shop offers for a product, sorted by total price (product + shipping). Includes shop name, product_price, shipping_cost, condition and url. Refurbished/open-box/outlet offers are left out (counted in refurbished_hidden) unless include_refurbished is true; only set that when the user explicitly asks for refurbished/outlet items.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
product_idYes
include_refurbishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the sort order, the exclusion of refurbished/open-box/outlet offers, the existence and meaning of `refurbished_hidden`, and the returned fields. It stops short of describing empty-result behavior or any limit/pagination semantics.

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?

Three tight sentences, front-loaded with the payoff (cheapest offers, sort key) before the refinement clause on refurbished items. The parenthetical about `refurbished_hidden` earns its place by connecting the filter to a returned value.

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 enumerating the returned fields is bonus rather than necessity, and the filtering logic is fully covered. The one gap is `limit` — a 3-parameter tool where one parameter is undocumented in both schema and description.

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 thoroughly explains include_refurbished (what it filters, what the count field means) but says nothing about `limit` (its default of 5, whether it caps results) and only implies product_id's meaning from context.

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?

Names a specific verb+resource ('cheapest current shop offers for a product') plus the sort key (total price = product + shipping) and the returned fields, so the agent knows exactly what it gets. It does not differentiate itself from the similarly named sibling find_cheapest, leaving the agent to infer which of the two to call.

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?

Gives an explicit when-to-use condition for include_refurbished ('only set that when the user explicitly asks for refurbished/outlet items'), which is a real behavioral guardrail. It offers no tool-level guidance about when to prefer this over find_cheapest or search_products, so alternative selection is left to inference.

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

get_productA

Product info (brand, name, mpn, gtin, price range) plus the cheapest shop offers. price per offer is the total incl. shipping; url is the Tweakers clickout link to the shop. Refurbished/open-box/outlet offers are left out (counted in refurbished_hidden) unless include_refurbished is true; only set that when the user explicitly asks for refurbished/outlet items.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
offer_limitNo
include_refurbishedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that price is the total including shipping, that url is a Tweakers clickout link, and the nuanced behavior that refurbished/open-box/outlet offers are excluded but still counted in refurbished_hidden. It does not mention pagination, error behavior when product_id is unknown, or auth requirements.

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 what the tool returns, then the price/url semantics, then the refurbished caveat. Roughly three purposeful sentences with no filler, though the mixed explanation of output fields and input flags makes the middle slightly dense.

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 explained, yet the description usefully clarifies the non-obvious semantics of price and url. Combined with the refurbished behavior, an agent has enough to call it correctly; only the offer_limit input remains unexplained.

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% for three parameters, so the description must compensate. It fully explains include_refurbished and clarifies the meaning of output fields (price, url), but product_id and offer_limit are never described, leaving half the inputs dependent on inference from their names.

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 description states a specific verb implied (get) and resource (product) and enumerates the returned fields: brand, name, mpn, gtin, price range, plus cheapest shop offers. It is clear what the tool does, though it never explicitly says it looks up a single product by id or how it differs from siblings like get_specs or get_cheapest_offers.

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?

Provides explicit conditional guidance for include_refurbished: only set it when the user explicitly asks for refurbished/outlet items, and states the default behavior (refurbished left out) otherwise. No guidance on when to choose this over the sibling tools, which would be needed for a 5.

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

get_specsC

Full specification table of a product as {group: {label: value}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 behavioral burden, and it discloses almost nothing: it does not state that this is a read operation, what happens for an unknown product_id, or whether the spec groups are stable. The only behavioral hint is the return shape, which the output schema already covers.

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 resource front-loaded and zero filler. It is efficient, though it is arguably too terse to be complete rather than genuinely concise.

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 the description need not explain return values, and the shape notation is a mild bonus. But for a tool with no annotations and no sibling differentiation, the definition leaves the agent without enough context to choose it confidently over get_product.

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 single product_id parameter is undocumented in both places. The phrase 'of a product' weakly implies product_id identifies the target product, but no format, source, or constraints are given; the obvious integer ID keeps this from being a serious failure.

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?

The description identifies the resource (a product's full specification table) and implies retrieval, so the intent is recoverable. However, it is a noun phrase rather than a verb+resource statement, and it never distinguishes itself from the sibling get_product, which plausibly returns overlapping product data.

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 when-to-use guidance and no mention of alternatives. With siblings like get_product and search_products, an agent gets no signal about when the spec table is the right call versus the general product lookup.

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

list_categoriesB

Category slugs mapped to names; filter is a case-insensitive substring match.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the filter matching behavior (case-insensitive substring) and the return shape, but says nothing about ordering, pagination, or read-only/scope characteristics; for a simple enumeration tool this is adequate but thin.

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?

A single compact sentence that front-loads the resource and return shape, then clarifies the parameter. Every clause earns its place with no filler.

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 the description needn't explain return values, and the single parameter is covered. However, for a tool in a crowded category-browsing namespace, the lack of any when-to-use guidance leaves the agent with an unresolved choice among siblings.

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 description coverage is 0%, so the description must carry the parameter meaning, and it does: 'filter' is defined as a case-insensitive substring match over category slugs/names. That is genuinely additive beyond the bare 'Filter' title in the schema, though it doesn't cover empty/default behavior.

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 description names the resource (categories) and states the returned shape ('slugs mapped to names'), which makes the tool's job clear to an agent. The verb 'list' is only implicit from the tool name, and nothing distinguishes it from siblings like get_category_filters or browse_category, so it falls short of the 5 criteria.

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 statement of when to use this tool versus alternatives, nor any prerequisites or exclusions. With siblings such as get_category_filters and browse_category in the same namespace, the absence of routing guidance is a real gap.

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

search_productsA

Search Tweakers Pricewatch by name or SKU. Returns at most ~8 matches (product_id, name, url, price when known). Use product_id with the other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/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. It does disclose a meaningful behavioral trait — the ~8-result cap and which fields come back, with price only 'when known' — but says nothing about auth, rate limits, or what happens on no-match, leaving the disclosure partial.

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?

Three short sentences, zero waste, and the core capability is front-loaded ahead of the return-shape and chaining notes. Nothing here is padding.

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?

For a one-parameter search with an output schema present, the description covers what it searches, roughly what it returns, and how its output feeds the other tools. An output schema exists so return values needn't be detailed, but pagination/bounding behavior is only loosely covered by 'at most ~8 matches'.

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?

With one parameter and 0% schema description coverage, the description must compensate, and it does by clarifying that the query accepts a product name OR a SKU. That resolves the main ambiguity of a bare 'query' string, though it adds no format/length or matching-behavior detail.

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 (Search) and resource (Tweakers Pricewatch) plus the query dimension (by name or SKU). It doesn't explicitly name a sibling alternative, but 'Use product_id with the other tools' signals this is the discovery entry point, so an agent can orient itself.

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?

It tells the agent what to do after this call (use product_id with the other tools), which is useful chaining guidance. However, it never states when to prefer this over browse_category or list_categories, nor when it should be skipped, so the when-vs-alternatives condition is only implied.

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. 8 tool updatesv0.1.0
    • First observedbrowse_category
    • First observedfind_cheapest
    • First observedget_category_filters
    • First observedget_cheapest_offers
    • First observedget_product
    • First observedget_specs
    • First observedlist_categories
    • First observedsearch_products

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation3/5

get_product, get_cheapest_offers, and find_cheapest all return shop offers for a product, creating overlap; get_product already includes offers that get_cheapest_offers returns alone. Descriptions do differentiate intent (info vs offers vs convenience bundle), but an agent must reason carefully to pick the right one.

Naming Consistency4/5

All names are snake_case verb_noun (search_products, get_product, browse_category, list_categories), which is predictable. The verb set varies (search/get/find/browse/list), causing minor deviation from a single canonical verb pattern.

Tool Count5/5

Eight tools is well-scoped for a price-comparison server: search, product detail, offers, specs, category browsing, filters, and categories. Each tool earns its place in the workflow.

Completeness4/5

Covers the core Pricewatch lifecycle: discover categories, filter, search, fetch specs and offers. Minor gaps exist (no price-history or direct product-comparison tool), but agents can work around these with the current surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to search products and retrieve detailed information from Galaxus and Digitec, including prices, specifications, and price history.
    5
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables product search and discovery on Galaxus and Digitec, with tools for searching, browsing, comparing, and looking up prices and specifications.
    7
    1
    MIT