{
  "name": "Fréscopa Coffee Catalog Assistant",
  "description": "A read-only Fréscopa service for coffee catalog search, recommendations, office supply planning, and stock availability checks. Send a JSON command encoded in a text/plain message part using A2A 1.0 JSON-RPC. Planning uses caller-supplied assumptions. Availability comes from Fréscopa's inventory snapshot and is not a reservation. No natural-language understanding, reservations, or purchasing.",
  "supportedInterfaces": [
    {
      "url": "https://museai-test.franklin-prod.workers.dev/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    }
  ],
  "version": "0.3.0",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extensions": []
  },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    {
      "id": "search-products",
      "name": "Search coffee products",
      "description": "Send a JSON command with action search-products inside a text/plain message part. Optional fields: origin, roast, maxPrice in USD, flavor, and limit from 1 to 10. All supplied filters must match. Results are ordered by price, lowest first.",
      "tags": ["coffee", "catalog", "product-search"],
      "examples": ["{\"action\":\"search-products\",\"origin\":\"Colombia\",\"maxPrice\":25}"]
    },
    {
      "id": "recommend-products",
      "name": "Recommend coffee products",
      "description": "Send a JSON command with action recommend-products inside a text/plain message part. Supports the same filters as search-products. Returns the lowest-priced matching coffees with explanations; filters are never relaxed. Recommendations are deterministic, not AI-generated.",
      "tags": ["coffee", "recommendations", "product-discovery"],
      "examples": ["{\"action\":\"recommend-products\",\"flavor\":\"chocolate\",\"limit\":2}"]
    },
    {
      "id": "plan-office-coffee",
      "name": "Plan office coffee supply and budget",
      "description": "Send action plan-office-coffee in a JSON-encoded text/plain part. Required numeric fields: people, cupsPerPersonPerDay, workingDays, gramsPerCup, bagSizeGrams, budget in USD. Quantities must be positive and no greater than 1000000; all except cupsPerPersonPerDay are integers. Budget is non-negative, at most 1000000000, with at most two decimal places. Optional origin, roast, flavor filters must all match. Missing fields return status needs-input and missingFields: ask the customer; do not guess. Computes cups, coffee grams, whole bags rounded up, and each matching product's cost and budget shortfall. Bag size is a caller-supplied assumption. Tax/shipping excluded; no discounts, orders, or changes to inputs. Each option uses a single product for all bags.",
      "tags": ["coffee", "office-planning", "budget", "read-only"],
      "examples": ["{\"action\":\"plan-office-coffee\",\"people\":20,\"cupsPerPersonPerDay\":1,\"workingDays\":20,\"gramsPerCup\":15,\"bagSizeGrams\":250,\"flavor\":\"chocolate\",\"budget\":500}"]
    },
    {
      "id": "check-demo-availability",
      "name": "Check stock availability",
      "description": "Send action check-demo-availability in a JSON-encoded text/plain part. Required fields: productId (exact id from catalog search or planning) and quantity (integer 1 to 1000000 bags). Returns availableBags, sufficient, and shortfallBags from Fréscopa's inventory snapshot. Products without stock data return status unknown and null availability/sufficiency, not zero. Missing inputs return needs-input and missingFields. After plan-office-coffee, call this skill for each option using requirements.bagsRequired; recommend only options within budget and with sufficient=true. Never claim unknown quantities are available. Availability is not a reservation; no reservations, purchases, or stock changes.",
      "tags": ["coffee", "inventory", "availability", "read-only"],
      "examples": ["{\"action\":\"check-demo-availability\",\"productId\":\"frescopa-house-blend\",\"quantity\":24}", "{\"action\":\"check-demo-availability\",\"productId\":\"colombian-supremo\",\"quantity\":24}"]
    }
  ]
}
