{
  "apiVersion": 7,
  "version": "1.0.0",
  "key": "virtual-webhook-toy",
  "name": "Virtual Webhook Toy",
  "category": "toy",
  "icon": "Radio",
  "description": "A simulated toy driven over HTTP. The AI sets levels and plays patterns; you watch the result in the chat panel.",
  "supportsPromptContributions": true,
  "supportsLifecycleHooks": true,
  "supportsEmergencyStop": true,
  "chatPanel": { "order": 150 },
  "settings": {
    "fields": {
      "webhookUrl": {
        "id": "webhookUrl",
        "type": "text",
        "scope": "global",
        "title": "Toy URL",
        "description": "Base URL of the virtual toy server. Run virtual-toy-server.mjs to start one locally.",
        "default": "http://localhost:4400",
        "placeholder": "http://localhost:4400",
        "allowPersonaOverride": false
      },
      "authToken": {
        "id": "authToken",
        "type": "password",
        "scope": "global",
        "title": "Bearer token",
        "description": "Only needed when the server was started with TOY_TOKEN.",
        "secret": true,
        "allowPersonaOverride": false
      },
      "toyName": {
        "id": "toyName",
        "type": "text",
        "scope": "global",
        "title": "Toy name",
        "description": "How the persona refers to the toy.",
        "default": "Virtual toy"
      },
      "maxLevel": {
        "id": "maxLevel",
        "type": "slider",
        "scope": "global",
        "title": "Maximum level",
        "description": "The AI cannot go above this. Personas can lower it.",
        "min": 1,
        "max": 10,
        "step": 1,
        "default": 7
      }
    },
    "mainLayout": ["webhookUrl", "authToken", "toyName", "maxLevel"],
    "quickLayout": ["maxLevel"]
  }
}
