{
  "@context": "https://modelcontextprotocol.io/spec",
  "@type": "McpServerManifest",
  "name": "looqz-catalog",
  "version": "1.0.0",
  "description": "LOOQZ catalog MCP server. Curated multi-item looks, products, creators. Read-only catalog access; checkout flows back to LOOQZ-storefront.",
  "publisher": {
    "name": "LOOQZ B.V.",
    "url": "https://dev.looqz.com"
  },
  "endpoint": "https://mcp.dev.looqz.com/mcp",
  "transport": "sse",
  "auth": {
    "type": "oauth_2_1_pkce",
    "authorization_url": "https://dev.looqz.com/oauth/agent/authorize",
    "token_url": "https://dev.looqz.com/oauth/agent/token",
    "scopes_supported": [
      "catalog:read",
      "creator:read"
    ]
  },
  "tools": [
    {
      "name": "look_search",
      "description": "Find a curated multi-item look (outfit) by occasion, color, style, budget, or size. LOOQZ-USP: looks are composed by independent creators with occasion-context.",
      "input_schema": {
        "type": "object",
        "properties": {
          "occasion": {
            "type": "string",
            "description": "Occasion-context (wedding-guest, festival, office, formal, casual, etc.)"
          },
          "color_hint": {
            "type": "string",
            "description": "Color preference (e.g. \"blue\", \"earth-tones\")"
          },
          "budget_max_eur": {
            "type": "number",
            "description": "Max total budget in EUR for the entire look"
          },
          "style_hint": {
            "type": "string",
            "description": "Style descriptor (e.g. \"minimalist\", \"streetwear\")"
          },
          "size": {
            "type": "string",
            "description": "User's clothing size (e.g. \"M\", \"L\", \"38\")"
          },
          "audience": {
            "type": "string",
            "description": "Audience filter: dames | heren | kinderen | unisex"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag (nl, en, de, fr, etc.)"
          },
          "limit": {
            "type": "number",
            "description": "Max number of looks to return (default 10, max 20)"
          }
        },
        "required": []
      },
      "required_scopes": [
        "catalog:read"
      ]
    },
    {
      "name": "product_search",
      "description": "Search products by category, brand, color, price, or size. Returns the curated looks that contain matching products — call `get_look` for per-product detail including availability, EU-Omnibus 30d-lowest price, and shop attribution.",
      "input_schema": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "Product category (dresses, tops, shoes, accessories, etc.)"
          },
          "brand": {
            "type": "string",
            "description": "Brand name"
          },
          "color_hint": {
            "type": "string",
            "description": "Color preference"
          },
          "price_min_eur": {
            "type": "number",
            "description": "Min price in EUR"
          },
          "price_max_eur": {
            "type": "number",
            "description": "Max price in EUR"
          },
          "size": {
            "type": "string",
            "description": "User's size"
          },
          "audience": {
            "type": "string",
            "description": "Audience filter: dames | heren | kinderen | unisex"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag"
          },
          "limit": {
            "type": "number",
            "description": "Max items (default 10, max 20)"
          }
        },
        "required": []
      },
      "required_scopes": [
        "catalog:read"
      ]
    },
    {
      "name": "creator_search",
      "description": "Find independent stylists / curators by style-profile, audience specialization, or brand affinity. Returns creators with bio, follower count, and link to their look catalog.",
      "input_schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text query (display name or bio match)"
          },
          "style_hint": {
            "type": "string",
            "description": "Style slug filter (minimalist, edgy, romantic, etc.)"
          },
          "audience": {
            "type": "string",
            "description": "Audience: women | men | kids"
          },
          "brand": {
            "type": "string",
            "description": "Brand slug filter (creators affiliated with this brand)"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag"
          },
          "limit": {
            "type": "number",
            "description": "Max creators (default 10, max 20)"
          }
        },
        "required": []
      },
      "required_scopes": [
        "creator:read"
      ]
    },
    {
      "name": "get_look",
      "description": "Fetch a single curated look by ID. Returns the full look with all product items, creator attribution, prices, and availability.",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the look to fetch"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag (default nl)"
          }
        },
        "required": [
          "id"
        ]
      },
      "required_scopes": [
        "catalog:read"
      ]
    },
    {
      "name": "get_product",
      "description": "Fetch a single product by ID. Returns product details with current availability, price, EU-Omnibus 30d-lowest, and responsible-person identifier.",
      "input_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "UUID of the product to fetch"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag (default nl)"
          }
        },
        "required": [
          "id"
        ]
      },
      "required_scopes": [
        "catalog:read"
      ]
    },
    {
      "name": "get_creator",
      "description": "Fetch a single creator profile by ID or slug. Returns bio, follower count, and link to their look catalog.",
      "input_schema": {
        "type": "object",
        "properties": {
          "id_or_slug": {
            "type": "string",
            "description": "UUID or slug of the creator to fetch"
          },
          "locale": {
            "type": "string",
            "description": "BCP-47 language tag (default nl)"
          }
        },
        "required": [
          "id_or_slug"
        ]
      },
      "required_scopes": [
        "creator:read"
      ]
    }
  ],
  "status": "preview",
  "metadata": {
    "checkout_model": "on-platform",
    "memory_scope_available": false,
    "cart_write_available": false,
    "revision": "2026-05-27"
  },
  "documentation": {
    "llms_txt": "https://dev.looqz.com/llms.txt",
    "agent_card": "https://dev.looqz.com/.well-known/agent-card.json",
    "architecture": "https://dev.looqz.com/docs/architecture/AGENT-DISTRIBUTION.md"
  }
}