# What is available


> The API, the CLI, the MCP server, and edge apps: what each is for and when to pick it.
Four surfaces, one token, one set of permissions.

| Surface | Use it for |
| --- | --- |
| [API](/docs/developers/api/) | Anything, from anything that can make an HTTP request |
| [CLI](/docs/developers/cli/) | Terminal work and CI pipelines |
| [MCP server](/docs/developers/mcp/) | Letting an AI assistant work with your workspace |
| [Edge apps](/docs/developers/edge-apps/) | Content that no ready-made app covers |

## Which one

**The API** if you are building something that runs unattended: provisioning a fleet from an inventory system, syncing content from a CMS, pulling playback data into a warehouse.

**The CLI** if a person or a pipeline is driving. It is the fastest way to do something once, and it drops into GitHub Actions without any wrapper code.

**The MCP server** if the driver is an assistant rather than a script. It exposes the same operations as tools, so "which screens in the Frankfurt plant are offline" is answerable without anyone writing a query.

**An edge app** when the problem is what goes on the screen rather than how it gets there. Everything above moves content around; an edge app *is* content.

## One token, four surfaces

All four authenticate with the same [API token](/docs/developers/overview/api-tokens/) and are scoped by it. A token carries exactly your permissions in one workspace and cannot exceed them, which is the property that matters when you hand one to a pipeline or an assistant.

The dashboard runs on the same API, so there is no capability that exists only by clicking.