Skip to main content
Glama

Assign content to screens

set_screen_content
DestructiveIdempotent

Set what screens play by default until it is changed again.

When to use:

  • Putting a playlist, schedule, app, media file or creative on one screen, a list, or every screen under a location.

When NOT to use:

  • A takeover that ends by itself: use start_takeover.

  • Changing what a playlist contains: use update_items (every screen playing it follows).

What to know:

  • Screens update within seconds. In a bulk call, screens the content is not shared to or whose location needs approval for it are skipped and counted (notShared, needsApproval); the rest change. Needs screen.cast.

Parameters:

  • screenId, screenIds and nodeId (every screen at and under it, up to 1000): give at least one; they combine into one set.

  • contentKind: playlist, schedule, app, media or creative. null clears what plays and needs exactly one screen and no nodeId.

  • contentId: the playlist, schedule, app, media or creative id from list_items; omit only with contentKind null.

  • Example: {nodeId:"on_ca", contentKind:"playlist", contentId:"pl_spring"}.

Input Schema

NameRequiredDescriptionDefault
nodeIdNoLocation id.
screenIdNoScreen id.
contentIdNoContent id.
screenIdsNoScreen ids.
contentKindYesContent kind.

Output Schema

NameRequiredDescriptionDefault
dataNoSingle-screen call: the screen as it is now.
changedNoScreen ids whose content changed.
notSharedNoScreens skipped because the content is not shared to their location.
needsApprovalNoScreens skipped because their location needs approval for this content.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / contentKind / enum
      Previous value: -[
      -  "playlist",
      -  "schedule",
      -  "app",
      -  "media",
      -  null
      -]New value: +[
      +  "playlist",
      +  "schedule",
      +  "app",
      +  "media",
      +  "creative",
      +  null
      +]
  2. Changed5 schema fields changed
    • changedInput schema / properties / contentId / description
      Previous value: -"The playlist, schedule, app or media id (list_items). Omit only with contentKind null."New value: +"Content id."
    • changedInput schema / properties / contentKind / description
      Previous value: -"Kind of content contentId names; null clears what one screen plays."New value: +"Content kind."
    • changedInput schema / properties / nodeId / description
      Previous value: -"Every screen at and under this location (list_items kind locations), max 1000."New value: +"Location id."
    • changedInput schema / properties / screenId / description
      Previous value: -"One screen id, from list_items kind screens."New value: +"Screen id."
    • changedInput schema / properties / screenIds / description
      Previous value: -"Many screens, max 200."New value: +"Screen ids."
  3. Added

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint/idempotentHint/openWorldHint annotations, the description discloses the permission required (screen.cast), the propagation latency ('screens update within seconds'), and partial-failure semantics: unsupported or approval-gated screens are skipped and counted via notShared/needsApproval while the rest still change. That skip-and-count behavior is exactly the kind of outcome an agent cannot infer from destructiveHint=true alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (When to use / When NOT to use / What to know / Parameters) front-load the routing decision, and the worked example is compact. It is dense and slightly long, with the parameter block partly restating schema field names, but almost every line carries non-redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent bulk-mutation tool, the description covers selection semantics, clearing behavior, bulk partial-failure outcomes, auth requirements, and latency. Return values are covered by the existing output schema, so nothing an agent needs in order to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description adds real meaning: screenId/screenIds/nodeId combine into a single union set with at least one required, nodeId expands to every screen at and under it up to 1000, contentKind null clears playback and is only legal with exactly one screen and no nodeId, and contentId originates from list_items. A concrete example call reinforces the combination rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with its scope: 'Set what screens play by default until it is changed again.' The persistence clause immediately separates it from a temporary takeover, and the when-to-use line enumerates the target shapes (one screen, a list, a location subtree).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-NOT-to-use sections name the two decisive alternatives: start_takeover for self-terminating takeovers and update_items for changing playlist contents. Each alternative comes with the condition that selects it, and the parallel hint ('every screen playing it follows') explains the consequence of picking wrong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources