Skip to main content
Glama

Send HTML

send_html
Destructive

Shows HTML content on a display: menus, dashboards, welcome pages, schedules or any custom design. slot 'live' (default) replaces the current content; slot 'idle' stores the default/fallback content shown when nothing live is active (idle requires admin scope). Always pass a short description so later content reads stay meaningful. Exactly one of html or base64_html. For external web pages use send_url; to edit current content call read_display_html first. For polished results load prompt render_premium_display_html or resource agentview://public/design-system. Requires content scope.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
htmlNoComplete HTML document to render. Mutually exclusive with base64_html.
slotNoTarget slot: 'live' (default) replaces current content; 'idle' sets the default shown when idle (admin scope).
tokenNoDisplay-specific demo/preview token for unauthenticated access. NOT the OAuth token.
durationNoSeconds the content stays; 0 = indefinite (default). Live slot only.
display_idYes8-character display profile ID, e.g. 'ABCD1234'.
base64_htmlNoBase64-encoded HTML (standard base64). Use only when raw HTML cannot survive JSON transport. Mutually exclusive with html.
descriptionYesShort human-readable summary of the content, e.g. 'Weekly KPI dashboard'.
access_tokenNoOptional bearer token; prefer session_request_id. Distinct from the display-specific 'token'.
session_request_idNoSession handle from create_auth_session; pass it on every authenticated call.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNo
nameNo
idleFileNo
idleVersionNo
idleContentClearedNo

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description discloses exactly what gets affected: the 'live' slot replaces current content, while 'idle' stores fallback content. It also reveals authentication requirements ('idle requires admin scope', 'Requires content scope') and explains why a description parameter matters ('so later content reads stay meaningful'). This adds meaningful behavioral context beyond the structured annotations.

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?

The description is dense but front-loaded with the core purpose. Every sentence contributes something important—slot semantics, mutual exclusivity, alternatives, scope, and design resources. It is slightly longer than strictly necessary, but the information is well-ordered and free of filler.

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 tool with 9 parameters and an output schema, the description covers the critical operational context: slot behavior, encoding constraint, required description, scope requirements, and alternatives. It doesn't need to explain return values because the output schema exists, and it doesn't omit any information an agent needs to call the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the parameters are already well-documented. The description still adds value by emphasizing the mutual exclusivity between html and base64_html, and by instructing the agent to always provide a short description. It does not repeat every schema detail, but the added cross-parameter guidance lifts it above the baseline.

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?

The description names a specific action ('Shows HTML content on a display') and identifies the resource (a display) with concrete use cases (menus, dashboards, schedules). It further distinguishes itself by naming alternatives: 'For external web pages use send_url; to edit current content call read_display_html first.' This makes the tool's purpose unmistakable and separates it from related siblings.

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?

The description gives explicit when-to-use guidance: it tells the agent to use send_url for external pages and read_display_html before editing current content. It also states hard usage rules like 'Exactly one of html or base64_html', 'Always pass a short description', and the admin-scope requirement for the idle slot. This is clearly actionable guidance for selecting and invoking the tool.

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.

TDQS

A4/5.0
Disambiguation4/5

Most tools map cleanly to distinct resource-action pairs (displays, organizations, assets, data slots, store templates, auth). A few clusters like the get_store_template_* family and the auth/session tools could still confuse an agent, but their descriptions are explicit enough to separate them.

Naming Consistency4/5

The dominant pattern is consistent verb_noun snake_case (list_*, get_*, create_*, delete_*, send_*, set_*, manage_*). Deviations like fetch, search, authenticate, logout, and pair_by_code are understandable but break the otherwise uniform naming scheme.

Tool Count1/5

With 57 tools this server far exceeds the 50+ threshold, creating an extreme tool-set size for an MCP server. Even though the underlying platform is feature-rich, the sheer number of tools heavily taxes context and selection.

Completeness4/5

The surface covers display, organization, asset, data slot, store template, auth, API key, and licensing lifecycles in impressive depth. Minor gaps exist, such as no delete operation for display categories and no reboot/power control for displays.

Resources