{"serverId":"mcp-registry/eu.dinilu/mcp","tools":[{"name":"fetch","fixed":{"name":"fetch","description":"Compatibility fetch for research clients that require a tool named \"fetch\". Returns one product as readable text. It carries NO price: prices depend on quantity and options and come from get_quote.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The id returned by search (the product mpn, as a string)."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Fetch"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":118,"tokensAfter":118},{"name":"get_product","fixed":{"name":"get_product","description":"Get a product's configurable attributes and their options, plus its minimum order quantity and quantity step. Call this before get_quote: the attribute and option ids it returns are what get_quote expects.","inputSchema":{"type":"object","required":["mpn"],"properties":{"mpn":{"type":"integer","description":"Product MPN, from search_products or from the mpn field in a product page's JSON-LD."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get product options"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"get_quote","fixed":{"name":"get_quote","description":"Price a specific configuration and quantity, with production time and shipping options. Indicative, excludes VAT and shipping, never binding. Read the returned \"warnings\" before presenting the price.","inputSchema":{"type":"object","required":["mpn"],"properties":{"mpn":{"type":"integer","description":"Product MPN."},"qty":{"type":"integer","description":"Quantity in PIECES. Below the product minimum it is raised to the MOQ and a qty_below_minimum warning is returned. Omitting it quotes the product default and warns — always pass the real target quantity, because price per piece changes substantially with volume."},"zone":{"type":"integer","description":"Optional zone/state id, where shipping rates depend on it."},"country":{"type":"string","description":"Destination country for shipping rates. Accepts a name (\"Germany\"), ISO 3166-1 alpha-2 (\"DE\"), alpha-3 (\"DEU\") or numeric (\"276\"). Defaults to this domain's country."},"attributes":{"type":"object","description":"Option selection as {\"<attribute id>\": <option id>}, e.g. {\"19\": 251, \"58\": 490}. Both ids come from get_product. Option NAMES are also accepted as values but must match exactly, including double spaces, and are translated per domain — prefer ids. Any attribute you omit is filled with the product default and reported in warnings.","additionalProperties":{"type":["integer","string"]}}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get a price and delivery quote"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":403,"tokensAfter":403},{"name":"search","fixed":{"name":"search","description":"Compatibility search for research clients that require a tool named \"search\". Returns only id, title and URL. Prefer search_products, which also filters by category and returns the category of each hit.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Free text matched against the product title."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":118,"tokensAfter":118},{"name":"search_products","fixed":{"name":"search_products","description":"Find products in this catalogue by free text and/or category. Returns mpn, title, page URL and category for each match. The mpn is what get_product and get_quote take.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"Maximum results to return. Default 50, maximum 200."},"query":{"type":"string","description":"Free text matched against the product title, case-insensitive. Omit to list everything (optionally narrowed by category)."},"category":{"type":"integer","description":"Taxonomy term id to filter by. Read the category tree from the dinilu://categories resource."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search products"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":190,"tokensAfter":190}],"toolsChanged":5,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}