API Reference

CastHub MCP Tool Reference

Approximately 58 tools across 10 domains. Every operation your AI assistant can perform on your signage network.

CastHub MCP implements the Model Context Protocol to give AI assistants structured, governed access to your digital signage infrastructure.

Every tool below is annotated in the production MCP server with one of three hints: ReadOnly, Destructive, or Idempotent. AI assistants use these hints to decide when to ask for your confirmation. Read tools run freely. Write tools surface a preview and request confirmation. Destructive tools require explicit confirmation. The Level labels on individual tools below summarize the confirmation pattern your AI client will follow.

Dashboard & User Live

Account overview and identity tools. Retrieve screen counts, device status, user profile, and quick identity checks.

get_dashboard

Returns a dashboard summary including screen count, active presentations, and device status overview.

ParameterTypeRequired
No parameters
Example request & response
{ "tool": "get_dashboard" }
{
  "screenCount": 24,
  "activePresentations": 12,
  "devicesOnline": 22,
  "devicesOffline": 2
}

get_user_info

Returns the current user profile and account details including role and plan information.

ParameterTypeRequired
No parameters
Example request & response
{ "tool": "get_user_info" }
{
  "email": "admin@school.org",
  "role": "admin",
  "plan": "enterprise",
  "screensAllowed": "unlimited"
}

who_am_i

Quick identity check returning the current user name and email address.

ParameterTypeRequired
No parameters
Example request & response
{ "tool": "who_am_i" }
{
  "name": "Sarah Chen",
  "email": "sarah@company.com"
}

Presentations Live

Create, update, delete, and assign presentations to device groups. The core content management tools for your signage network.

get_presentations

List all presentations in the account with pagination support.

ParameterTypeRequired
pageintOptional
limitintOptional
Example request & response
{
  "tool": "get_presentations",
  "params": { "page": 1, "limit": 10 }
}
[
  {
    "id": "pres_abc123",
    "name": "Welcome Lobby Display",
    "slidesCount": 5,
    "status": "active"
  },
  {
    "id": "pres_def456",
    "name": "Cafeteria Menu Board",
    "slidesCount": 3,
    "status": "active"
  }
]

get_presentation

Retrieve full details for a single presentation including all slide data.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "get_presentation",
  "params": { "presentationId": "pres_abc123" }
}
{
  "id": "pres_abc123",
  "name": "Welcome Lobby Display",
  "slidesCount": 5,
  "status": "active",
  "slides": [ /* ... full slide data ... */ ],
  "createdAt": "2025-11-01T09:00:00Z"
}

create_presentation

Create a new presentation with an optional initial set of slides.

ParameterTypeRequired
namestringRequired
slidesarrayOptional
Example request & response
{
  "tool": "create_presentation",
  "params": {
    "name": "Holiday Hours Notice",
    "slides": [
      { "type": "text", "content": "Closed Dec 25-26" }
    ]
  }
}
{
  "id": "pres_ghi789",
  "name": "Holiday Hours Notice",
  "slidesCount": 1,
  "status": "draft"
}

update_presentation

Update an existing presentation's name or slides.

ParameterTypeRequired
presentationIdstringRequired
namestringOptional
slidesarrayOptional
Example request & response
{
  "tool": "update_presentation",
  "params": {
    "presentationId": "pres_abc123",
    "name": "Updated Lobby Display"
  }
}
{
  "id": "pres_abc123",
  "name": "Updated Lobby Display",
  "status": "active"
}

delete_presentation

Permanently delete a presentation from the account.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "delete_presentation",
  "params": { "presentationId": "pres_abc123" }
}
{ "success": true }

assign_presentation

Level 2

Assign a presentation to a specific device group. Governance Level 2 — requires confirmation before execution.

ParameterTypeRequired
presentationIdstringRequired
groupIdstringRequired
Example request & response
{
  "tool": "assign_presentation",
  "params": {
    "presentationId": "pres_abc123",
    "groupId": "grp_lobby"
  }
}
{
  "success": true,
  "affectedDevices": 6
}

assign_presentation_to_default

Level 3

