{
  "name": "Debecker",
  "description": "Tafelgerei voor horeca en thuis. WebMCP-tools op elke pagina; dezelfde servertools via MCP en REST.",
  "version": "2.0.0",
  "guide": "https://www.debecker.be/developers",
  "mcp_server": "https://www.debecker.be/mcp",
  "openapi": "https://www.debecker.be/openapi.json",
  "tools": [
    {
      "name": "search_catalog",
      "description": "Zoek in de live catalogus van Debecker (tafelgerei voor horeca en thuis: porselein, glaswerk, bestek, tafellampen, buffet). Gebruik dit zodra de shopper een producttype, merk, collectie, artikelnummer of budget noemt. Geeft maximaal 8 bestelbare producten met prijs in EUR en de product-URL. Met de login van een B2B-klant krijg je nettoprijzen excl. btw, anders prijzen incl. 21% btw. Roep daarna get_product aan voor varianten en verpakking.",
      "bucket": 2,
      "scope": "server-backed, public",
      "requires_login": "none",
      "available_via": [
        "webmcp",
        "mcp",
        "rest"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 1,
            "maxLength": 120,
            "description": "Wat de shopper zoekt: producttype, merk, collectie of artikelnummer. Vier talen mogelijk."
          },
          "brand": {
            "description": "Beperk tot één merk, exact zoals list_collections het teruggeeft.",
            "type": "string",
            "maxLength": 80
          },
          "collection": {
            "description": "Beperk tot één collectie van dat merk.",
            "type": "string",
            "maxLength": 120
          },
          "max_price": {
            "description": "Maximale prijs in EUR per stuk.",
            "type": "number",
            "exclusiveMinimum": 0
          },
          "limit": {
            "default": 6,
            "description": "Aantal resultaten, 1 tot 8.",
            "type": "integer",
            "minimum": 1,
            "maximum": 8
          },
          "language": {
            "default": "nl",
            "description": "Taal van titels, beschrijvingen en URL's. Standaard nl.",
            "type": "string",
            "enum": [
              "nl",
              "fr",
              "en",
              "de"
            ]
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "get_product",
      "description": "Haal één product op: titel, korte beschrijving, prijs, verpakkingsgrootte (aantal stuks per verpakking), alle koopbare varianten met SKU en kleur, en de URL. Gebruik dit voor manage_cart met action add, om de juiste variant_sku te kiezen.",
      "bucket": 2,
      "scope": "server-backed, public",
      "requires_login": "none",
      "available_via": [
        "webmcp",
        "mcp",
        "rest"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "description": "Product-id (uuid) uit search_catalog.",
            "type": "string",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          },
          "handle": {
            "description": "De slug uit de product-URL, bv. spiegelau-wit-wijnglas-met-arabeskpatroon-14aca83f.",
            "type": "string",
            "minLength": 3,
            "maxLength": 200
          },
          "url": {
            "description": "Volledige product-URL op www.debecker.be.",
            "type": "string",
            "format": "uri"
          },
          "language": {
            "default": "nl",
            "description": "Taal van titels, beschrijvingen en URL's. Standaard nl.",
            "type": "string",
            "enum": [
              "nl",
              "fr",
              "en",
              "de"
            ]
          }
        }
      }
    },
    {
      "name": "list_collections",
      "description": "Lijst de merken van de webshop, of de collecties van één merk met het aantal producten en de URL. Gebruik dit om te browsen of om een merk- of collectienaam exact te krijgen voor search_catalog.",
      "bucket": 2,
      "scope": "server-backed, public",
      "requires_login": "none",
      "available_via": [
        "webmcp",
        "mcp",
        "rest"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "brand": {
            "description": "Merk waarvan je de collecties wilt. Zonder merk krijg je de merkenlijst.",
            "type": "string",
            "maxLength": 80
          },
          "query": {
            "description": "Filter op naam.",
            "type": "string",
            "maxLength": 80
          },
          "language": {
            "default": "nl",
            "description": "Taal van titels, beschrijvingen en URL's. Standaard nl.",
            "type": "string",
            "enum": [
              "nl",
              "fr",
              "en",
              "de"
            ]
          }
        }
      }
    },
    {
      "name": "get_store_info",
      "description": "Feitelijke informatie over Debecker: verzendkosten en drempels per land, levering, retourbeleid, betaalmethodes, kortingen, contact en de openingsuren van de showroom in Kortrijk. Alles komt uit de site zelf; wat niet vastligt, staat als unknown met een link naar de pagina.",
      "bucket": 2,
      "scope": "server-backed, public",
      "requires_login": "none",
      "available_via": [
        "webmcp",
        "mcp",
        "rest"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "topic": {
            "default": "all",
            "description": "Onderwerp; all geeft alles.",
            "type": "string",
            "enum": [
              "shipping",
              "returns",
              "payment",
              "contact",
              "hours",
              "discounts",
              "all"
            ]
          },
          "language": {
            "default": "nl",
            "description": "Taal van titels, beschrijvingen en URL's. Standaard nl.",
            "type": "string",
            "enum": [
              "nl",
              "fr",
              "en",
              "de"
            ]
          }
        }
      }
    },
    {
      "name": "manage_cart",
      "description": "Bekijk en wijzig het winkelmandje van de shopper in deze tab, zoals met de knoppen op de site. action view toont de inhoud; add legt een product in het mandje (geef product_id of handle, en variant_sku uit get_product als het product varianten heeft; quantity is het aantal verpakkingen); set_quantity wijzigt het aantal van een regel (line_id uit view, 0 verwijdert); remove verwijdert een regel; clear maakt het mandje leeg en vraagt confirm: true na akkoord van de shopper. Plaatst geen bestelling en start geen betaling.",
      "bucket": 1,
      "scope": "page-local (in the browser tab)",
      "requires_login": "none",
      "available_via": [
        "webmcp"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "action": {
            "type": "string",
            "enum": [
              "view",
              "add",
              "set_quantity",
              "remove",
              "clear"
            ],
            "description": "Wat er met het mandje moet gebeuren."
          },
          "product_id": {
            "description": "Bij add: product-id uit search_catalog of get_product.",
            "type": "string",
            "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
          },
          "handle": {
            "description": "Bij add: alternatief voor product_id.",
            "type": "string",
            "minLength": 3,
            "maxLength": 200
          },
          "variant_sku": {
            "description": "Bij add: SKU van de variant uit get_product.",
            "type": "string",
            "maxLength": 60
          },
          "color": {
            "description": "Bij add: alternatief voor variant_sku, de kleur zoals get_product ze geeft.",
            "type": "string",
            "maxLength": 60
          },
          "quantity": {
            "description": "Bij add en set_quantity: aantal verpakkingen.",
            "type": "integer",
            "minimum": 0,
            "maximum": 99
          },
          "line_id": {
            "description": "Bij set_quantity en remove: line_id uit action view.",
            "type": "string",
            "maxLength": 160
          },
          "confirm": {
            "description": "Bij clear: true nadat de shopper akkoord gaf.",
            "type": "boolean"
          }
        },
        "required": [
          "action"
        ]
      }
    },
    {
      "name": "start_checkout",
      "description": "Breng de shopper naar het winkelmandje om af te rekenen. Plaatst geen bestelling en start geen betaling: de shopper klikt zelf op Afrekenen en betaalt in de beveiligde Stripe-checkout. Faalt als het mandje leeg is.",
      "bucket": 1,
      "scope": "page-local (in the browser tab)",
      "requires_login": "none",
      "available_via": [
        "webmcp"
      ],
      "input_schema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "b2b_order_history",
      "description": "Toon de eerdere bestellingen van de ingelogde B2B-klant (webshop en facturen): ordernummer, datum, bedrag excl. btw en aantal regels. Met order_number krijg je ook de regels (artikel, SKU, aantal verpakkingen, prijs). Vereist de login van een goedgekeurde B2B-klant; zonder login krijg je AUTH_REQUIRED.",
      "bucket": 3,
      "scope": "server-backed, private (B2B login)",
      "requires_login": "b2b",
      "available_via": [
        "webmcp",
        "mcp",
        "rest"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "order_number": {
            "description": "Ordernummer of factuurnummer voor de regels van één bestelling.",
            "type": "string",
            "maxLength": 60
          },
          "limit": {
            "default": 5,
            "description": "Aantal recentste bestellingen, 1 tot 20.",
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          },
          "language": {
            "default": "nl",
            "description": "Taal van titels, beschrijvingen en URL's. Standaard nl.",
            "type": "string",
            "enum": [
              "nl",
              "fr",
              "en",
              "de"
            ]
          }
        }
      }
    },
    {
      "name": "b2b_reorder",
      "description": "Zet alle regels van een eerdere bestelling van de ingelogde B2B-klant terug in het winkelmandje, met dezelfde aantallen. Artikelen die niet meer in de webshop staan, komen erin als regel aan de prijs van de laatste factuur. Vraag eerst akkoord en stuur confirm: true mee. Plaatst geen bestelling; de klant rekent zelf af. Vereist de login van een goedgekeurde B2B-klant.",
      "bucket": 3,
      "scope": "server-backed, private (B2B login)",
      "requires_login": "b2b",
      "available_via": [
        "webmcp"
      ],
      "input_schema": {
        "type": "object",
        "properties": {
          "order_number": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60,
            "description": "Ordernummer of factuurnummer uit b2b_order_history."
          },
          "confirm": {
            "type": "boolean",
            "const": true,
            "description": "Moet true zijn; vraag de klant eerst om akkoord."
          }
        },
        "required": [
          "order_number",
          "confirm"
        ]
      }
    }
  ]
}