MCP server
Model Context Protocol · https://api.seencast.app/mcp
SeenCast exposes its whole API as an MCP server, so you can manage screens, playlists, schedules, and the media library by talking to Claude — in Claude Desktop, or any other MCP-compatible client — instead of clicking through the CMS.
It's the exact same service layer the CMS and SeenCast's own in-app assistant call. Every tool call resolves to one organization and one role, and every write is confirm-gated (see below), so nothing reaches a screen unseen.
2-minute setup (Claude Desktop)
- Sign in to SeenCast and open Settings → Personal API keys.
- Click New key, name it (e.g. "Claude Desktop"), and copy the secret — it's shown exactly once.
-
In Claude Desktop, add a remote MCP server:
URL: https://api.seencast.app/mcp Authorization: Bearer <your key> - Ask it something like "what screens are offline right now?" or "schedule the lunch menu on the Register screen, 11am–2pm daily."
Any MCP client that speaks Streamable HTTP with a bearer token works the same way — Claude Desktop is just the fastest path to try it.
Writes are confirm-gated: confirm: true
Every tool is one of two kinds:
-
Read tools (
list_screens,search_media,preview_schedule, …) run immediately. Nothing to confirm, nothing to undo. -
Write tools (
create_schedule,set_overlay,generate_image, …) never apply on the first call. Call one withoutconfirm, and you get back a staged preview — a plain-language summary of exactly what would change, with nothing touched yet. Call the same tool again with"confirm": trueand the same arguments, and it applies.
This is deliberately stricter than the CMS itself: inside SeenCast a few trivially reversible edits (like renaming a screen) apply instantly with a one-click undo. Over MCP every write previews first, with no exceptions — the human in the loop is whoever is running the MCP client, and the protocol has no undo affordance to fall back on.
Tools
24 tools, generated 1:1 from SeenCast's live tool registry — this list can't drift from what the server actually does.
Read
| Tool | What it does |
|---|---|
list_screens | List the org's screens with their status, timezone and group membership. |
list_groups | List the org's screen groups and the screen ids in each. |
search_media | Search the media library by filename and kind (image, video, or url). |
list_playlists | List the org's playlists. |
list_schedules | List schedules, optionally filtered to a screen or group target. |
preview_schedule | Dry-run the resolver: what would play on a screen at an instant, and which schedules compete. |
get_org_limits | The org plan, its limits (max screens, storage, assistant), and current usage. |
get_brand_kit | The org's brand kit: logo media id, brand colors, font, and tone-of-voice line. |
get_capabilities | List every operation you can run, with parameters — call this when unsure what's available. |
Write (confirm-gated)
| Tool | What it does |
|---|---|
create_playlist | Create a playlist, optionally with an ordered list of media items. |
update_playlist_items | Replace the full ordered item list of an existing playlist. |
create_schedule | Schedule a playlist on a screen, group, or the whole org for a time window. |
update_schedule | Change an existing schedule (playlist, target, time window, priority, enabled). |
delete_schedule | Delete a schedule. |
create_group | Create a screen group, optionally with an initial set of screens. |
rename_screen | Rename a screen. |
update_brand_kit | Update the org's brand kit (logo, colors, font, tone). |
set_overlay | Assign a logo/ticker overlay to a screen or as the org-wide default. |
set_group_overlay | Assign a logo/ticker overlay to a whole screen group, or clear it. |
add_media_to_playlists | Append media items to the end of several playlists at once. |
generate_image | Generate an image from a text prompt and stage saving it to the media library. |
generate_slide | Compose a slide from a brief: pick a template, write the copy, place an image. |
generate_snippet | Write a small self-contained HTML snippet (countdown, ticker, QR block, …). |
update_template_fields | Change field values on an existing template slide (e.g. update a price) — no regeneration. |
Notes
- Tenancy and role checks are identical to the CMS: a key always resolves to one organization, and a viewer-role key can read but never write.
- SeenCast's built-in assistant (chat/voice in the CMS, and the Slack bot) uses this same tool registry — MCP is another door into the same system, not a separate one.
- Today this is a personal, invite-only integration for power users — not a listed connector. If you'd like to use it, ask in-app or email [email protected].