Assign a presentation to the default group, affecting all screens across the network. Governance Level 3 — high-impact action requiring explicit approval.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "assign_presentation_to_default",
  "params": { "presentationId": "pres_abc123" }
}
{
  "success": true,
  "affectedDevices": 24
}

Slide Media Live

Upload, register, and acknowledge image and video assets used as slides in presentations. The upload flow follows a register, upload to storage, acknowledge pattern to support large media without timeouts.

register_slide_image_upload

Level 2

Register an intent to upload an image slide. Returns a signed upload URL and a slide identifier. Step 1 of the image upload flow.

acknowledge_slide_image_upload

Level 2

Confirm that an image upload completed successfully. CastHub finalizes the slide and attaches it to its parent presentation. Step 3 of the image upload flow.

register_slide_video_upload

Level 2

Register an intent to upload a video slide. Returns a signed upload URL and a slide identifier. Step 1 of the video upload flow.

acknowledge_slide_video_upload

Level 2

Confirm that a video upload completed successfully. CastHub finalizes the slide and attaches it to its parent presentation. Step 3 of the video upload flow.

Devices Live

List, update, delete, and move devices between groups. Monitor your fleet of signage players.

get_devices

List all devices, optionally filtered by group or status.

ParameterTypeRequired
groupIdstringOptional
statusstringOptional
Example request & response
{
  "tool": "get_devices",
  "params": { "status": "online" }
}
[
  {
    "id": "dev_001",
    "name": "Lobby Screen Left",
    "status": "online",
    "groupId": "grp_lobby"
  }
]

update_device

Update a device name or configuration.

ParameterTypeRequired
deviceIdstringRequired
namestringOptional
Example request & response
{
  "tool": "update_device",
  "params": { "deviceId": "dev_001", "name": "Main Entrance Screen" }
}
{
  "id": "dev_001",
  "name": "Main Entrance Screen",
  "status": "online"
}

delete_device

Level 2

Remove a device from the account. Governance Level 2 — requires confirmation.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "delete_device",
  "params": { "deviceId": "dev_001" }
}
{ "success": true }

change_device_group

Move a device from its current group to a different group.

ParameterTypeRequired
deviceIdstringRequired
groupIdstringRequired
Example request & response
{
  "tool": "change_device_group",
  "params": { "deviceId": "dev_001", "groupId": "grp_cafeteria" }
}
{
  "success": true,
  "previousGroup": "grp_lobby",
  "newGroup": "grp_cafeteria"
}

Device Groups Live

Create and manage logical groupings of devices. Groups are the primary unit for content targeting, scheduling, and alerts.

create_device_group

Create a new device group with a name and optional description.

ParameterTypeRequired
namestringRequired
descriptionstringOptional
Example request & response
{
  "tool": "create_device_group",
  "params": {
    "name": "Building B - Hallways",
    "description": "All hallway screens in Building B"
  }
}
{
  "id": "grp_bldgb_hall",
  "name": "Building B - Hallways",
  "deviceCount": 0
}

update_device_group

Update a group's name or description.

ParameterTypeRequired
groupIdstringRequired
namestringOptional
descriptionstringOptional
Example request & response
{
  "tool": "update_device_group",
  "params": { "groupId": "grp_lobby", "name": "Main Lobby" }
}
{
  "id": "grp_lobby",
  "name": "Main Lobby",
  "deviceCount": 6
}

delete_device_group

Level 2

Delete a device group. Devices in the group will be moved to the default group. Governance Level 2.

ParameterTypeRequired
groupIdstringRequired
Example request & response
{
  "tool": "delete_device_group",
  "params": { "groupId": "grp_bldgb_hall" }
}
{ "success": true, "devicesReassigned": 4 }

Schedules Live

Manage linear and weekly schedules that automate when presentations play on device groups.

get_schedules

List all schedules, optionally filtered by group.

ParameterTypeRequired
groupIdstringOptional
Example request & response
{
  "tool": "get_schedules",
  "params": { "groupId": "grp_lobby" }
}
[
  {
    "id": "sched_001",
    "type": "weekly",
    "name": "Weekday Rotation",
    "groupId": "grp_lobby"
  }
]

get_linear_schedule

Get details for a linear (sequential) schedule.

