{
  "protocol": "prodigy-capability/0.1",
  "provider": {
    "id": "aeris-roasting",
    "name": "Aerís Roasting Co",
    "url": "https://www.aerisroasting.com",
    "status": "active",
    "verified": true,
    "categories": [
      "coffee-roaster",
      "specialty-coffee",
      "local-business",
      "agent-ready"
    ],
    "serviceAreas": ["US", "SD"]
  },
  "capabilities": [
    {
      "id": "get_business",
      "name": "Get business profile",
      "description": "Public identity and Agent Ready manifest for Aerís Roasting Co (not Aerís Signature).",
      "tags": ["business", "identity", "agent-ready"],
      "action": {
        "method": "GET",
        "url": "https://www.aerisroasting.com/.well-known/prodigy.json",
        "contentType": "application/json",
        "timeoutMs": 8000
      },
      "auth": { "type": "none", "location": "none" },
      "inputSchema": { "type": "object", "properties": {} },
      "outputSchema": {
        "type": "object",
        "properties": {
          "protocol": { "type": "string" },
          "business": { "type": "object" },
          "tools": { "type": "array" }
        }
      },
      "risk": {
        "level": "read",
        "humanConfirmation": "never",
        "moneyMovement": false,
        "irreversible": false
      }
    },
    {
      "id": "list_coffees",
      "name": "List coffees on the board",
      "description": "Named lots with origin, notes, sizes, and prices currently offered online.",
      "tags": ["coffee", "catalog", "shop"],
      "action": {
        "method": "GET",
        "url": "https://www.aerisroasting.com/api/agent/coffees.php",
        "contentType": "application/json",
        "timeoutMs": 10000
      },
      "auth": { "type": "none", "location": "none" },
      "inputSchema": { "type": "object", "properties": {} },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean" },
          "lots": { "type": "array" },
          "updated": { "type": "string" }
        }
      },
      "risk": {
        "level": "read",
        "humanConfirmation": "never",
        "moneyMovement": false,
        "irreversible": false
      }
    },
    {
      "id": "check_coffee_availability",
      "name": "Check coffee availability",
      "description": "Live stock flags and available lbs for lots on the board. For Brazil or other lots not listed, use contact_business — stock API cannot invent ETAs.",
      "tags": ["coffee", "stock", "availability"],
      "action": {
        "method": "GET",
        "url": "https://www.aerisroasting.com/api/agent/coffees.php",
        "contentType": "application/json",
        "timeoutMs": 10000
      },
      "auth": { "type": "none", "location": "none" },
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Optional lot slug filter, e.g. candy-blast"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean" },
          "lots": { "type": "array" }
        }
      },
      "risk": {
        "level": "read",
        "humanConfirmation": "never",
        "moneyMovement": false,
        "irreversible": false
      }
    },
    {
      "id": "contact_business",
      "name": "Contact Aerís (human-reviewed)",
      "description": "Submit a structured message to Shawn and Brandon. Use for ETAs (e.g. Brazil coffee), bulk, pickup, tasting, or anything not answered by the coffee board. Owner replies by email/phone — agent should tell the user a human will follow up.",
      "tags": ["contact", "lead", "question", "eta"],
      "action": {
        "method": "POST",
        "url": "https://www.aerisroasting.com/api/agent/message.php",
        "contentType": "application/json",
        "timeoutMs": 15000
      },
      "auth": { "type": "none", "location": "none" },
      "inputSchema": {
        "type": "object",
        "required": ["message"],
        "properties": {
          "message": {
            "type": "string",
            "description": "The question or request for the roastery"
          },
          "kind": {
            "type": "string",
            "description": "order | updates | question | bulk | pickup | tasting | other",
            "default": "question"
          },
          "name": { "type": "string", "description": "Customer name if known" },
          "email": {
            "type": "string",
            "description": "Customer email for reply (strongly preferred)"
          },
          "phone": { "type": "string" },
          "lot": {
            "type": "string",
            "description": "Coffee name or slug if about a specific lot (e.g. Brazil, candy-blast)"
          },
          "agent": {
            "type": "string",
            "description": "Calling agent product name, e.g. ChatGPT"
          },
          "source": {
            "type": "string",
            "description": "Optional source tag",
            "default": "agent"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean" },
          "id": { "type": "string" },
          "status": { "type": "string" },
          "message": { "type": "string" }
        }
      },
      "risk": {
        "level": "low",
        "humanConfirmation": "recommended",
        "moneyMovement": false,
        "irreversible": false
      }
    },
    {
      "id": "ask_about_coffee",
      "name": "Ask about a coffee / ETA",
      "description": "Same backend as contact_business, tuned for coffee questions (availability ETA, process, tasting). Example: When is your Brazil coffee expected?",
      "tags": ["coffee", "eta", "question"],
      "action": {
        "method": "POST",
        "url": "https://www.aerisroasting.com/api/agent/message.php",
        "contentType": "application/json",
        "timeoutMs": 15000
      },
      "auth": { "type": "none", "location": "none" },
      "inputSchema": {
        "type": "object",
        "required": ["message"],
        "properties": {
          "message": { "type": "string" },
          "lot": { "type": "string" },
          "name": { "type": "string" },
          "email": { "type": "string" },
          "agent": { "type": "string" }
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": { "type": "boolean" },
          "id": { "type": "string" },
          "status": { "type": "string" }
        }
      },
      "risk": {
        "level": "low",
        "humanConfirmation": "recommended",
        "moneyMovement": false,
        "irreversible": false
      }
    }
  ]
}
