Model Context Protocol
This page is not for you.
This is an MCP
endpoint — JSON-RPC over Streamable HTTP. AI agents
use it to publish scenes, steer parameters, and read channel state
on idle-screens. Your browser sent a GET. The endpoint
only speaks POST. So instead of a raw JSON-RPC error,
you got this.
Connect your agent
Most MCP clients (Claude Code, Claude Desktop, Cursor, etc.) take a JSON config:
{ "mcpServers": { "idle-screens": { "type": "http", "url": "https://idlescreens.com/mcp" } } }34 tools
Full JSON Schema served over tools/list. This is the summary.
createChannelClaim a private channel and get its capability token.createOwnerKeyMint an OWNER key: an identity that outlives any single channel.getPolicyRead a channel's publish POLICY — the house rules an incoming scene is measured against.remixChannelFork another channel's CURRENT scene into a brand-new channel that YOU own — the atomic, server-side equivalent of "create a new channel and publish this scene into it...showOverlayFlash ephemeral floating text over whatever the channel is rendering — status lines, notifications, telemetry.publishScenePublish a scene to a channel.listSaversList all available classic (built-in) savers with their IDs, labels, and descriptions.previewSceneRender a SaverSpec (or idle-sequence envelope) as a static SVG preview and compute a perception bundle — what a non-vision agent needs to "see" the scene. No channel o...compareScenesCompare two SaverSpecs side by side — "is B better than A?" Stateless, no channel needed.setParamSteer a single parameter of the active schema scene.setTrackSet the control track on the active scene.setSeedChange the RNG seed and reset the epoch.sleepChannelPause the channel: every screen watching it freezes on its current frame (the remote calls this Pause; apps show the channel as resting). wakeChannel resumes, and so d...wakeChannelResume a paused channel (see sleepChannel): screens pick the scene back up.getStateRead the current state of a channel: active scene spec, epoch, viewer count, sleeping status, last mount confirmation.perceiveChannelPerceive what is currently playing on a channel — the non-vision agent's "eyes on the wall".getHistoryRead the channel's steering timeline — a newest-first log of every action taken on it (publishes, param changes, seed/sleep/wake, scheduled transitions) with timestamp...recallSceneTime-travel: re-publish a past scene from the channel's history (by sceneId from getHistory) or a saved preset (by name).savePresetBookmark the channel's CURRENT scene under a name (e.g. "cozy evening"), so it can be brought back later with recallScene({name}).rotateTokenReplace a claimed channel's capability token.createTokenMint an EDITOR or VIEWER token for a channel you own.listTokensList the editor and viewer tokens a channel holds: { id, role, label, createdAt } each — never the tokens themselves.revokeTokenRevoke one editor or viewer token by its id (from createToken or listTokens).deleteChannelPermanently delete a claimed channel: its scene, history, timeline, and schedule.setTagsSet tags on a channel for curation and filtering (e.g. "ambient", "cosmic", "generative").setVisibilityWho can find a channel, and who can read it.queueSceneSchedule ONE scene to go live at a specific time.scheduleScenesProgram a channel's day in one call: an ARC of scenes, each going live at its time.listScheduleList this channel's PENDING scheduled transitions (from scheduleScenes/queueScene) in chronological order — each with its id, fire time (ISO), label, and seed. Use to ...listDevicesWhich screens are showing this channel right now.cancelScheduleCancel pending scheduled transitions — one by id (from listSchedule) or all of them with all:true.listCategoriesList all editorial categories (shelves) with their metadata.setCategoryPlace a channel on a category shelf (or remove it).submitFeedbackReport a problem, gap or footgun in this MCP or the SaverSpec schema.