{
  "protocolVersion": "0.3.0",
  "name": "Dirigo Screens",
  "description": "Administer e-ink frames and web players: schedules, layouts, previews, and sending a picture. A key sees one account's screens.",
  "url": "https://studio.dirigopaper.com/a2a",
  "preferredTransport": "JSONRPC",
  "version": "0.1.0",
  "provider": {
    "organization": "Dirigo Labs",
    "url": "https://dirigolabs.io"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "image/png"
  ],
  "securitySchemes": {
    "bearer": {
      "type": "http",
      "scheme": "bearer",
      "description": "The account's admin key, or a read-only key for the read skills"
    }
  },
  "security": [
    {
      "bearer": []
    }
  ],
  "skills": [
    {
      "id": "list_screens",
      "name": "List screens",
      "description": "Screens and groups, and what each shows now.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"list_screens\",\"args\":{}}"
      ]
    },
    {
      "id": "get_screen_status",
      "name": "Screen status",
      "description": "What a screen shows, when it changes, battery, Wi-Fi, check-ins.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"get_screen_status\",\"args\":{\"screen\":\"kitchen\"}}"
      ]
    },
    {
      "id": "list_profiles",
      "name": "List devices",
      "description": "Devices a screen can be: size, inks, fetch, longest sleep.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"list_profiles\",\"args\":{}}"
      ]
    },
    {
      "id": "set_profile",
      "name": "Set device",
      "description": "What device a screen is and which way it hangs; one layout renders to any.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"set_profile\",\"args\":{\"screen\":\"kitchen\",\"profile\":\"reterminal-e1002\",\"orientation\":\"landscape\"}}"
      ]
    },
    {
      "id": "set_schedule",
      "name": "Set schedule",
      "description": "Replace a screen's daily slots. Rules: gp:upcoming10 (anything in the next ten days), gp:weekend-on (Fri/Sat evening, the weekend has something on).",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"set_schedule\",\"args\":{\"screen\":\"kitchen\",\"slots\":[{\"at\":\"06:00\",\"layout\":\"morning\"}]}}"
      ]
    },
    {
      "id": "assign_layout",
      "name": "Assign layout",
      "description": "One layout all day on screens, a group, or all.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"assign_layout\",\"args\":{\"targets\":[\"all\"],\"layout\":\"morning\"}}"
      ]
    },
    {
      "id": "render_preview",
      "name": "Render preview",
      "description": "PNG of a screen now, or of a layout on it.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"render_preview\",\"args\":{\"screen\":\"kitchen\",\"layout\":\"morning\"}}"
      ]
    },
    {
      "id": "push_content",
      "name": "Push content",
      "description": "Create or replace a dataset (a calendar, a note).",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"push_content\",\"args\":{\"dataset\":\"calendar\",\"kind\":\"calendar\",\"data\":{\"events\":[{\"date\":\"2026-12-24\",\"title\":\"Everyone home\"}]}}}"
      ]
    },
    {
      "id": "send_image",
      "name": "Send a picture",
      "description": "A picture or note over the schedule until it expires.",
      "tags": [
        "screens"
      ],
      "examples": [
        "{\"skill\":\"send_image\",\"args\":{\"targets\":[\"all\"],\"image_base64\":\"<base64 jpeg>\",\"caption\":\"Hi from the hill\",\"until\":\"2026-12-26T00:00:00Z\"}}"
      ]
    }
  ]
}