Plendio price comparison
Server Details
Compare 18M+ prices across Denmark, Sweden, Norway and Germany: product search, wishlists. No login.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a distinct resource and action, so an agent can generally pick correctly. There is some overlap between compare_prices and get_product, since both return one offer per shop for a single product, but the descriptions differentiate them by scope (full specs/price history vs. cross-shop comparison).
All eight tools follow a clean, predictable verb_noun snake_case pattern (add_to_wishlist, compare_prices, create_wishlist, get_product, get_wishlist, list_categories, remove_from_wishlist, search_products). No mixed conventions or vague verbs.
Eight tools is well-scoped for a price comparison service, with each tool earning its place across catalogue browsing and wishlist management. No redundancy or filler.
The wishlist lifecycle is fully covered (create, get, add, remove) and product discovery covers search, detail, comparison and categories. Minor gaps remain, such as no explicit wishlist rename/note-edit operation and no market/currency listing tool, but core workflows are complete.
Available Tools
8 toolsadd_to_wishlistAdd products to a wishlistADestructiveIdempotentInspect
Adds products to a wishlist made earlier, given its edit link or the token at the end of it. A product already on the list keeps its place and takes the new note. A list holds at most 50 products; unknown or unavailable products, and products that no longer fit, are reported and not added. Returns the list's items with their best current prices. The token stops working once the list has been saved to a Plendio account.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | The products to add: 1 to 50. A product already on the list keeps its place and takes the new note. | |
| market | No | Market for the urls in the answer: dk, se, de or no. Default: the market the list was made for. | |
| edit_token | Yes | The wishlist's edit link as returned when it was created, or just the token at the end of it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| added | No | Product ids put on the list. |
| items | Yes | |
| notes | No | |
| title | Yes | The list's name, written by whoever made it. |
| market | Yes | |
| removed | No | Product ids taken off the list. |
| currency | No | Currency of total_from. |
| share_url | Yes | The list's page on Plendio, read-only. |
| item_count | Yes | |
| not_stored | No | Products that could not be added, with the reason. |
| total_from | No | Sum of price_from over the available items; absent when their currencies differ or none has a price. |
| not_on_list | No | Product ids that were not on the list. |
| already_on_list | No | Product ids that were already on the list (their note was updated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the 50-product cap, that duplicates keep their position but take the new note, that unknown/unavailable/overflow products are reported rather than added, what is returned (items with current prices), and that the token stops working once the list is saved to an account. It corroborates destructiveHint=true (mutates the list) and idempotentHint=true (re-adding is position-stable), so no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action and its input, then constraints, then return value, then the token-lifetime caveat. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description usefully signals the return payload and the partial-failure semantics, and it covers limits, duplicate handling and token expiry. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so edit_token, items, market, note, slug and product_id are all already documented in the schema, including the token extraction rule and the market default. The description only restates the edit-link/token idea that the schema already carries, so it does not add meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Adds products to a wishlist') and immediately scopes it to a list 'made earlier', which cleanly separates it from create_wishlist, get_wishlist and remove_from_wishlist. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It establishes the prerequisite (the list must exist already, identified by its edit link or token) and implies create_wishlist as the upstream step, but never explicitly names an alternative tool or a when-not-to-use condition. Clear context, no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_pricesCompare pricesARead-onlyIdempotentInspect
Returns the shops selling one product, one offer per shop (its best, with a count of its other offers), cheapest first by total price including shipping (price alone where a shop's shipping is unknown), with each amount also converted to the market's currency. Offers that are in stock come first. Out-of-stock offers are left out unless include_out_of_stock is true, and only shops that ship to the market are listed unless include_other_markets is true. The result includes the url of the product's Plendio page.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market the shopper is in: dk, se, de or no. Default: the market of the site you connected to. | |
| product_id | Yes | Plendio product id (the id field of a search result, or the number at the end of a Plendio product URL). | |
| include_out_of_stock | No | Also list offers that are out of stock or discontinued. Default false: only offers a shopper can order now. | |
| include_other_markets | No | Also list shops not known to ship to the market. Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | The product's page on Plendio, listing all its offers. |
| notes | No | |
| title | Yes | |
| market | Yes | |
| offers | Yes | Cheapest first, by total price including shipping (price alone where shipping is unknown). |
| currency | Yes | Currency of the market. |
| price_history | No | |
| offers_omitted | Yes | Offers left out because their shop does not ship to the market. |
| out_of_stock_omitted | Yes | Offers left out because they are out of stock or discontinued (set include_out_of_stock to list them). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description goes well beyond them: sort order (cheapest first by total price including shipping), fallback when shipping is unknown, currency conversion, in-stock-first ordering, exclusion rules for out-of-stock and non-shipping shops, and the returned Plendio URL. That is substantial behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and sort order are front-loaded, and the closing sentence about the returned URL is short and useful. However, the first sentence is a long run-on with several stacked clauses, which makes it denser than it needs to be for a four-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 spelled out, yet the description still notes the included Plendio URL. Combined with the disclosed defaults, filtering rules and ordering, an agent has everything needed to call this correctly against its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description still adds meaning beyond the schema text by explaining the consequence of each flag ('only shops that ship to the market', 'offers a shopper can order now') and by disclosing the shipping-cost rule that governs the ordering the parameters influence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Returns the shops selling one product') and immediately defines the granularity (one offer per shop, its best). This clearly separates it from get_product (product details) and search_products (product discovery) without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope statement and the flag semantics, but there is no explicit 'use this when...' or a named alternative for a shopper who only wants product facts rather than shop offers. The conditional behavior of include_out_of_stock/include_other_markets is described, which helps, but it is behavioral rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_wishlistCreate a shareable wishlistAInspect
Creates a shareable wishlist ("ønskeseddel") on Plendio from products a person has picked, for example gifts found with a search, once they want a list to send to family or friends. Takes a title (up to 80 characters), a market and 1 to 50 products by Plendio id, each with an optional note of up to 140 characters. Returns two links, a read-only share link to the list's page on Plendio and a private edit link for changing the list and saving it to a Plendio account, together with the list's items and their best current prices. No login is needed and no personal data is collected. Unknown or unavailable products are reported and not stored. The edit link is a secret: anyone who holds it can change the list. A list that is not viewed or edited for 90 days is deleted. Each request creates a new list.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | The products on the list: 1 to 50. | |
| title | Yes | Name of the list, e.g. "Emmas fødselsdag". Up to 80 characters; markup and links are removed. | |
| market | No | Market the list is for: dk, se, de or no. Default: the market of the site you connected to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| notes | No | |
| title | Yes | The list's name, written by whoever made it. |
| market | Yes | |
| currency | No | Currency of total_from. |
| edit_url | Yes | Private link for changing the list on Plendio and saving it to an account. Shown once. |
| share_url | Yes | The list's page on Plendio, read-only. |
| item_count | Yes | |
| not_stored | No | Products that were not put on the list, with the reason. |
| total_from | No | Sum of price_from over the available items; absent when their currencies differ or none has a price. |
| instruction | Yes | A line for the user about the two links. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that no login is required, no personal data is collected, unknown/unavailable products are reported but not stored, the edit link is a secret granting mutation access, unused lists are deleted after 90 days, and every request creates a new list (reinforcing idempotentHint=false). These are exactly the operational traits an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and inputs before moving to return values, side effects and lifecycle caveats. It is dense but nearly every sentence carries operational information; the return-link sentence partially duplicates the output schema, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with rich side effects, the description covers inputs, outputs, safety (no login/no PII), failure handling (unknown products reported, not stored), and lifecycle (90-day deletion). With an output schema present, nothing essential is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the title limit (80 chars), the 1-50 product range, the market field and the 140-char note, but adds no syntax or format meaning beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (creates) and resource (shareable wishlist on Plendio) from a concrete input (picked products), and the 'shareable'/'from products you picked' framing clearly separates it from add_to_wishlist and get_wishlist. An agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when it applies - 'once they want a list to send to family or friends' and 'gifts found with a search', which implies the search_products -> create_wishlist flow. It does not explicitly name alternatives or exclusions (e.g. add_to_wishlist for an existing list), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet product detailsARead-onlyIdempotentInspect
Returns one product by its Plendio id: specifications, one offer per shop (its best) with price, shipping, total, the same amounts in the market's currency, availability, condition and whether the shop ships to the market, a summary of the product's price history over the last year, and the url of its Plendio page. A product that was merged into another resolves to the current one.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market the shopper is in: dk, se, de or no. Default: the market of the site you connected to. | |
| product_id | Yes | Plendio product id (the id field of a search result, or the number at the end of a Plendio product URL). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | The product's page on Plendio, listing all its offers. |
| brand | No | |
| notes | No | |
| specs | No | |
| title | Yes | |
| images | No | |
| market | Yes | |
| offers | Yes | Cheapest first. |
| category | No | |
| currency | Yes | Currency of the market. |
| in_stock | Yes | |
| description | No | |
| merged_from | No | Set when product_id was merged into this product. |
| offer_count | Yes | Number of offers listed (shops that ship to the market, unless the tool was asked otherwise). |
| price_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond that: a merged product resolves to the current one, and each shop returns only its best offer with a market-currency conversion. No rate limits or error behavior, but solid added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the verb and resource. The long tail enumerating return fields is informative but overlaps the output schema, making it slightly heavier than necessary; still, every clause carries real content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only two-parameter lookup with an output schema, the description is complete: it signals single-item scope, id provenance, currency conversion, offer selection, and the merged-product edge case. An agent has everything needed to call it correctly without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented in the schema (market enum with default, product_id format and source). The description only echoes the id concept and gestures at market currency; it adds no syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns one product by its Plendio id') and enumerates the exact payload (specs, per-shop best offer with price/shipping/total, currency conversion, availability, condition, price history, URL). This is unmistakably the single-product detail tool, distinct from search_products and compare_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this versus siblings or where the product_id comes from; that sourcing hint ('the id field of a search result, or the number at the end of a Plendio product URL') lives only in the parameter schema. Usage is implied by the single-id scope, but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wishlistGet a wishlistARead-onlyIdempotentInspect
Returns a Plendio wishlist from its share link or share id: its title, its items with notes and best current prices, and the url of each product's Plendio page. Read-only; the edit link is not needed and not accepted. The title and the notes are text written by whoever made the list.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market for the urls in the answer: dk, se, de or no. Default: the market the list was made for. | |
| share_url | Yes | The wishlist's share link, or the share id at the end of it. The edit link is not accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| notes | No | |
| title | Yes | The list's name, written by whoever made it. |
| market | Yes | |
| currency | No | Currency of total_from. |
| share_url | Yes | The list's page on Plendio, read-only. |
| item_count | Yes | |
| total_from | No | Sum of price_from over the available items; absent when their currencies differ or none has a price. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint, so the safety profile is covered. The description still adds real value beyond that: it clarifies that the edit link is not accepted and that title/notes are user-authored text, which is useful provenance context for downstream handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences, front-loaded with the return payload and identifier forms, with the read-only and identifier constraints immediately after. No filler and no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only lookup with a full output schema, the description supplies everything an agent needs: accepted input, excluded input, and the nature of the returned content. No meaningful gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description merely echoes the accepted identifier forms already documented in the schema ('share link, or the share id at the end of it'). The implicit market default is not elaborated beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Returns) plus resource (a Plendio wishlist) with the accepted identifier forms and a full enumeration of the returned payload (title, items with notes and prices, product page urls). This clearly separates it from siblings like create_wishlist and add_to_wishlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Establishes the read-only retrieval context and explicitly excludes the edit link as input, which routes the caller to the share link/id. It does not name alternative siblings or state when to prefer this over e.g. get_product, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesARead-onlyIdempotentInspect
Returns Plendio's product categories with localized names, slugs and product counts: the top level, or the subcategories of parent. The counts are products available in the market.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | Market: dk, se, de or no. Default: the market of the site you connected to. | |
| parent | No | Category path or slug whose subcategories to return. Omit for the top level. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | |
| market | Yes | |
| parent | No | Path of the category whose children these are; absent for the top level. |
| language | Yes | Language the names are in. |
| categories | Yes | |
| parent_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safe-read profile is covered. The description adds useful scope context — that counts reflect products available in the given market — but says nothing about result size, hierarchy depth, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-constructed sentence that front-loads the resource and what it returns. It is slightly dense, packing the parent-mode behavior into the same sentence, but there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two optional parameters, full schema coverage, and an output schema handling the return shape, the description is nearly sufficient for correct invocation. The one remaining gap is result-set size/ordering behavior, which is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (market, parent) are already documented with enum values and defaults in the schema. The description restates the parent/top-level semantics without adding format or edge-case detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns Plendio's product categories') and enumerates what each item contains (localized names, slugs, product counts), so the agent knows exactly what this retrieves. It does not explicitly distinguish itself from siblings like get_product or search_products, but the category-listing purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'the top level, or the subcategories of parent' implies when each mode applies, and the 'Omit for the top level' behavior signals the default. There is no explicit when-to-use guidance or routing against the sibling product tools, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_wishlistRemove products from a wishlistADestructiveIdempotentInspect
Removes products from a wishlist, given its edit link or the token at the end of it. A product that is not on the list is reported and ignored. Removing a product does not delete the list, even when it becomes empty, and a removed product can be added again. Returns the list's remaining items.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | The products to remove: 1 to 50. | |
| market | No | Market for the urls in the answer: dk, se, de or no. Default: the market the list was made for. | |
| edit_token | Yes | The wishlist's edit link as returned when it was created, or just the token at the end of it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| added | No | Product ids put on the list. |
| items | Yes | |
| notes | No | |
| title | Yes | The list's name, written by whoever made it. |
| market | Yes | |
| removed | No | Product ids taken off the list. |
| currency | No | Currency of total_from. |
| share_url | Yes | The list's page on Plendio, read-only. |
| item_count | Yes | |
| not_stored | No | Products that could not be added, with the reason. |
| total_from | No | Sum of price_from over the available items; absent when their currencies differ or none has a price. |
| not_on_list | No | Product ids that were not on the list. |
| already_on_list | No | Product ids that were already on the list (their note was updated). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true, and openWorld=true, so the safety profile is covered. The description still adds real value beyond them: non-member products are reported and ignored, an emptied list is not deleted, and removed products can be re-added.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action and identity mechanism, followed by behavioral caveats. No sentence is filler; each carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return values need not be spelled out, yet the description still notes that remaining items are returned. Combined with the caveats about empty lists and re-adds, an agent has everything needed to call this mutation correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents edit_token, items, and market fully. The description only adds a light restatement that edit_token may be a full edit link or the trailing token, which the schema also covers. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Removes) and resource (products from a wishlist) plus the identity mechanism (edit link or trailing token). This is unambiguously distinguishable from siblings like add_to_wishlist, create_wishlist, and get_wishlist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource and by the paired add_to_wishlist sibling, but the description never states when to reach for this tool versus add_to_wishlist or get_wishlist, nor any prerequisite conditions. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsARead-onlyIdempotentInspect
Search Plendio's product catalogue: free text in Danish, Swedish, German, Norwegian or English ("laptop 32 GB RAM under 12000", "Sony WH-1000XM5", "running shoes women") plus optional filters. Spec words in the query (RAM, storage, screen size, price limits, in stock) are understood the way the Plendio website understands them. Each result has the cheapest current price, the number of shops selling it and the url of its Plendio page. Results are limited to shops that ship to the market unless include_other_markets is true. 24 results per page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page, 24 products per page. Default 1. | |
| sort | No | relevance (default), price_asc or price_desc. | |
| query | Yes | What to look for, in any of the market languages or English: a product name, a type, or a description with specs and limits ("laptop 32 GB RAM under 12000"). Required unless category is given. | |
| shops | No | Only offers from these shops, by domain, e.g. ["elgiganten.dk"]. | |
| brands | No | Only these brands (up to 25), e.g. ["Sony","Bose"]. | |
| market | No | Market to search: dk, se, de or no. Default: the market of the site you connected to (plendio.dk is dk). | |
| category | No | Category slug to narrow the search to, e.g. computere. | |
| in_stock | No | Only products that at least one shop has in stock. | |
| max_price | No | Highest price, in the market's currency (major units). | |
| min_price | No | Lowest price, in the market's currency (major units, e.g. 500 means 500 kr.). | |
| include_other_markets | No | Also include products no shop ships to the market. Default false: only products the market's shoppers can have delivered. |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | |
| notes | No | |
| query | Yes | |
| total | Yes | Number of matching products. |
| market | Yes | |
| applied | No | Filters the search applied, including ones it read from the query text. |
| currency | Yes | Currency of the market. |
| products | Yes | |
| page_size | Yes | |
| search_url | Yes | The same search on the Plendio website. |
| total_exact | Yes | False when total is a lower bound ("at least"). |
| total_pages | Yes | |
| did_you_mean | No | Set when the results answer a corrected spelling of the query. |
| understood_as | No | Set when the query was a sentence: the product searches it was read as, which the results answer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds real operational context beyond them: results are restricted to shops that ship to the market unless include_other_markets is true, and pagination is fixed at 24. It still doesn't hint at ranking behavior beyond the sort enum, but the added constraints are substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose before the market/pagination caveats. Every sentence carries information, though the result-shape sentence slightly overlaps with what the output schema provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters all documented, an output schema covering return values, and annotations covering safety, the description fills the remaining gaps (market-shipping restriction, page size, query interpretation) without redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds meaning the schema does not: spec words in the query (RAM, storage, price limits, in stock) are interpreted the way the Plendio site interprets them, and the multi-language query framing clarifies the query field's intent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Plendio's product catalogue') and immediately scopes it as free-text across five languages with optional filters. An agent can distinguish this from get_product (single retrieval), compare_prices, and list_categories without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when the tool applies — free-text queries with embedded specs plus optional filters — and the example queries illustrate the intended input style. It does not explicitly name when to prefer a sibling (e.g. get_product for a known product), so it stops short of full when/when-not guidance.
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.
4 tool updates
- Added
add_to_wishlist - Added
create_wishlist - Added
get_wishlist - Added
remove_from_wishlist
1 tool update
- Changed
search_products1 field changed- added
Output schema / properties / understood_asAdded value: +{ + "description": "Set when the query was a sentence: the product searches it was read as, which the results answer.", + "items": { + "type": "string" + }, + "type": [ + "null", + "array" + ] +}
1 tool update
- Changed
compare_prices1 field changed- added
Output schema / properties / price_historyAdded value: +{ + "additionalProperties": false, + "properties": { + "average": { + "type": "number" + }, + "currency": { + "type": "string" + }, + "current": { + "description": "Cheapest price now; absent when nobody sells it.", + "type": [ + "null", + "number" + ] + }, + "days": { + "description": "Length of the recorded history in days (at most 365).", + "type": "integer" + }, + "highest": { + "type": "number" + }, + "lowest": { + "type": "number" + }, + "scope": { + "description": "What the history covers.", + "type": "string" + }, + "since": { + "description": "First day of the recorded history (YYYY-MM-DD).", + "type": "string" + } + }, + "required": [ + "currency", + "lowest", + "average", + "highest", + "since", + "days", + "scope" + ], + "type": [ + "null", + "object" + ] +}
4 tool updates
- First observed
compare_prices - First observed
get_product - First observed
list_categories - First observed
search_products
Related MCP Connectors
Product search, store prices and price history from Norwegian web shops. Read-only, no login.
- folgprisOAuthno.folgpris
Norwegian price tracking: search Elkjøp, Komplett, Power and 400+ stores, get price-drop alerts.
Compare prices across Latvian online retailers: offers, price history and wishlists.
Nordic beauty price comparison: 500k+ EAN-matched products, 70+ stores, true landed-cost pricing.
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).19MIT- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and compare live prices from Finnish marketplaces (Hinta.fi, Tori.fi, Huuto.net) for new and used products like electronics, furniture, and more.MIT
- AlicenseAqualityBmaintenanceSearches UK electronics products across multiple retailers, compares prices, and provides purchase links.2567 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables searching and comparing product prices across major Indian quick-commerce and e-commerce platforms, ranking results by landed price, returning product links, storing price history, and providing 15–30 day price direction forecasts with best-buy recommendations.-
Glama MCP Gateway
Add one secure layer between your agents and this server.