ParameterTypeRequired
scheduleIdstringRequired
Example request & response
{
  "tool": "get_linear_schedule",
  "params": { "scheduleId": "sched_002" }
}
{
  "id": "sched_002",
  "type": "linear",
  "name": "Morning Announcements",
  "entries": [
    { "presentationId": "pres_abc123", "startTime": "08:00", "endTime": "12:00" }
  ]
}

get_weekly_schedule

Get details for a weekly schedule with day-by-day configuration.

ParameterTypeRequired
scheduleIdstringRequired
Example request & response
{
  "tool": "get_weekly_schedule",
  "params": { "scheduleId": "sched_001" }
}
{
  "id": "sched_001",
  "type": "weekly",
  "name": "Weekday Rotation",
  "days": {
    "monday": [{ "presentationId": "pres_abc123", "time": "09:00" }],
    "friday": [{ "presentationId": "pres_def456", "time": "09:00" }]
  }
}

assign_schedule

Level 2

Assign a schedule to a device group. Governance Level 2.

ParameterTypeRequired
scheduleIdstringRequired
groupIdstringRequired
Example request & response
{
  "tool": "assign_schedule",
  "params": { "scheduleId": "sched_001", "groupId": "grp_lobby" }
}
{ "success": true, "affectedDevices": 6 }

remove_schedule

Unassign a schedule from a device group without deleting it.

ParameterTypeRequired
scheduleIdstringRequired
groupIdstringRequired
Example request & response
{
  "tool": "remove_schedule",
  "params": { "scheduleId": "sched_001", "groupId": "grp_lobby" }
}
{ "success": true }

delete_schedule

Level 2

Permanently delete a schedule. Governance Level 2.

ParameterTypeRequired
scheduleIdstringRequired
Example request & response
{
  "tool": "delete_schedule",
  "params": { "scheduleId": "sched_002" }
}
{ "success": true }

Alerts Live

Emergency alerts, text alerts, and alert presentation management. Trigger visual or text-based alerts across all screens or targeted groups.

start_all_alerts

Level 4

Trigger an alert on all screens across the entire network. Governance Level 4 — critical action requiring multi-step approval.

ParameterTypeRequired
No parameters
Example request & response
{ "tool": "start_all_alerts" }
{
  "success": true,
  "screensAffected": 24,
  "alertId": "alert_emergency_001"
}

stop_all_alerts

Level 3

Stop all currently active alerts across the network. Governance Level 3.

ParameterTypeRequired
No parameters
Example request & response
{ "tool": "stop_all_alerts" }
{ "success": true, "alertsStopped": 1 }

start_group_alert

Level 2

Trigger an alert on a specific device group. Governance Level 2.

ParameterTypeRequired
groupIdstringRequired
Example request & response
{
  "tool": "start_group_alert",
  "params": { "groupId": "grp_lobby" }
}
{ "success": true, "screensAffected": 6 }

stop_group_alert

Stop an active alert on a specific device group.

ParameterTypeRequired
groupIdstringRequired
Example request & response
{
  "tool": "stop_group_alert",
  "params": { "groupId": "grp_lobby" }
}
{ "success": true }

start_text_alert

Level 4

Send a text-based alert message to all screens across the network. Governance Level 4.

ParameterTypeRequired
messagestringRequired
durationintOptional
Example request & response
{
  "tool": "start_text_alert",
  "params": {
    "message": "Fire drill in progress. Please evacuate.",
    "duration": 300
  }
}
{
  "success": true,
  "screensAffected": 24,
  "expiresIn": 300
}

start_text_alert_for_group

Level 2

Send a text-based alert to a specific device group. Governance Level 2.

ParameterTypeRequired
groupIdstringRequired
messagestringRequired
durationintOptional
Example request & response
{
  "tool": "start_text_alert_for_group",
  "params": {
    "groupId": "grp_cafeteria",
    "message": "Kitchen closed for maintenance",
    "duration": 600
  }
}
{ "success": true, "screensAffected": 3 }

assign_alert_presentation

Level 2

Set which presentation displays when an alert is triggered. Governance Level 2.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "assign_alert_presentation",
  "params": { "presentationId": "pres_emergency" }
}
{ "success": true }

assign_alert_presentation_to_default

Level 3

