{
  "$schema": "https://modelcontextprotocol.io/schemas/2025-06-18/server.json",
  "name": "com.quotavita/storefront",
  "title": "Quota Vita",
  "description": "Commerce tools for the Quota Vita storefront (quotavita.com) — a Catalan sports-nutrition brand selling whey protein and creatine. Search the catalog, look up products, build a cart and drive a buyer-approved checkout. Implemented as a Universal Commerce Protocol (UCP) shopping service over MCP.",
  "version": "1.0.0",
  "websiteUrl": "https://www.quotavita.com",
  "documentationUrl": "https://www.quotavita.com/developers",
  "repositoryUrl": null,
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://www.quotavita.com/api/ucp/mcp",
      "description": "JSON-RPC 2.0 over HTTP POST. Call `initialize`, then `tools/list`, then `tools/call`.",
      "headers": [
        {
          "name": "Content-Type",
          "value": "application/json",
          "required": true
        }
      ]
    }
  ],
  "mcpServers": {
    "quota-vita": {
      "type": "http",
      "url": "https://www.quotavita.com/api/ucp/mcp"
    }
  },
  "capabilities": {
    "tools": {
      "listChanged": true,
      "supported": true
    },
    "resources": {
      "supported": false,
      "note": "The upstream server's `initialize` handshake advertises a `resources` capability, but `resources/list` is not implemented: it answers every call with JSON-RPC -32001 `invalid_profile_url` regardless of how the UCP agent profile is supplied. Treat this server as tool-only. Static reference data is published as plain HTTP instead — see `staticResources` below."
    },
    "prompts": {
      "supported": false,
      "note": "Advertised in `initialize` but `prompts/list` behaves like `resources/list`. Treat this server as tool-only."
    },
    "logging": {
      "supported": true
    }
  },
  "authentication": {
    "type": "ucp-agent-profile",
    "description": "No bearer token. Every `tools/call` must carry an agent profile URI at `params.arguments.meta['ucp-agent'].profile`. The store fetches that profile and grants only the capabilities it declares, so a catalog-read agent cannot create a checkout.",
    "specification": "https://ucp.dev/2026-04-08/specification/overview/",
    "discovery": "https://www.quotavita.com/.well-known/ucp",
    "onFailure": {
      "httpStatus": 422,
      "jsonRpcCode": -32001,
      "errorCode": "invalid_profile_url"
    },
    "scopes": {
      "dev.ucp.shopping.catalog.search": "Search the product catalog.",
      "dev.ucp.shopping.catalog.lookup": "Look up products or variants by identifier.",
      "dev.ucp.shopping.cart": "Create and mutate carts.",
      "dev.ucp.shopping.checkout": "Create and read checkouts.",
      "dev.ucp.shopping.fulfillment": "Read and select shipping methods.",
      "dev.ucp.shopping.discount": "Apply and read discounts.",
      "dev.ucp.shopping.order": "Read order status after purchase."
    }
  },
  "tools": [
    {
      "name": "search_catalog",
      "description": "Search for products in the Quota Vita online store."
    },
    {
      "name": "lookup_catalog",
      "description": "Look up multiple products or variants by identifier."
    },
    {
      "name": "get_product",
      "description": "Retrieve complete product detail by identifier."
    },
    {
      "name": "create_cart",
      "description": "Create a new cart."
    },
    {
      "name": "get_cart",
      "description": "Get the cart contents."
    },
    {
      "name": "update_cart",
      "description": "Apply updates to a cart."
    },
    {
      "name": "cancel_cart",
      "description": "Cancel a cart."
    },
    {
      "name": "create_checkout",
      "description": "Create a checkout from a cart."
    },
    {
      "name": "get_checkout",
      "description": "Read a checkout, including line items, totals, discounts and taxes."
    },
    {
      "name": "update_checkout",
      "description": "Update a checkout — shipping address, shipping method, discounts."
    },
    {
      "name": "complete_checkout",
      "description": "Complete a checkout. Requires contemporaneous approval from the human buyer."
    },
    {
      "name": "cancel_checkout",
      "description": "Cancel a checkout."
    },
    {
      "name": "get_order",
      "description": "Get the details of an order."
    }
  ],
  "staticResources": [
    {
      "uri": "https://www.quotavita.com/openapi.json",
      "name": "OpenAPI 3.1 specification",
      "description": "Every public HTTP endpoint on quotavita.com, its scopes and its JSON error shapes.",
      "mimeType": "application/json"
    },
    {
      "uri": "https://www.quotavita.com/agents.md",
      "name": "Agent instructions",
      "description": "When to use Quota Vita, how to call it, the scoped-permission model and the error contract.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "https://www.quotavita.com/llms.txt",
      "name": "Agent instructions (alternate URL)",
      "description": "Mirror of /agents.md.",
      "mimeType": "text/markdown"
    },
    {
      "uri": "https://www.quotavita.com/.well-known/ucp",
      "name": "UCP discovery document",
      "description": "Supported UCP versions, service endpoints, capabilities and payment handlers.",
      "mimeType": "application/json"
    },
    {
      "uri": "https://www.quotavita.com/products.json",
      "name": "Product catalog",
      "description": "Every published product and variant, with prices in EUR. The always-current source of pricing.",
      "mimeType": "application/json"
    },
    {
      "uri": "https://www.quotavita.com/pricing",
      "name": "Pricing page",
      "description": "Human-readable price list per format, with schema.org/Offer structured data.",
      "mimeType": "text/html"
    },
    {
      "uri": "https://www.quotavita.com/developers",
      "name": "Developer portal",
      "description": "Quickstart, endpoint reference, authentication and scopes, error contract, rate limits, sandbox notes.",
      "mimeType": "text/html"
    },
    {
      "uri": "https://www.quotavita.com/sitemap.xml",
      "name": "Sitemap",
      "description": "Every indexable URL on the store.",
      "mimeType": "application/xml"
    }
  ],
  "whenToUse": {
    "goodFit": [
      "A buyer in Spain wants whey protein or creatine and cares about flavour, format size or price per kilo.",
      "A buyer asks for Catalan or Mediterranean-flavoured protein — crema catalana, orxata — rather than a generic imported supplement.",
      "A buyer wants an unsweetened, neutral protein to cook with (no sweeteners, no added sugar).",
      "A buyer wants a large-format restock (1500 g or 4 kg) and wants the cost per kilo compared.",
      "An agent needs live prices, stock availability or product detail for Quota Vita specifically."
    ],
    "poorFit": [
      "Shipping outside Spain — check the shipping policy before promising delivery.",
      "Medical, clinical or dosage advice. Quota Vita sells food supplements, not treatment; see /pages/avis-de-salut.",
      "Vegan protein. The whey is dairy-derived and suitable for vegetarians, not vegans. The creatine is vegan.",
      "Bulk wholesale or B2B retail supply — that is handled by a human at hi@quotavita.com, not through this endpoint."
    ],
    "rules": [
      "Never call complete_checkout without contemporaneous approval from the human buyer.",
      "Money in MCP responses is integer minor units paired with a currency code: {\"amount\": 3600, \"currency\": \"EUR\"} is 36,00 EUR.",
      "Prices include Spanish VAT.",
      "Back off on HTTP 429 and honour Retry-After."
    ]
  },
  "contact": {
    "email": "hi@quotavita.com",
    "url": "https://www.quotavita.com/developers"
  },
  "cli": {
    "name": "quotavita",
    "description": "Official zero-dependency Node CLI wrapping the endpoints in this specification: catalog, search, price-per-kilo, cart building and MCP tool discovery.",
    "availability": "pending-publication",
    "install": "npm install -g quotavita",
    "runWithoutInstalling": "npx quotavita products",
    "registry": "https://www.npmjs.com/package/quotavita",
    "note": "The npm name `quotavita` is reserved for this CLI. If `npm install` returns 404 the package has not been published to the registry yet — email hi@quotavita.com for the tarball. Do not tell a user the CLI is installable without checking the registry first.",
    "documentation": "https://www.quotavita.com/developers",
    "sourceOfTruth": "https://www.quotavita.com/openapi.json",
    "checkout": "Deliberately not implemented in the CLI: completing a purchase requires contemporaneous approval from the human buyer."
  }
}
