# Tool reference


> All 34 tools, what each one does, and which are read-only, which write, and which are destructive.
Every tool is annotated, so a client can tell them apart without reading this page. **Read** never changes anything. **Write** creates. **Destructive** modifies or deletes.

## Screens

| Tool | | |
| --- | --- | --- |
| `screen_list` | Read | Every screen with status, hardware info, and sync state |
| `screen_get` | Read | One screen by UUID |

**Screens are read-only.** There is no tool to pair, update, disable, or delete a screen. An assistant can tell you a screen is offline; it cannot act on it.

## Assets

| Tool | | |
| --- | --- | --- |
| `asset_list` | Read | Every asset with type, status, and metadata |
| `asset_get` | Read | One asset by UUID |
| `asset_create` | Write | From a URL: web page, image, or video |
| `asset_update` | Destructive | Title, JavaScript injection, headers |
| `asset_delete` | Destructive | By UUID |

`asset_create` takes a URL rather than a file, so an assistant adds content by pointing at it.

## Asset groups

| Tool | | |
| --- | --- | --- |
| `asset_group_list` | Read | The folders in your content library |
| `asset_group_create` | Write | |
| `asset_group_update` | Destructive | |
| `asset_group_delete` | Destructive | **Also deletes every asset in the group** |

> [!IMPORTANT]
> `asset_group_delete` is not the same as deleting a folder in the dashboard, which leaves the content and moves it to the root. Through MCP, deleting a group deletes what is in it.

## Playlists

| Tool | | |
| --- | --- | --- |
| `playlist_list` | Read | |
| `playlist_create` | Write | |
| `playlist_update` | Destructive | |
| `playlist_delete` | Destructive | |

## Playlist items

| Tool | | |
| --- | --- | --- |
| `playlist_item_list` | Read | Everything in a playlist |
| `playlist_item_create` | Write | Add an asset to a playlist |
| `playlist_item_update` | Destructive | Duration and position |
| `playlist_item_delete` | Destructive | Remove an item |

## Labels

| Tool | | |
| --- | --- | --- |
| `label_list` | Read | |
| `label_create` | Write | |
| `label_update` | Destructive | |
| `label_delete` | Destructive | |
| `label_link_screen` | Write | Attach a label to a screen |
| `label_unlink_screen` | Destructive | |
| `label_link_playlist` | Write | Attach a label to a playlist |
| `label_unlink_playlist` | Destructive | |

The link tools are how an assistant changes what plays where, since screens themselves are read-only. See [Labels](/docs/labels/).

## Shared playlists

| Tool | | |
| --- | --- | --- |
| `shared_playlist_list` | Read | |
| `shared_playlist_create` | Write | Share a playlist with another workspace |
| `shared_playlist_delete` | Destructive | Unshare it |

There is no update: a share either exists or it does not.

## Edge apps

| Tool | | |
| --- | --- | --- |
| `edge_app_list` | Read | |
| `edge_app_list_settings` | Read | The settings an app declares |
| `edge_app_list_instances` | Read | Configured instances of an app |
| `edge_app_publish_from_html` | Destructive | Publish HTML as an app, install it, and deploy |

Apart from publishing from HTML, edge apps are read-only through MCP. Building and deploying an app from source is a [CLI](/docs/developers/cli/) job.

## What has no tool at all

Screen settings, pairing, workspace members, integrations, notifications, and billing. Those are dashboard or [API](/docs/developers/api/) work.