Set the default alert presentation for all groups. Governance Level 3.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "assign_alert_presentation_to_default",
  "params": { "presentationId": "pres_emergency" }
}
{ "success": true, "groupsAffected": 5 }

remove_alert_presentation

Remove the currently assigned alert presentation, reverting to no alert content.

ParameterTypeRequired
presentationIdstringRequired
Example request & response
{
  "tool": "remove_alert_presentation",
  "params": { "presentationId": "pres_emergency" }
}
{ "success": true }

Device Commands, Amazon Signage Stick Live

Amazon

Low-level hardware operations for Amazon Signage Stick devices: restart, reset, screen capture, display power, and health diagnostics.

These tools require Amazon Signage Stick hardware. See the Amazon Signage API docs for hardware-level details.

restart_device

Level 2 Amazon

Restart an Amazon Signage Stick. Governance Level 2.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "restart_device",
  "params": { "deviceId": "dev_001" }
}
{ "success": true, "estimatedDowntime": 30 }

factory_reset_device

Level 4 Amazon

Factory reset an Amazon Signage Stick, erasing all local data. Governance Level 4 — irreversible, requires multi-step approval.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "factory_reset_device",
  "params": { "deviceId": "dev_001" }
}
{ "success": true, "warning": "Device will require re-provisioning" }

get_device_health

Amazon

Retrieve hardware health metrics including CPU/GPU temperature, memory usage, storage, and WiFi signal strength.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "get_device_health",
  "params": { "deviceId": "dev_001" }
}
{
  "cpuTemp": 52.3,
  "gpuTemp": 48.1,
  "memoryUsedMB": 412,
  "memoryTotalMB": 2048,
  "storageUsedGB": 3.2,
  "storageTotalGB": 8,
  "wifiSignalDbm": -42
}

capture_screen

Amazon

Capture a screenshot of what the device is currently displaying. Returns a temporary image URL.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "capture_screen",
  "params": { "deviceId": "dev_001" }
}
{
  "imageUrl": "https://cdn.cast-hub.com/captures/dev_001_1706..png",
  "capturedAt": "2025-12-01T14:30:00Z"
}

display_on

Level 2 / 3 Amazon

Turn on the physical display. Governance Level 2 for a single device, Level 3 when targeting all devices in a group.

ParameterTypeRequired
deviceIdstringRequired (or groupId)
groupIdstringOptional (targets all in group)
Example request & response
{
  "tool": "display_on",
  "params": { "deviceId": "dev_001" }
}
{ "success": true, "displayState": "on" }

display_off

Level 2 / 3 Amazon

Turn off the physical display. Governance Level 2 for a single device, Level 3 when targeting all devices in a group.

ParameterTypeRequired
deviceIdstringRequired (or groupId)
groupIdstringOptional (targets all in group)
Example request & response
{
  "tool": "display_off",
  "params": { "groupId": "grp_lobby" }
}
{ "success": true, "devicesAffected": 6, "displayState": "off" }

clear_device_cache

Level 2 Amazon

Clear locally cached content on the Signage Stick to free storage or force a fresh download. Governance Level 2.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "clear_device_cache",
  "params": { "deviceId": "dev_001" }
}
{ "success": true, "freedMB": 1240 }

get_device_info

Amazon

Retrieve detailed device information including MAC address, serial number, IP address, and firmware version.

ParameterTypeRequired
deviceIdstringRequired
Example request & response
{
  "tool": "get_device_info",
  "params": { "deviceId": "dev_001" }
}
{
  "deviceId": "dev_001",
  "macAddress": "A4:CF:12:8B:3E:01",
  "serialNumber": "G0W1LA07XXXXXXX",
  "ipAddress": "192.168.1.42",
  "firmwareVersion": "FireOS 7.6.3.2"
}

Team Members Live

Invite people, set who is a Manager and who is a Member, and hand the account over, from an AI assistant. These tools need the Enterprise plan. Inviting sends a real email, so the assistant always confirms first.

get_account_members

List everyone on the account, with the account holder marked, plus the seat limit and whether another member can be invited. Read-only, and any member can call it.

ParameterTypeRequired
No parameters
Example request
{ "tool": "get_account_members" }

