{
  "name": "JVVDESIGN Assistant",
  "description": "Winston, the web contact agent of JVVDESIGN - Jan-Willem van Vulpen doing products, systems and experiences (Nuenen, NL). Answers questions about his work, asks up to three qualifying questions about the visitor's project, and files the enquiry for Jan-Willem. The site's chat block is this agent; everything else on the domain is static content.",
  "version": "1.0.0",
  "protocolVersion": "1.0",
  "url": "https://winston.jvvdesign.com/api/pios/web/contact",
  "preferredTransport": "custom:jvvdesign-web-contact-v1",
  "provider": {
    "organization": "JVVDESIGN",
    "url": "https://jvvdesign.com",
    "email": "janwillem@jvvdesign.com"
  },
  "documentation": "https://jvvdesign.com/auth.md",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "supportedInterfaces": [
    {
      "url": "https://winston.jvvdesign.com/api/pios/web/contact",
      "transport": "custom:jvvdesign-web-contact-v1",
      "protocolBinding": "HTTP+JSON",
      "documentation": "https://jvvdesign.com/openapi/web-contact.json"
    }
  ],
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["application/json", "text/markdown"],
  "skills": [
    {
      "id": "jvvdesign-questions",
      "name": "Answer questions about JVVDESIGN",
      "description": "Talks about JVVDESIGN: services (brand design, product UX/UI, front-end development, AI integrations), the project archive at /projects, location, availability and working style. It knows only what the public site says.",
      "tags": ["jvvdesign", "services", "faq"],
      "examples": [
        "Does JVVDESIGN do app design?",
        "What projects has JVVDESIGN delivered for sport brands?"
      ]
    },
    {
      "id": "enquiry-intake",
      "name": "Take a project enquiry",
      "description": "Collects the visitor's enquiry in a short thread: asks at most three qualifying questions, then files the conversation for Jan-Willem using the visitor's reply email. Threads are budgeted (10 turns, 6000 visitor characters) and rate-limited.",
      "tags": ["enquiry", "contact", "intake"],
      "examples": [
        "I need a rebrand for my bakery, who do I talk to?",
        "Can you build a React site with an AI chat like this one?"
      ]
    }
  ],
  "securitySchemes": {
    "contactBearer": {
      "type": "apiKey",
      "in": "header",
      "name": "Authorization",
      "description": "Bearer <public site contact key> as distributed in the site bundle (see /auth.md); requests must additionally carry an Origin allowlisted for this lane. The key is scoped to the web contact endpoint only."
    }
  },
  "security": [
    { "contactBearer": [] }
  ]
}