invite_account_member

Invite a person onto the account. This sends a real email with a generated password and creates their login, so the assistant confirms with you first. Account holder only, Enterprise only, and within the seat limit.

ParameterTypeRequired
emailstringRequired
firstNamestringOptional
lastNamestringOptional
rolestring: Manager or MemberOptional
Example request
{
  "tool": "invite_account_member",
  "params": { "email": "sam@example.com", "role": "Member" }
}

resend_account_member_invite

Level 2

Issue an invited member a new password and email it again, for an invite that never arrived. Requires confirmation: their current password stops working at once.

ParameterTypeRequired
userIdintegerRequired
Example request
{
  "tool": "resend_account_member_invite",
  "params": { "userId": 42 }
}

remove_account_member

Level 2

Permanently delete an invited member's login. Requires confirmation and cannot be undone. Content belongs to the account, so nothing the member created is lost.

ParameterTypeRequired
userIdintegerRequired
Example request
{
  "tool": "remove_account_member",
  "params": { "userId": 42 }
}

set_account_member_role

Level 2

Promote a member to Manager, who sees and changes everything, or demote a Manager to Member, who sees only the spaces they belong to. Requires confirmation when demoting.

ParameterTypeRequired
userIdintegerRequired
rolestring: Manager or MemberRequired
Example request
{
  "tool": "set_account_member_role",
  "params": { "userId": 42, "role": "Manager" }
}

transfer_account_holder

Level 2

Hand the account, billing included, to another member. Requires confirmation: the caller stops being the account holder and cannot transfer it back on their own.

ParameterTypeRequired
userIdintegerRequired
Example request
{
  "tool": "transfer_account_holder",
  "params": { "userId": 42 }
}

Spaces Live

Split one account into spaces, one per store, site or team, and decide who reaches each. A Member sees only the spaces they belong to. These tools need the Enterprise plan.

get_spaces

List the spaces you can reach, who is in each one and how much content each holds. Everyone reaches the shared space. Read-only.

ParameterTypeRequired
No parameters
Example request
{ "tool": "get_spaces" }

create_space

Create a restricted space that only its members reach, for example one per store or site. Manager only, Enterprise only.

ParameterTypeRequired
titlestringRequired
Example request
{
  "tool": "create_space",
  "params": { "title": "Berlin store" }
}

rename_space

Rename a space. The shared space can be renamed too. Manager only.

ParameterTypeRequired
spaceIdintegerRequired
titlestringRequired
Example request
{
  "tool": "rename_space",
  "params": { "spaceId": 7, "title": "Warehouse" }
}

delete_space

Level 2

Delete an empty space. Requires confirmation, and is refused while the space still holds presentations, device groups or schedules.

ParameterTypeRequired
spaceIdintegerRequired
Example request
{
  "tool": "delete_space",
  "params": { "spaceId": 7 }
}

add_member_to_space

Put one member into one space, which gives them everything in it: presentations, device groups and schedules. Manager only.

ParameterTypeRequired
userIdintegerRequired
spaceIdintegerRequired
Example request
{
  "tool": "add_member_to_space",
  "params": { "userId": 42, "spaceId": 7 }
}

remove_member_from_space

Level 2

Take one member out of one space, which hides everything in it from them. Requires confirmation; it changes their access, not any content. Nobody can be removed from the shared space.

ParameterTypeRequired
userIdintegerRequired
spaceIdintegerRequired
Example request
{
  "tool": "remove_member_from_space",
  "params": { "userId": 42, "spaceId": 7 }
}

move_content_to_space

Move presentations, device groups and schedules into a space. Everything named moves together, or nothing does. Manager only.

ParameterTypeRequired
spaceIdintegerRequired
presentationIdsinteger[]Optional
deviceGroupIdsinteger[]Optional
scheduleIdsinteger[]Optional
Example request
{
  "tool": "move_content_to_space",
  "params": { "spaceId": 7, "presentationIds": [12, 15], "deviceGroupIds": [3] }
}

Ready to get started?

Set up CastHub MCP with your preferred AI assistant in under five minutes, or see how it compares to manual signage management.

Ready to connect?

Set up CastHub MCP with your preferred AI assistant in under five minutes.