Skip to main content
Glama

Server Details

Display delivery platform for AI agents. Push HTML, dashboards and live data to screens.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 74 of 74 tools scored. Lowest: 3.4/5.

Server CoherenceA
Disambiguation3/5

Many tools have overlapping purposes (e.g., multiple ways to create displays and send content), and the sheer number of tools increases risk of misselection despite detailed descriptions.

Naming Consistency4/5

Most tools follow a verb_noun pattern, with a few exceptions like 'pair_by_code' and 'send_store_template_to_display'. Overall consistent and readable.

Tool Count2/5

74 tools is excessive for most servers. While covering a broad domain, the count makes navigation difficult and suggests insufficient granularity.

Completeness5/5

The tool set covers the full lifecycle for displays, organizations, data slots, assets, licenses, authentication, and store templates with no obvious gaps.

Available Tools

79 tools
allocate_licensesAllocate LicensesA
DestructiveIdempotent
Inspect

Allocates premium display licenses from the authenticated user's Premium plan to an organization. Premium users have a pool of allocatable licenses (base + purchased extras) that can be distributed across organizations. Requires admin scope and a Premium plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID to allocate licenses to. Obtain this from list_organizations.
licensesYesNumber of premium display licenses to allocate to this organization. Set to 0 to deallocate all licenses from this org.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
orgIdNo
allocatedToOrgNo
personalDisplayLimitNo
freeAllocatableLicensesNo
totalAllocatableLicensesNo
Behavior4/5

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

The description adds behavioral context beyond annotations: it explains the concept of a license pool, that licenses can be deallocated (set to 0), and requires admin scope. Annotations indicate destructiveHint=true, which aligns. No contradictions.

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

Conciseness5/5

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

Three sentences, front-loaded with the main action, each sentence adds value without redundancy. No fluff.

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

Completeness4/5

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

The description covers the tool's purpose, prerequisites, and the concept of license pool. No output schema exists, so return values are not expected. It is sufficiently complete for a mutation tool with good annotations.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all parameters. The description does not add extra meaning beyond the schema; it repeats the concept of deallocation already in the licenses parameter description. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (allocate licenses from Premium plan to organization) and resource (premium display licenses). However, it does not explicitly differentiate from the sibling tool 'assign_license', which may cause confusion.

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

Usage Guidelines3/5

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

The description provides context on when to use (requires admin scope and Premium plan) but lacks guidance on when not to use or alternatives like 'assign_license'. The prerequisites are clear.

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

assign_licenseAssign LicenseA
DestructiveIdempotent
Inspect

Assigns a premium license token to a display, removing its watermark and making it ad-free. The user must have unassigned premium licenses available. Each license also adds +30 MB to the display's context storage pool (personal or group). Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to assign a license to, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
badgeModeNo
freeLicensesNo
isPremiumAssignedNo
Behavior5/5

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

The description discloses behavioral traits beyond annotations: it removes watermark, makes ad-free, adds 30 MB storage, requires admin scope, and lists return fields. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is three sentences, each serving a purpose: main action, differentiation, and additional details. It is front-loaded with the core function and is concise without unnecessary words.

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

Completeness4/5

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

Given the tool has 2 parameters and no output schema, the description adequately covers what the tool does, side effects, prerequisites, and return fields. However, it could mention the response structure more explicitly, though the listed fields are sufficient for an agent to invoke 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 baseline is 3. The description adds value by explaining that the license assignment process differs for personal vs organization displays and that access_token is optional, though it does not elaborate on the access_token parameter itself.

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 clearly states the verb 'assigns' and the resource 'premium license' to a display, distinguishing it from siblings like unassign_license and allocate_licenses. It specifies the effects (removes watermark, ad-free) and differentiates between personal and organization displays.

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

Usage Guidelines4/5

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

The description provides context on when to use (assign license) and mentions the prerequisite allocate_licenses for organization displays. It implicitly guides against using for personal displays if no free pool, but does not explicitly state when not to use or list alternatives beyond the sibling allocate_licenses.

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

authenticateAuthenticate SessionA
Idempotent
Inspect

Validates a JWT agent token and caches the resulting identity on the current MCP session so that subsequent protected tool calls succeed without resending the token. Use this only if your client cannot reliably send an Authorization: Bearer header on every request; modern streamable HTTP clients should send the header instead. Do not call this if the session was already auto-authenticated by get_auth_session. Returns authenticated (boolean), sessionBound (whether the identity was cached on this session), userId, name, email, scope and expiresAt (ISO 8601).

ParametersJSON Schema
NameRequiredDescriptionDefault
jwtNoAlias for token. Use this if your wrapper cannot send the 'token' field reliably.
tokenNoThe raw JWT token string returned by get_auth_session or an OAuth access token. Pass the opaque token exactly as received — do not add a 'Bearer ' prefix and do not expand or decode the JWT claims.
access_tokenNoAlias for token. Use this if your wrapper follows OAuth naming conventions.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
emailNo
scopeNo
userIdNo
isAgentNo
expiresAtNo
sessionBoundNo
authenticatedNo
transportAuthRequiredNo
Behavior5/5

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

Describes side effect of caching identity on the MCP session, returns list of fields including 'sessionBound', and is consistent with annotations (readOnlyHint=true, destructiveHint=false). Adds context beyond annotations.

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

Conciseness5/5

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

Three sentences, no wasted words, front-loaded with purpose, then usage guidelines, then return fields. Every sentence adds value.

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?

Complete for a simple tool: covers purpose, usage context, behavioral side effects, parameter hint, and return fields. No missing information given schema, annotations, and context signals.

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?

Adds critical guidance beyond schema: 'do not add Bearer prefix, do not expand or decode the JWT claims'. Schema coverage is 100% but description still provides essential usage details.

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?

Clearly states the tool validates a JWT token and caches the identity, using specific verb 'validates' and resource 'JWT agent token'. Distinguishes from siblings like get_auth_session and logout by mentioning auto-authentication.

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?

Explicitly states when to use (if client cannot reliably send Authorization header) and when not to use (if already auto-authenticated by get_auth_session, or if modern streamable HTTP client can send header).

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

broadcast_contentBroadcast ContentA
Destructive
Inspect

Sends HTML content to multiple displays at once. Provide display_ids to target specific displays or set all to true to target all accessible displays. Locked displays are skipped. Returns sent and skipped lists with reasons. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoSet to true to target all accessible displays.
htmlNoComplete HTML document to render. Mutually exclusive with base64_html.
durationNoHow long content stays in seconds. 0 = indefinite.
base64_htmlNoBase64-encoded HTML string. Mutually exclusive with html.
descriptionYesShort description of the content being sent.
display_idsNoArray of display profile IDs to target. Provide this or set all to true.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID.
content_descriptionNoOptional semantic description of the content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sentNo
skippedNo
durationNo
fileNameNo
sentCountNo
skippedCountNo
Behavior4/5

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

The description adds behavioral context beyond annotations: it mentions that locked displays are skipped, the tool returns sent and skipped lists with reasons, and requires content_only scope. This complements the destructiveHint=true annotation.

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 concise (3 sentences) and front-loaded with the main purpose. Each sentence adds useful information, though it could be more structured with bullet points for readability.

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

Completeness4/5

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

The description covers targeting options, skipped displays, return structure, and required scope. While there are 9 parameters, the explanation sufficiently guides the agent on core usage. Missing explicit handling of conflicting parameters (both display_ids and all).

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

Parameters3/5

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

With 100% schema coverage, parameters are already well-documented. The description adds limited value by clarifying mutual exclusivity between display_ids and all, but does not detail individual parameter semantics beyond what the schema provides.

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 clearly states 'Sends HTML content to multiple displays at once', using a specific verb and resource. It distinguishes from siblings like send_html (single display) and broadcast_to_categories (category-based) by focusing on targeting by display_ids or all displays.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to target specific displays via display_ids or all accessible displays via the 'all' flag. It also notes that locked displays are skipped and requires content_only scope, providing clear context for usage.

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

broadcast_to_categoriesBroadcast to CategoriesA
Destructive
Inspect

Sends HTML content to every display assigned to one of the selected category IDs. Set include_descendants=true to include subcategories. Set dry_run=true to preview matched profile IDs without sending. Requires display.send capability. Locked displays are skipped with reason='locked'.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoHTML body. Required unless dry_run=true.
dry_runNoWhen true, returns matched profile list without sending.
descriptionNoOptional human-readable description (<=1000 chars).
access_tokenNo
session_request_idNo
include_descendantsNoWhen true, include displays assigned to subcategories of the selected categories.
include_category_idsYesCategory IDs to include.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sentNo
dryRunNo
matchedNo
resultsNo
skippedNo
Behavior4/5

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

Discloses preview behavior via dry_run and subcategory inclusion, adding value beyond annotations. However, it does not mention potential side effects like overwriting existing content on displays.

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

Conciseness5/5

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

Two concise sentences that front-load the main purpose and immediately clarify key optional parameters. No unnecessary words.

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

Completeness4/5

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

Well-suited for a broadcast tool with no output schema; mentions dry_run returns matched profiles. Lacks details on limits or error handling, but adequate given the tool's simplicity.

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 covers all parameters with descriptions; the description adds meaningful context for html, dry_run, and include_descendants, linking them to the tool's primary action.

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?

Clearly states 'Sends HTML content to every display assigned to one of the selected category IDs', providing a specific verb and resource. Distinguishes from sibling broadcast tools (e.g., broadcast_content) by focusing on category-based targeting.

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

Usage Guidelines4/5

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

Explains key options like include_descendants and dry_run, but does not explicitly contrast with sibling tools for when to use this vs. others. Context is clear but lacks exclusionary guidance.

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

bulk_assign_display_categoryBulk Assign Display CategoryB
DestructiveIdempotent
Inspect

Bulk adds or removes one category across multiple displays the caller can manage. Operations are owner-scoped: add/remove only touches the caller's assignment rows and does not mutate other managers' categories. Returns a per-display result list with success/error status.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesOperation mode. Must be 'add' or 'remove'.
category_idYesCategory ID to add or remove.
display_idsYesArray of display profile IDs to mutate.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
resultsNo
categoryIdNo
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, which the description aligns with. It adds the context of bulk operation across multiple displays, but lacks details on partial failures, error handling, or returned results beyond what annotations provide.

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

Conciseness5/5

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

The description is a single sentence of 14 words, efficiently conveying the core action without redundancy. It is front-loaded with the key verb and resource.

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

Completeness2/5

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

The tool is destructive with no output schema, yet the description omits return value details, error handling, partial failure behavior, and authentication requirements. Given the complexity (5 params, no output schema), this is incomplete.

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

Parameters3/5

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

The input schema covers all 5 parameters with full descriptions (100% coverage). The description adds no additional meaning beyond the schema's parameter docs, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it 'bulk adds or removes one category across multiple displays', specifying the verb and resource. However, it does not explicitly differentiate from sibling tools like set_display_categories_for_display, though 'bulk' implies multiple displays.

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

Usage Guidelines3/5

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

The description mentions 'the caller can manage', implying permission requirements, but provides no explicit guidance on when to use this tool vs alternatives (e.g., set_display_categories_for_display). No exclusion conditions or prerequisites are given.

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

claim_displayClaim DisplayAInspect

Converts an unclaimed guest or pending display into a managed personal display owned by the authenticated user. This permanently transfers ownership and counts against the user's display quota. Use this only when the user explicitly wants to adopt an existing hardware or demo display that is already running. For first-time physical setup, prefer pair_by_code instead. Requires admin scope. Returns profileId (the new managed display ID) and name.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe short ID of the pending, guest or demo display to claim. This is the hardware or temporary ID shown on the device.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.
profile_nameYesFriendly name to assign to the newly claimed display. Non-empty string. Example: 'Reception Kiosk'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
profileIdNo
Behavior4/5

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

Description discloses permanent ownership transfer and quota impact, adding behavioral context beyond annotations. Annotations have destructiveHint=false, which is consistent since the tool transfers ownership rather than destroying data.

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

Conciseness5/5

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

Four sentences, each serving a purpose: main action, consequences, usage guidance, and return info. No redundant phrases, front-loaded with key purpose.

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?

Covers all essential aspects: what it does, when to use (vs alternative), prerequisites (admin scope), parameter details, and what it returns. No output schema, but description adequately explains return values.

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%, but description adds context like 'short ID of the pending, guest or demo display' and 'friendly name'. Also specifies return value (profileId and name), which is not in input schema.

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?

Description clearly states the tool converts unclaimed/guest/pending displays into managed personal displays, with specific verb and resource. Distinguishes from sibling pair_by_code by noting it's for adopting existing displays, not first-time setup.

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?

Explicitly states when to use ('when user explicitly wants to adopt an existing display') and when not to use ('for first-time physical setup, prefer pair_by_code'). Also mentions required admin scope.

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

clear_displayClear DisplayA
DestructiveIdempotent
Inspect

Removes the current live content from a display and returns it to its idle/default state. Viewers will immediately see the change. Use this when the user wants to blank or reset a display. This does not delete the display itself — use delete_display for that. Requires authentication with at least content_only scope. Returns id and status ('cleared').

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to clear, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
Behavior4/5

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

Annotations already indicate destructive hint and idempotency. The description adds value by explaining immediate viewer impact, auth scope requirement, and return format. No contradiction with annotations.

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

Conciseness5/5

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

Three efficient sentences with no waste. First sentence states primary action, subsequent sentences add necessary context. Perfectly front-loaded.

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?

Despite no output schema, description specifies return fields. Covers auth, scope, behavior, and sideline sibling differentiation. Complete for a simple clear operation.

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 covers 100% of parameters with descriptions. The description adds practical context for access_token (e.g., where to pass token), enhancing agent understanding beyond raw schema.

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 clearly states the tool removes live content and returns display to idle state, using specific verb-resource pairing. It explicitly distinguishes from delete_display, ensuring unambiguous purpose.

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?

Explicitly states when to use (blank/reset) and when not (use delete_display for deletion). Also mentions required authentication scope, providing clear usage direction.

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

configure_displayConfigure DisplayA
DestructiveIdempotent
Inspect

Updates hardware permission and UI settings for a display. Use this when the user wants to enable or disable camera, microphone or geolocation access, set the preferred display language, toggle the mouse cursor or badge overlay visibility, or change the watermark position. All parameters except display_id are optional — only provided settings are changed. If the display is online, changes are pushed immediately via SignalR. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
allow_cameraNoAllow embedded content to request camera access. Default is false.
allow_microphoneNoAllow embedded content to request microphone access. Default is false.
allow_geolocationNoAllow embedded content to request geolocation access. Default is false.
show_mouse_cursorNoShow a visible mouse cursor on the display surface. Default is true.
preferred_languageNoPreferred language for the display shell. Omit to leave unchanged.
show_badge_overlayNoShow the AI connect badge overlay on the display. Default is true.
watermark_positionNoPosition of the badge watermark on the display.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
allowCameraNo
allowMicrophoneNo
changedSettingsNo
showMouseCursorNo
allowGeolocationNo
showBadgeOverlayNo
effectiveLanguageNo
preferredLanguageNo
watermarkPositionNo
appliedToLiveDisplayNo
Behavior4/5

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

Annotations already indicate destructive and idempotent traits. The description adds that changes are pushed immediately if the display is online and that admin scope is required. This goes beyond annotations without contradiction.

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

Conciseness5/5

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

The description is three sentences, each serving a purpose: first defines action, second gives examples, third notes optionality and behavior. Front-loaded and efficient with no wasted words.

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

Completeness4/5

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

Given 12 parameters and no output schema, the description covers usage, scope, and behavioral nuance (immediate push if online). It does not specify behavior when offline, which is a minor gap, but overall sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so parameter descriptions are already complete. The description only summarizes categories but adds no new detail beyond what the schema provides, earning a baseline of 3.

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 clearly states the tool updates hardware permissions, UI settings, and connectivity overrides for a display, listing specific capabilities (camera, microphone, geolocation, cursor, badge, watermark, connectivity). This distinguishes it from sibling tools like lock_display or clear_display.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance by enumerating use cases (enable/disable access, toggle overlays, set connectivity). It also notes optionality and the admin scope requirement. No explicit when-not-to-use, but the context is clear enough.

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

create_api_keyCreate API KeyAInspect

Creates a long-lived API key for server-to-server integration without OAuth. The raw key is returned only once — store it securely. The user must explicitly consent to creating the key. Requires admin scope. Supports granular scoping: restrict the key to specific data-slot slugs, specific display IDs, a read/write permission flag, and/or fine-grained capability flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable name for the key. Example: 'Home Assistant', 'CI Pipeline'.
scopeNoScope for the key: 'content_only' (send content, list displays) or 'admin' (full management).content_only
org_idNoOptional organization ID. If set, the key acts on behalf of this organization.
permissionsNoGranular permission flag: 'read', 'write', or 'read_write' (default). Applied on top of 'scope' — e.g. a content_only read-only key cannot PUT data slots. Matched against HTTP verb: GET requires read, PUT/POST/PATCH/DELETE require write.read_write
access_tokenNoOptional JWT access token for authentication.
capabilitiesNoOptional JSON array of fine-grained capability flags this key may exercise. Allowed values: 'slot.read' (list/get slots), 'slot.write' (put/delete slots), 'display.read' (list/get displays, read content), 'display.send' (send_html/send_url/broadcast/clear/set_idle), 'display.manage' (rename/delete/lock/configure/license/pair/claim/create). Omit or pass [] for no capability restriction. Capabilities narrow — never expand — the key's rights; they combine with scope, permissions, and resource whitelists.
expires_in_daysNoOptional expiration in days. If not set, the key never expires.
allowed_slot_slugsNoOptional JSON array of data-slot slugs this key may touch (max 64). When set, every data-slot request must target one of these slugs. Omit or pass [] for no slug restriction. Example: ['sensor-lobby', 'sensor-garage'].
allowed_display_idsNoOptional JSON array of display profile IDs this key may touch (max 64). When set, every display request must target one of these IDs. Omit or pass [] for no display restriction. Example: ['ABCD1234','EFGH5678'].

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
nameNo
keyIdNo
orgIdNo
scopeNo
warningNo
createdAtNo
expiresAtNo
permissionsNo
capabilitiesNo
allowedSlotSlugsNo
allowedDisplayIdsNo
Behavior4/5

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

The description adds important behavioral details beyond annotations: the key is returned only once (store securely), requires explicit user consent, and has granular scoping. Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description correctly confirms a mutation operation. It could be further enhanced by mentioning potential side effects or rate limits, but the provided info is valuable.

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

Conciseness5/5

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

The description is compact (5 sentences) and well-structured: it begins with the core purpose, follows with security warnings and prerequisites (admin scope, consent), then outlines scoping capabilities, and ends with the return value. Every sentence adds essential information without redundancy.

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

Completeness4/5

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

The description covers the tool's purpose, security implications, requirements, scoping options, and return values. With no output schema, listing the returned fields is particularly valuable. However, it omits an explanation of how the 'permissions' parameter interacts with 'scope' and 'capabilities' (though the schema describes these). The description is largely complete for a complex tool with 9 parameters.

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% with each parameter described. The description adds a high-level summary of the granular scoping options (slugs, display IDs, permissions, capabilities) and lists the return fields, which is helpful since there is no output schema. This synthesis aids understanding beyond the individual parameter descriptions.

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 explicitly states it creates a long-lived API key for server-to-server integration without OAuth. This clearly differentiates it from sibling tools like list_api_keys (listing) and revoke_api_key (revocation). The verb 'creates' is specific and the resource 'API key' is unambiguous.

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

Usage Guidelines4/5

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

The description mentions the tool is for server-to-server integration without OAuth and requires admin scope, providing context for when to use it. However, it does not explicitly contrast with alternatives like OAuth-based authentication or short-lived tokens, nor does it mention when not to use it or point to sibling tools for related operations (e.g., list_api_keys to view existing keys).

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

create_auth_sessionCreate Auth SessionAInspect

Creates a browser-based login session and returns a loginUrl the user must open to authenticate. Use this as the first step when your client cannot complete OAuth 2.1 with PKCE itself. Do not use this if you already have a valid Bearer token. Returns sessionRequestId (needed for get_auth_session), loginUrl, pollUrl and expiresIn (seconds until the login window closes, default 600). After calling this, instruct the user to open the loginUrl, then poll get_auth_session until status becomes active.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoRequested access scope. Must be either 'content_only' (read and send content to displays) or 'admin' (content_only plus create/delete/rename displays). Defaults to 'content_only'.
agent_identifierNoOptional display name of the MCP client or agent, shown to the user in the browser consent screen. Example: 'ChatGPT' or 'my-home-automation'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
pollUrlNo
loginUrlNo
expiresInNo
requestedScopeNo
sessionRequestIdNo
Behavior5/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, which the description complements by explaining that the tool returns a sessionRequestId, loginUrl, pollUrl, and expiresIn, and that the login window closes after 600 seconds. There is no contradiction with annotations, and the description adds significant behavioral context beyond structured fields.

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

Conciseness5/5

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

Two sentences, front-loaded with key purpose and action. Every sentence adds value: first sentence defines what the tool does and returns, second provides usage guidance and next steps. No wasted words.

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?

Given there is no output schema, the description completely covers expected return fields (sessionRequestId, loginUrl, pollUrl, expiresIn) and workflow steps. It also mentions the default timeout and the need to poll get_auth_session, making it self-sufficient for the agent to use correctly.

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

Parameters3/5

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

Input schema has 2 parameters with 100% description coverage, so baseline is 3. The description does not add additional meaning beyond what the schema already provides; it only mentions scope defaults and agent_identifier purpose, which are already in the schema.

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 clearly states it creates a browser-based login session and returns a loginUrl for authentication. It uses specific verbs ('creates', 'returns') and identifies the resource ('auth session'). Given the sibling tool 'authenticate' and 'get_auth_session', this description distinguishes the tool as the first step in an OAuth flow.

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 explicitly states when to use ('when your client cannot complete OAuth 2.1 with PKCE itself') and when not to use ('Do not use this if you already have a valid Bearer token'). It also provides actionable next steps: instruct user to open loginUrl, then poll get_auth_session until status becomes active.

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

create_displayCreate DisplayAInspect

Creates a personal display WITHOUT pairing it to physical hardware. The display starts offline and uncoupled. For physical screens, ALWAYS prefer pair_by_code instead — it creates and pairs in one step. Use create_display only when: (a) the user explicitly wants to pre-provision a display before the screen is available, or (b) the user needs a virtual/headless display for API-only content delivery. Do not call this just to check capacity — use get_account to inspect remainingDisplays first. Requires admin scope; list_displays and send_html only need content_only. Returns id, name, setupUrl, managedUrl, pairingUrl, pairingExpiresAt, approvalUrl and status. To share what the display is currently showing, mint a short-lived signed link via get_display_preview_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional friendly name for the new display. If omitted, a default name is assigned. Example: 'Lobby Screen'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
statusNo
setupUrlNo
managedUrlNo
pairingUrlNo
approvalUrlNo
pairingExpiresAtNo
Behavior5/5

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

The description adds significant context beyond annotations: display starts offline and uncoupled, not normal setup flow. Returns a pre-provisioned offline profile with specific fields. No contradictions with annotations (readOnlyHint false, destructiveHint false).

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 longer but well-structured: core purpose first, then warnings, usage guidelines, and return info. Every sentence adds value, though minor redundancy exists (e.g., multiple ways to describe what not to do). Still efficient.

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?

Given the tool's complexity and the richness of schema/annotations, the description is complete. It covers purpose, usage restrictions, return fields, and scope requirements. No gaps for an AI to misinterpret.

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

Parameters3/5

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

Schema coverage is 100% and each parameter already has a description. The tool description does not add new semantic info about parameters beyond what the schema provides, meeting 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 clearly states the specific action: creating a personal display without pairing to hardware. It distinguishes this tool from siblings like pair_by_code (physical onboarding) and get_account (capacity checks). The verb 'creates' is specific.

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?

Explicitly tells when to use (pre-provisioning, virtual/headless) and when NOT to use (ambiguous requests, physical setup). Provides clear alternatives: pair_by_code for hardware and get_account for capacity checks. Also mentions required admin scope.

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

create_display_categoryCreate Display CategoryAInspect

Creates a personal display category. Pass parent_category_id to create a subcategory under an existing category. Categories use stable IDs; renaming a category keeps assignments and grants intact. Requires display.manage capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable category name, e.g. 'Reception' or 'Meeting room'.
access_tokenNoOptional JWT access token for authentication.
parent_category_idNoOptional parent category ID for creating a subcategory.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
pathNo
colorNo
countNo
categoryIdNo
parentCategoryIdNo
Behavior3/5

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

Annotations indicate readOnlyHint=false (write operation) and destructiveHint=false. Description adds 'creates' but does not elaborate on behavior like whether duplicate names are allowed, if there are limits, or what the response contains. No contradiction with annotations.

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

Conciseness5/5

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

Description is two sentences, no redundant words, front-loaded with the core action. Every sentence adds value.

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

Completeness4/5

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

For a simple creation tool with no output schema and basic annotations, the description covers the essential purpose and key variant. It could mention that it returns the created category, but given the context signals, it is sufficiently complete.

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

Parameters3/5

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

Schema covers all 4 parameters with 100% description coverage. Description adds context for parent_category_id (subcategory) and 'personal' scope but does not enrich access_token or session_request_id beyond schema. Baseline 3 is appropriate.

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?

Description clearly states it creates a personal display category and specifies how to create a subcategory via parent_category_id. This distinguishes it from siblings like rename_display_category and list_display_categories.

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

Usage Guidelines3/5

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

Description gives one usage hint (pass parent_category_id for subcategory) but lacks explicit guidance on when to use this tool versus alternatives like allocate_licenses or assign_license. No when-not-to-use conditions are provided.

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

create_organizationCreate OrganizationAInspect

Creates a new organization and makes the authenticated user the owner. Use this when the user wants to set up a shared display fleet. Returns orgId, name, slug, type and yourRole. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFriendly name for the organization. Example: 'Marketing Team'.
typeNoOrganization type. Defaults to 'organization' if omitted.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
slugNo
typeNo
orgIdNo
yourRoleNo
Behavior4/5

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

Annotations already indicate non-read-only and non-destructive. The description adds that the user becomes owner, requires admin scope, and returns specific fields. This supplements the annotations well.

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

Conciseness5/5

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

The description is concise (three sentences) and front-loaded with the main action. No redundant phrases; every sentence adds value.

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

Completeness4/5

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

Given no output schema, the description covers return values and permission requirements. It lacks error scenarios but is sufficient for the tool's complexity. Sibling context is provided through the usage hint.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. The description does not add additional details about parameters, but it does mention return values. Baseline 3 is appropriate since schema carries the burden.

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 clearly states what the tool does: 'Creates a new organization and makes the authenticated user the owner.' It also provides a specific use case ('when the user wants to set up a shared display fleet'), which helps distinguish it from siblings like delete_organization or rename_organization.

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

Usage Guidelines4/5

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

The description tells when to use the tool ('when the user wants to set up a shared display fleet') and mentions a prerequisite ('Requires admin scope'). It could be more explicit about alternatives, but the context is clear.

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

create_org_displayCreate Organization DisplayAInspect

Creates a new display directly within an organization WITHOUT pairing it to physical hardware. The display starts offline and uncoupled. For physical screens, ALWAYS prefer pair_by_code instead — it creates and pairs in one step. Use create_org_display only for administrative pre-provisioning when the screen is not yet available. The display is owned by the organization, not by a personal user. Requires admin scope and manager or higher role in the organization. The organization must have available licenses (use allocate_licenses first if needed).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFriendly name for the new display. Example: 'Lobby Screen'.
org_idYesThe organization ID to create the display in. Obtain this from list_organizations.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
orgIdNo
statusNo
orgNameNo
setupUrlNo
pairingUrlNo
pairingExpiresAtNo
Behavior5/5

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

The description reveals that the display starts offline and uncoupled, is owned by the organization, and requires admin scope and role. These behavioral traits go beyond the annotations (readOnlyHint=false, destructiveHint=false) and provide essential context for safe usage.

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

Conciseness5/5

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

The description is five sentences, front-loaded with the core purpose, followed by an alternative, then usage conditions and requirements. Every sentence adds value without redundancy.

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?

The description covers the purpose, alternative, prerequisites (role, licenses), ownership, and display state. For a pre-provisioning tool without an output schema, this is complete and sets proper expectations.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already explains the parameters. The description adds no new parameter-specific details beyond usage context like the organizational ownership and license requirement.

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 clearly states the tool creates a display without pairing it to hardware, distinguishing it from siblings like pair_by_code. It specifies the verb, resource, and a key differentiating feature.

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 explicitly says to prefer pair_by_code for physical screens and reserve create_org_display for administrative pre-provisioning. It also notes requirements: admin scope, manager role, and available licenses, including a pointer to allocate_licenses if needed.

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

delete_assetDelete AssetA
Destructive
Inspect

Deletes one or more assets. Displays referencing deleted assets will show broken images. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idsYesOne or more asset IDs to delete.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedNo
Behavior4/5

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

The annotations already indicate destructiveHint=true, but the description adds value by warning that 'displays referencing deleted assets will show broken images.' This provides contextual insight beyond the annotation. The description does not disclose other behavioral details like irreversibility or error handling, but it adds meaningful context.

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

Conciseness5/5

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

The description is two sentences long, each providing essential information: the action, a consequence, and an authentication requirement. There is no redundancy or irrelevant content.

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

Completeness3/5

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

The description covers the core action and a notable side effect, but it does not mention return value, error conditions, or that deletion is permanent. Given the absence of an output schema, this leaves some gaps in understanding the full behavior.

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

Parameters3/5

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

With 100% schema description coverage, both parameters are already documented. The description essentially repeats the schema's 'One or more asset IDs' without adding new constraints or format details. Therefore, it meets the baseline but adds no extra semantic value.

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 clearly states that the tool 'Deletes one or more assets', providing a specific verb and resource. The name and title align with this purpose, and it is distinct from sibling tools like update_asset or list_assets.

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

Usage Guidelines4/5

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

The description specifies an authentication prerequisite ('requires authentication with at least content_only scope') and warns about a side effect (broken images in referencing displays). However, it does not explicitly contrast this tool with alternatives or state when not to use it.

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

delete_data_slotDelete Data SlotA
Destructive
Inspect

Permanently deletes a data slot. Display HTML fetching its readUrl will receive 404 after deletion. Cannot be undone. Supply group_id to delete a group slot; omit for personal slots. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug of the data slot to delete.
group_idNoGroup/organization ID to delete a group slot. Omit for personal slots.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNo
deletedNo
Behavior5/5

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

Adds significant context beyond the destructiveHint annotation: permanent deletion, 404 after deletion, cannot be undone, and authentication needed. No contradictions with annotations.

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

Conciseness5/5

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

Three sentences, each essential: permanent deletion, specific effect (404 on readUrl), undo info, group vs personal, authentication. No wasted words.

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?

Covers all necessary aspects: irreversible action, effect on readUrl, parameter usage for groups, authentication. No output schema needed; return value is implied (success). Complete for a destructive action.

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%, but description enhances by explaining when to use group_id vs omit. The addition 'Supply group_id to delete a group slot; omit for personal slots' adds practical meaning beyond the schema.

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 clearly states it permanently deletes a data slot and distinguishes between group and personal slots. It is specific about the action and resource, and differentiates from sibling tools like set_data_slot and get_data_slot.

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

Usage Guidelines4/5

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

Provides clear guidance on when to supply group_id versus omit for personal slots, and notes authentication requirement. However, it does not explicitly mention alternatives or exclusions, which would elevate the score.

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

delete_displayDelete DisplayA
Destructive
Inspect

Permanently deletes a display and all its associated content. This action cannot be undone. Use this only when the user explicitly confirms they want to remove the display. Requires admin scope. Returns id, name and deleted (boolean true).

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to delete, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
deletedNo
Behavior4/5

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

Beyond the destructiveHint annotation, description clarifies 'cannot be undone' and 'requires admin scope', adding valuable behavioral context.

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

Conciseness5/5

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

Three concise sentences, front-loaded with critical information about permanence and usage condition, no wasted words.

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

Completeness4/5

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

For a simple destructive action tool with good annotations, the description adequately covers return fields and prerequisites. No output schema but return is briefly mentioned.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description does not add extra meaning beyond the schema, so baseline score of 3 is appropriate.

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 uses specific verb 'deletes' and resource 'display' and states it removes associated content, clearly distinguishing from siblings like clear_display which only clears content.

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

Usage Guidelines4/5

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

Explicitly states to use only when user confirms removal and mentions admin scope requirement, but does not mention when not to use or provide alternatives.

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

delete_organizationDelete OrganizationA
Destructive
Inspect

Permanently deletes an organization, releasing all its displays and removing all members. Only the owner can delete. This cannot be undone. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID to delete.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
orgIdNo
deletedNo
membersRemovedNo
displaysReleasedNo
Behavior5/5

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

Beyond annotations (destructiveHint=true), the description details side effects: releasing displays and removing members. It also emphasizes the permanent nature, which is critical for an AI agent to understand before invocation.

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

Conciseness5/5

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

Two concise sentences with no superfluous information. All details are relevant and front-loaded.

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 tool with no output schema, the description fully explains the action, prerequisites, side effects, and irreversibility. It covers all context an agent needs to decide and act.

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

Parameters3/5

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

The description adds no extra meaning beyond the input schema, which already has 100% coverage with clear descriptions for both parameters. The schema adequately explains the parameters, so baseline 3 applies.

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?

Description clearly states the verb 'deletes', resource 'organization', and specific consequences ('releasing all its displays and removing all members'). It distinguishes well from sibling tools like create_organization or rename_organization.

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

Usage Guidelines4/5

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

Explicitly states 'Only the owner can delete' and 'Cannot be undone', providing clear context for when to use. Does not explicitly mention alternatives but none are needed for this irreversible action.

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

fetchFetch ResourceA
Read-onlyIdempotent
Inspect

Retrieves the full details of a single agentView resource identified by its URI. Use this after search to read the complete content of a discovered resource, or directly when you already know the URI. Public URIs (e.g. agentview://public/status, agentview://public/instructions) require no authentication; private URIs (e.g. agentview://account/me, agentview://display/{id}) require a valid session. Returns uri, type, title, text (human-readable content) and data (structured details).

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe resource URI to fetch. Must use the agentview:// scheme. Examples: 'agentview://public/status', 'agentview://account/me', 'agentview://display/ABCD1234'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
uriNo
dataNo
textNo
typeNo
titleNo
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: authentication requirements (public vs private URIs) and the exact fields returned (uri, type, title, text, data).

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

Conciseness5/5

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

Four sentences, each serving a purpose: purpose, usage, authentication, return fields. No redundant or vague wording. Front-loaded with the core action.

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?

Despite no output schema, the description covers all aspects an agent needs: what it does, when to use, authentication, return values. The tool is simple and the description is fully adequate.

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% with detailed parameter descriptions. The description adds meaning by listing the return fields (uri, type, title, text, data) which are not in the input schema, and provides usage context for the authentication parameters.

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 clearly states the verb 'retrieves' and the resource 'full details of a single agentView resource identified by its URI'. It distinguishes from sibling tools like 'search' by specifying 'use after search' and 'directly when you already know the URI'.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'after search to read the complete content' or 'directly when you already know the URI'. It also explains authentication requirements for public vs private URIs, but does not explicitly state when not to use this tool.

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

get_accountGet AccountA
Read-onlyIdempotent
Inspect

Returns the authenticated user's account profile including userId, name, email, plan with feature details, personal display limits (maxPersonalDisplays, currentPersonalDisplays, remainingPersonalDisplays), total accessible displays across all organizations, organization memberships summary and points balance. Use this to answer questions about the user's subscription, display quota, organization memberships or plan capabilities. Requires authentication with at least content_only scope. Do not use this to list displays — use list_displays instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
nameNo
planNo
emailNo
pointsNo
userIdNo
maxDisplaysNo
planFeaturesNo
organizationsNo
currentDisplaysNo
authenticatedViaNo
organizationCountNo
remainingDisplaysNo
maxPersonalDisplaysNo
currentPersonalDisplaysNo
totalAccessibleDisplaysNo
remainingPersonalDisplaysNo
Behavior4/5

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

Description adds authentication scope requirement ('Requires authentication with at least content_only scope') beyond annotations, which already declare readOnlyHint, idempotentHint, and destructiveHint. No contradictions, and the extra context is useful but not extensive.

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?

Description consists of three sentences: purpose, usage, and exclusion. It is front-loaded with the main action and uses concise language. Slightly verbose due to explicit field listing, but not wasteful; it earns its length.

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?

Given the absence of an output schema, the description fully compensates by listing all return fields and specifying authentication requirements. It covers when and when not to use, and integrates with sibling tool differentiation. No gaps for a simple retrieval tool.

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

Parameters3/5

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

Input schema has 100% description coverage for both optional parameters (access_token and session_request_id). The description does not add new parameter semantics beyond schema; it mentions authentication but does not elaborate on parameter usage. Baseline 3 is appropriate.

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?

Description begins with 'Returns the authenticated user's account profile' and enumerates specific fields, clearly stating the verb and resource. It explicitly distinguishes from 'list_displays' by saying 'Do not use this to list displays — use list_displays instead.'

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?

States 'Use this to answer questions about the user's subscription, display quota, organization memberships or plan capabilities.' Also provides a clear when-not and alternative: 'Do not use this to list displays — use list_displays instead.'

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

get_assetGet AssetA
Read-onlyIdempotent
Inspect

Returns metadata for a single asset including its URL. Use this to verify an asset still exists before referencing it in HTML. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
asset_idYesThe asset ID (e.g. 'ast_01H7KXZ...').
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
nameNo
assetIdNo
mimeTypeNo
createdAtNo
sizeBytesNo
descriptionNo
Behavior5/5

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

Description adds authentication requirement ('requires authentication with at least content_only scope') beyond annotations (readOnlyHint, idempotentHint, destructiveHint). No contradictions; fully transparent.

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

Conciseness5/5

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

Two concise sentences front-loading purpose and usage. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given the tool's simplicity (2 params, no output schema), the description covers purpose, usage, and auth. It does not detail error responses for missing assets, but annotations and schema already provide sufficient context.

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

Parameters3/5

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

Schema description coverage is 100% with clear descriptions for both parameters. The tool description does not add additional parameter semantics beyond what the schema provides, meeting 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 clearly states verb 'Returns' and resource 'metadata for a single asset including its URL', distinguishing it from sibling tools like list_assets (plural) or update_asset/delete_asset.

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

Usage Guidelines4/5

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

Provides a specific use case ('verify an asset still exists before referencing it in HTML'), giving clear context. While it does not explicitly mention when not to use or alternatives, the usage scenario is well-defined.

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

get_auth_sessionGet Auth SessionA
Idempotent
Inspect

Polls the status of a login session created by create_auth_session and returns the agent token once the user completes the browser login. Use this after create_auth_session; poll every 2-3 seconds until the status is no longer 'pending'. Do not use this for any other purpose. Returns one of three states: 'pending' (user has not logged in yet — keep polling), 'active' (login succeeded — response includes token as a raw JWT string and tokenExpiresAt as ISO 8601 timestamp), or 'expired' (login window or token timed out — call create_auth_session again). When status is active the current MCP session is automatically authenticated; you can call protected tools immediately.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_request_idYesThe sessionRequestId string returned by create_auth_session. Must be passed exactly as received.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scopeNo
tokenNo
statusNo
expiresInNo
requestedScopeNo
tokenExpiresAtNo
Behavior4/5

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

Annotations already declare safe read/indempotent behavior. Description adds valuable context: states (pending/active/expired), polling frequency, automatic authentication on success, and retry instruction for expired. No contradictions detected.

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?

Description is somewhat lengthy but each sentence serves a purpose. Structured logically: purpose, usage pattern, state descriptions, and outcome. Could be slightly tighter but remains clear.

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?

Given high schema coverage, supportive annotations, and no output schema, the description fully explains return states with token details, polling behavior, and post-authentication impact. No gaps remain.

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 covers parameter 100% with description. Description adds crucial context: the session_request_id must be passed exactly as received from create_auth_session, emphasizing precision.

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 clearly states that the tool polls a login session and returns the agent token upon user completion. It identifies the resource ('auth session'), the action ('poll status'), and distinguishes itself from create_auth_session.

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?

Explicitly instructs to use after create_auth_session, poll every 2-3 seconds until status changes, and not for any other purpose. Also provides clear branching logic for 'pending', 'active', and 'expired' states.

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

get_billing_urlGet Billing URLA
Read-onlyIdempotent
Inspect

Returns a URL to the user's billing and subscription page where they can purchase or manage premium display licenses. Use this when the user wants to buy more licenses, upgrade their plan, or manage their subscription. The agent should present the URL to the user and offer to allocate and assign the new licenses once the purchase is complete. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
planNo
billingUrlNo
freeLicensesNo
currentPremiumLicensesNo
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. Description adds scope requirement ('Requires content_only scope') and usage flow context, enhancing transparency beyond annotations.

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

Conciseness5/5

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

Two sentences, front-loaded with the main action. No wasted words, covers purpose and usage efficiently.

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?

Tool complexity is low (1 optional param, no output schema). Description covers purpose, usage, scope, and post-action (present URL, offer to allocate). Complete for the tool's modest needs.

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

Parameters3/5

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

Only one optional parameter (access_token) with 100% schema coverage. Description does not add extra meaning beyond the schema's 'Optional JWT access token for authentication.' Baseline 3 is appropriate.

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 clearly states it returns a URL to the billing/subscription page for purchasing/managing premium display licenses. It uses specific verb 'Returns' and resource 'URL to billing page', distinguishing it from sibling tools like get_pricing or get_license_info.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'when the user wants to buy more licenses, upgrade their plan, or manage their subscription.' Provides workflow guidance on presenting the URL and offering to allocate licenses. Lacks explicit when-not-to-use, but still clear.

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

get_data_slotGet Data SlotA
Read-onlyIdempotent
Inspect

Returns the current JSON content and metadata of a data slot by slug. Supply group_id to look up a group slot; omit it for personal slots. The response includes readUrl — the public anonymous URL for display HTML to fetch. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug of the data slot to retrieve.
group_idNoGroup/organization ID to retrieve a group slot. Omit for personal slots.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNo
typeNo
labelNo
contentNo
groupIdNo
readUrlNo
sizeBytesNo
updatedAtNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds value by noting that the response includes a readUrl and that authentication is required, providing behavioral context beyond annotations. No contradictions.

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

Conciseness5/5

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

Two sentences with no fluff. Front-loaded with the main purpose and quickly covers key usage nuance and response detail. Every sentence earns its place.

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 simple retrieval tool with 3 parameters (1 required), annotations, and no output schema, the description fully covers purpose, parameter semantics, authentication, and an important response field (readUrl). No gaps identified.

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 covers all parameters with descriptions (100%), so baseline is 3. The description adds semantic value by clarifying the group_id parameter's role in distinguishing group vs. personal slots, and reinforces the access_token's purpose for authentication.

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 uses the verb 'Returns' with the resource 'data slot by slug', specifies group vs. personal slots, and mentions response contents including readUrl. It clearly distinguishes from sibling tools like list_data_slots, set_data_slot, and delete_data_slot.

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

Usage Guidelines4/5

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

The description states when to supply group_id vs. omit it, and mentions authentication requirement. It implicitly guides usage for specific slug retrieval but does not explicitly contrast with alternatives like list_data_slots when the slug is unknown.

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

get_data_slot_usageGet Data Slot UsageA
Read-onlyIdempotent
Inspect

Lists displays whose IdleHtmlContent embeds a {{slot:}} placeholder for this data slot (with optional .readUrl / .slug / .label / .key suffix). Use this BEFORE delete_data_slot to know which displays will start returning 404, or before set_data_slot on a structural change to know which displays will pick up the new shape. Scope is restricted to displays the caller can already see in the same scope as the slot — personal slots only check personal displays, group slots only check the group's displays. Capped at 50 results; 'truncated' is true if more matches exist. Requires authentication; the same slot read scope as get_data_slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe slug of the data slot to scan usage for.
group_idNoGroup/organization ID for group slots. Omit for personal slots.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNo
countNoTotal number of displays referencing the slot (may exceed displays.length if truncated).
displaysNo
truncatedNoTrue if more than 50 displays match; only the first 50 are returned in 'displays'.
Behavior5/5

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

Even with annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds valuable behavioral details: scope restricted to displays the caller can see, capped at 50 results with 'truncated' flag, and requires authentication. These go beyond what annotations provide.

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

Conciseness5/5

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

The description is concise with only three sentences. The first sentence defines the action, the second gives usage context, and the third adds limitations. No redundant information, and it's front-loaded with the most important information.

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

Completeness4/5

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

The description covers purpose, usage, scope, limits, and authentication. With no output schema, it mentions the 'truncated' flag but doesn't detail the full return structure, which is acceptable given the tool's complexity. Slight room for improvement in describing the result format.

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

Parameters3/5

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

Although the schema covers all parameters with 100% description coverage, the description does not add extra meaning beyond the schema. It mentions the slug but doesn't elaborate on parameter usage or constraints, so a baseline of 3 is appropriate.

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 clearly states the tool 'lists displays whose IdleHtmlContent embeds a {{slot:<slug>}} placeholder', specifying a specific verb and resource. It distinguishes itself from siblings like delete_data_slot and set_data_slot by mentioning their relationship, making the purpose unambiguous.

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 provides explicit usage guidance: 'Use this BEFORE delete_data_slot to know which displays will start returning 404, or before set_data_slot on a structural change to know which displays will pick up the new shape.' It also mentions scope restrictions and the 50-result cap, helping the agent decide when to use this tool.

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

get_displayGet DisplayA
Read-onlyIdempotent
Inspect

Returns the full details of a single display including its live state, current content, pairing links, screen and viewport facts, touch capability, runtime classification, hardware/UI settings, and the latest reported browser/runtime facts. Use this when you already know the display ID and need its complete state before sending content or managing it. Do not use this to discover displays — use list_displays first. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. Obtain this from list_displays or from a previous create_display call.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.
session_request_idNoOptional session request ID returned by create_auth_session. Pass this instead of access_token for simpler, more reliable authentication — the server resolves the identity server-side.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
engineNo
lockedNo
screenNo
statusNo
browserNo
runtimeNo
hasTouchNo
lastSeenNo
platformNo
settingsNo
setupUrlNo
viewportNo
managedUrlNo
pairingUrlNo
resolutionNo
approvalUrlNo
deviceClassNo
touchSourceNo
deviceFamilyNo
screenSourceNo
classificationNo
currentContentNo
viewportSourceNo
pairingExpiresAtNo
effectiveLanguageNo
hasDefaultContentNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds detailed behavioral context about what is returned (live state, content, pairing links, etc.) and authentication scope, going beyond annotations without contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no wasted words. Efficient and structured.

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?

Description covers authentication prerequisites, usage context, and hints at output contents despite missing output schema. Fully adequate for a single-record retrieval tool.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The tool description adds no additional parameter information beyond what is in the schema; the baseline score of 3 applies.

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 clearly states it returns full details of a single display, listing specific aspects like live state, content, pairing links, etc. It explicitly distinguishes from list_displays, which is a sibling tool for discovery.

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?

Provides explicit guidance: 'Use this when you already know the display ID and need its complete state. Do not use this to discover displays — use list_displays first.' Also mentions authentication scope requirement.

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

get_display_agent_artifactGet Display Agent Artifact (Substituted)A
Read-onlyIdempotent
Inspect

Returns the agent-onboarding artifact body ready to paste/install, with {{slot:KEY.prop}} placeholders SUBSTITUTED against the slot slugs that were materialised when the template was installed on this display. The killer flow: 'Add my Claude Code agent to my agentView swarm display' → list_displays() to find the display → get_display_agent_artifact(display_id, key='agent-skill') → save the response.content to ~/.claude/skills/agentview-swarm-bot/SKILL.md. Requires content scope. The caller must own the display (or have a valid display.read API-key scope). Unresolved placeholders (e.g. when the template references a slot that wasn't installed) are returned verbatim in content and listed in unresolvedPlaceholders.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesArtifact key (e.g. 'bot-system-prompt', 'agent-skill', 'mcp-config'). Discover available keys for a display's template via get_store_template_details on its installed template slug.
display_idYesDisplay profile ID (8-char alphanumeric) from list_displays.
access_tokenNoOptional JWT access token (use session_request_id instead when possible).
session_request_idNoOptional session request ID returned by create_auth_session. Preferred over access_token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
kindNo
contentNoArtifact body with {{slot:KEY.prop}} placeholders resolved to this display's installed slot slugs / readUrls.
fileNameNo
displayIdNo
sizeBytesNo
contentTypeNo
unresolvedPlaceholdersNoPlaceholders that could not be resolved (rare — usually a template-vs-install drift). The literal placeholder text remains in content; surface this warning to the user.
Behavior4/5

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

Annotations already mark the tool as read-only and idempotent. The description adds behavioral details: unresolved placeholders are kept verbatim in .content and listed in .unresolvedPlaceholders, and authorization requirements are stated. No contradictions.

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

Conciseness5/5

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

The description is concise (three sentences) with a clear structure: purpose, usage flow, requirements, and output details. No redundant information.

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

Completeness4/5

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

Given no output schema, the description partially explains the response structure (artifact body, placeholder handling). It covers usage context, prerequisites, and typical flow, making it suitably complete for an agent to select and invoke the tool.

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?

The input schema has 100% coverage, but the description adds context for the key parameter (examples and guidance to use get_store_template_details), and explains the display_id source. This adds meaningful semantics beyond the schema.

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 clearly states the tool returns the agent-onboarding artifact body with resolved placeholders for a specific display, and distinguishes it from related tools by highlighting the placeholder substitution. The 'killer flow' example reinforces the specific purpose.

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

Usage Guidelines4/5

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

The description provides a concrete usage flow (list_displays → get_display_agent_artifact → write to file) and mentions prerequisites (content scope, ownership). However, it does not explicitly exclude alternatives like get_store_template_agent_artifact, leaving the when-not-to-use implicit.

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

get_display_capabilitiesGet Display CapabilitiesA
Read-onlyIdempotent
Inspect

Returns resolved display capabilities for a display, including effective network mode plus concrete browser/runtime facts such as screen, viewport, touch/input hints, browser and engine version, platform classification, feature support, known limitations, graphics hints, and a recommended delivery mode. Call this before generating or sending HTML so your agent can match the content to the real display browser. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session. Pass this instead of access_token for simpler, more reliable authentication — the server resolves the identity server-side.

Output Schema

ParametersJSON Schema
NameRequiredDescription
screenNo
runtimeNo
metadataNo
viewportNo
displayIdNo
capabilitiesNo
connectivityNo
classificationNo
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by stating the required authentication scope ('content_only') and listing the extensive set of return fields (screen, viewport, touch hints, etc.), which helps the agent understand the behavioral completeness without contradiction.

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

Conciseness5/5

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

The description is two sentences, highly efficient. The first sentence lists the key outputs, and the second gives usage timing and auth requirements. Every word serves a purpose, with no redundancy.

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

Completeness4/5

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

Although there is no output schema, the description enumerates nearly all return fields (effective network mode, screen, viewport, touch/input hints, browser/engine version, platform, feature support, known limitations, graphics hints, recommended delivery mode). This is sufficiently detailed for an agent to understand what to expect, though it could be slightly more structured.

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

Parameters3/5

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

The input schema has 100% description coverage, and the description does not add any additional meaning beyond what the schema already provides for the parameters. Baseline score of 3 is appropriate.

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 uses a specific verb ('Returns resolved display capabilities') and clearly identifies the resource and scope. It lists concrete facts (network mode, browser/runtime details) and explicitly differentiates from sibling tools by stating it should be called before generating HTML, making it distinct from other get/read tools.

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

Usage Guidelines4/5

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

The description explicitly says 'Call this BEFORE generating or sending HTML' and specifies authentication requirements ('Requires authentication with at least content_only scope'). While it does not provide when-not-to-use or alternatives, the context is clear enough for the agent to determine this is a prerequisite read operation.

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

get_display_contentGet Display ContentA
Read-onlyIdempotent
Inspect

Returns the current content state of a display including active live content, content URL, idle content and delivery status. Check currentContentDescription first to understand intent; call read_display_html only when you truly need raw source edits. To share what the display is currently showing, mint a short-lived signed link via get_display_preview_url — the platform no longer exposes a permanent public viewer URL. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
statusNo
idleFileNo
contentUrlNo
currentFileNo
currentVersionNo
hasIdleContentNo
hasLiveContentNo
liveContentInfoNo
currentContentDescriptionNo
Behavior5/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description goes beyond by listing the specific data returned (active content file, currentContentDescription, content URL, displayUrl, idle content, delivery status), noting that displayUrl shows real-time rendering, and specifying the required auth scope (content_only). No contradictions with annotations.

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

Conciseness5/5

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

The description consists of two clear, front-loaded sentences. The first sentence lists what the tool returns, and the second provides usage guidance. Every sentence adds value with no redundancy or unnecessary detail.

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?

Given the moderate complexity, good annotations, and full schema coverage, the description provides all necessary context: return fields, usage prioritization (currentContentDescription over read_display_html), real-time preview capability, and authentication scope. No output schema exists, but the return values are described sufficiently for an agent to understand the tool's output.

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 covers both parameters (display_id and access_token) with descriptions. The description adds value by associating the access_token parameter with the authentication requirement (content_only scope), which is not explicitly stated in the schema property description. Since schema coverage is 100% and the description complements the parameters, a score of 4 is appropriate.

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 clearly states it returns the current content state of a display, lists specific fields (active content, currentContentDescription, URL, displayUrl, idle content, delivery status), and distinguishes itself from the sibling read_display_html by advising to use currentContentDescription first and only call read_display_html when raw source access is needed.

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

Usage Guidelines4/5

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

The description explicitly tells when to use this tool ('Use currentContentDescription first to understand intent') and when to use the alternative read_display_html ('only when raw source access is truly needed'). It also notes the authentication requirement with content_only scope. However, it does not mention other potential alternatives or contexts where this tool might not be appropriate.

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

get_display_preview_urlGenerate Display Preview Share LinkA
Read-only
Inspect

Generates a short-lived signed share link for the display's CURRENT content. This is the ONLY supported way to share what's on the screen — the legacy permanent public viewer URL has been removed for GDPR compliance. Use this when the user wants to send what the screen is showing to a colleague, embed it in a chat or document, or hand it to an external integration. The returned previewUrl is read-only, expires after ttl_seconds, and dies the moment the owner pushes new content. The TTL ceiling depends on the display's privacy_mode: 'Private' caps at 3600s; 'Public' caps at 86400s. Requested TTLs above the per-mode ceiling are silently clamped; the returned ttlSeconds reflects the actual lifetime. Recipients see the display's content framed in a preview chrome — they cannot push, configure, or discover other displays. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
ttl_secondsNoLifetime of the share link in seconds. Default 3600 (1 hour). Clamped to [60, 86400].
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
displayIdNo
expiresAtNo
previewUrlNo
ttlSecondsNo
displayNameNo
privacyModeNo
contentVersionIdNo
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses TTL clamping based on privacy_mode, automatic expiration when owner pushes new content, and recipient limitations (cannot push or configure). No contradiction with annotations.

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

Conciseness5/5

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

The description is well-structured, starting with the primary purpose, then usage guidance, then technical details. Every sentence adds value without redundancy. Length is appropriate for the complexity.

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?

Despite having no output schema, the description enumerates all return fields (previewUrl, expiresAt, ttlSeconds, displayName, contentVersionId, privacyMode). It also covers authentication, TTL clamping, and recipient behavior, making the tool fully understandable.

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%, but the description adds significant value by explaining default TTL (3600), clamping behavior ([60, ceiling]), and per-mode caps (Private 3600s, Public 86400s). This context is not available in the schema alone.

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 clearly states the tool generates a short-lived signed share link for the display's current content, distinguishes it from the legacy URL, and highlights it's the only supported way. It specifies the action (generate preview link) and the resource (display's current content) with explicit differentiation from 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 explicitly tells when to use: when the user wants to share screen content, embed it, or hand to an integration. It also notes the legacy URL is removed and that the link expires, providing clear guidance on appropriate scenarios.

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

get_license_infoGet License InfoA
Read-onlyIdempotent
Inspect

Returns the authenticated user's complete license allocation overview: total premium licenses, personal usage, allocatable licenses, per-organization allocations, and free licenses. Use this to understand available capacity before allocating licenses. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
canAllocateNo
orgAllocationsNo
personalDisplaysNo
allocatableLicensesNo
totalAllocatedToOrgsNo
totalPremiumLicensesNo
freeAllocatableLicensesNo
personalPremiumDisplaysNo
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds value by listing the specific return components, but it doesn't detail response format or edge cases like no licenses.

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

Conciseness5/5

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

Two sentences that are well-structured and front-loaded with key information. No unnecessary words or repetition.

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

Completeness4/5

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

The description covers the main purpose and usage context. While no output schema exists, it enumerates enough components for understanding. Minor omission: doesn't clarify if the response is paginated or includes cumulative totals.

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

Parameters3/5

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

Schema coverage is 100% for the single optional parameter. The description does not add further explanation beyond the schema's own description, meeting baseline but not exceeding.

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 clearly states the tool returns 'complete license allocation overview' with specific components (total premium, personal usage, etc.). It distinguishes itself from siblings like allocate_licenses by focusing on reading info.

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 explicitly says 'Use this to understand available capacity before allocating licenses,' providing clear context. It also mentions the required 'content_only' scope, setting prerequisites.

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

get_organizationGet OrganizationA
Read-onlyIdempotent
Inspect

Returns full details of a specific organization including its displays, members with roles, allocated slots and remaining capacity. Use this after list_organizations to inspect a specific organization's state. Requires authentication with at least content_only scope and the user must be a member of the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID. Obtain this from list_organizations or from get_account.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
planNo
slugNo
orgIdNo
membersNo
displaysNo
isActiveNo
yourRoleNo
createdAtNo
memberCountNo
contactEmailNo
displayCountNo
allocatedSlotsNo
remainingSlotsNo
Behavior4/5

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

Annotations already indicate readOnly and idempotent behavior. The description adds useful context about the return content and required authentication scope, but does not mention other behavioral traits like rate limits or error conditions.

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

Conciseness5/5

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

Three sentences, no wasted words. The first sentence states the purpose, the second provides usage guidance, and the third covers authentication. Information is front-loaded and efficient.

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 read-only tool with good annotations and full schema coverage, the description covers the output contents, usage context, and authentication requirements. No obvious gaps given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% and already describes both parameters well. The description does not add new parameter-specific information beyond what is in the schema, so baseline score of 3 is appropriate.

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 states it returns full details of a specific organization including displays, members, slots, and capacity, and explicitly differentiates from sibling list_organizations by saying 'Use this after list_organizations to inspect a specific organization's state.'

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

Usage Guidelines4/5

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

The description clearly tells when to use the tool (after list_organizations) and specifies authentication requirements (content_only scope, user must be a member). It does not explicitly list alternatives or when not to use, but the context is sufficient.

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

get_pricingGet PricingA
Read-onlyIdempotent
Inspect

Returns agentView plan pricing, features and upgrade options. Use this when the user asks about pricing, costs, plan differences or what an additional display costs. No authentication required. Returns an array of plans with name, price, included displays and features, plus the per-display add-on price and a link to the pricing page.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
plansNo
currencyNo
pricingUrlNo
extraDisplayPriceNo
extraDisplayMonthlyPriceNo
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), it adds that 'no authentication required' and describes return structure (array of plans with name, price, included displays, features, per-display add-on price, link). No contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, then usage, then details. Every sentence adds value; no 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 zero-parameter, read-only tool, the description covers purpose, usage, authentication, and return details comprehensively. No gaps.

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?

Zero parameters, so baseline 4 applies. Description adds no parameter info but effectively explains the return value, which compensates for lack of output schema.

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 clearly states it returns 'agentView plan pricing, features and upgrade options,' which is a specific verb and resource. It distinguishes itself from siblings by being the only pricing-related tool among many.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'when the user asks about pricing, costs, plan differences or what an additional display costs.' No exclusions or alternatives needed given its unique purpose.

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

get_public_statusGet Public StatusA
Read-onlyIdempotent
Inspect

Returns the server's public readiness status, version string and discovery URLs. Use this before authenticating to verify the server is reachable and to obtain entry-point URLs. No authentication required. Returns status ('ready'), server name, version, statusUrl and instructionsUrl.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
serverNo
statusNo
versionNo
statusUrlNo
instructionsUrlNo
Behavior4/5

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

Annotations already mark it as readOnlyHint and idempotentHint. The description adds 'No authentication required' and lists the returned fields (status, server name, version, statusUrl, instructionsUrl), which gives the agent a full picture of its behavior beyond annotations.

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

Conciseness5/5

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

The description is two sentences that are concise and front-loaded: the first states what it returns, the second gives usage guidance. Every sentence adds value, with no 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?

Given the tool has no parameters and no output schema, the description fully covers its purpose, return values, and usage context. It explains exactly what an agent needs to know: no auth required, returns status and URLs, and should be used before authentication.

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

Parameters3/5

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

Input schema has zero parameters with 100% schema coverage, so the description need not add parameter details. The description implicitly handles this by focusing on the tool's purpose and return values, which is adequate.

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 explicitly states 'Returns the server's public readiness status, version string and discovery URLs,' which specifies the verb and resource clearly. Among many sibling tools, this is the only one for pre-authentication status checks, making it easily distinguishable.

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

Usage Guidelines4/5

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

It provides clear context with 'Use this before authenticating to verify the server is reachable and to obtain entry-point URLs,' indicating when to use and what for. While it doesn't explicitly exclude alternatives, the guidance is sufficient for an agent to decide correctly.

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

get_storage_quotaGet Storage QuotaA
Read-onlyIdempotent
Inspect

Returns the storage-pool snapshot (used / limit / remaining bytes) for the personal scope or a specific group. Data slots and uploaded assets share one quota; call this BEFORE set_data_slot or upload_asset on large payloads to verify the write will fit and avoid a 413 quota_exceeded round-trip. Suppresses raw numbers for narrowly-scoped API keys (slot- or display-whitelisted) to avoid leaking org-wide storage state — those callers see usedBytes=limitBytes=0 and suppressed=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idNoGroup/organization ID for the group's pool. Omit for the caller's personal pool.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
scopeNo
groupIdNo
usedBytesNo
limitBytesNo
suppressedNoTrue for narrowly-scoped API keys; usedBytes/limitBytes are zeroed and meaningless.
remainingBytesNo
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the description's main contribution is clarifying scope (personal vs group) and the suppression of raw numbers for narrow-scoped keys, which adds useful behavioral context.

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

Conciseness5/5

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

Two sentences without unnecessary words. The key action and important usage note are front-loaded, and every sentence earns its place.

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?

Given the tool's simplicity (2 optional params, no output schema), the description fully covers purpose, scope, usage timing, quota sharing, and a special behavior. No gaps for effective agent decision-making.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The main description adds no additional parameter detail beyond what the schema provides, so baseline 3 is appropriate.

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 clearly states the tool returns a storage pool snapshot with used/limit/remaining bytes, distinguishing it from siblings like get_data_slot_usage and set_data_slot. It specifies scope (personal or group) and the shared quota nature.

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?

Explicitly advises calling this tool BEFORE set_data_slot or upload_asset on large payloads to avoid 413 quota_exceeded errors. Also mentions suppression behavior for scoped API keys, providing clear when-to-use guidance.

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

get_store_template_agent_artifactGet Store Template Agent Artifact (Raw)A
Read-onlyIdempotent
Inspect

Returns the RAW body of one agent-onboarding artifact shipped with a store template (system prompt, Agent Skills SKILL.md, MCP-config snippet, …). Placeholders ({{slot:KEY.prop}}) are NOT substituted — use this BEFORE installing the template, when there is no display yet to resolve slot slugs against. After install, use get_display_agent_artifact for the placeholder-substituted body ready to paste/save. Discover available artifact keys via get_store_template_details (agentArtifacts array). No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesArtifact key from get_store_template_details (e.g. 'bot-system-prompt', 'agent-skill', 'mcp-config').
slugYesTemplate slug (e.g. 'agent-ops-cyan-wall').

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
kindNo
slugNo
contentNoRaw artifact body with placeholders intact. Treat as opaque text in the configured contentType.
fileNameNoSuggested filename when saving to disk (e.g. 'SKILL.md', '.mcp.json').
sizeBytesNo
contentTypeNoMIME type of the body.
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds that placeholders are not substituted and no authentication is required, which is useful context beyond annotations.

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

Conciseness5/5

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

Two sentences that efficiently cover purpose, examples, substitution behavior, usage guidance, and how to discover keys. No fluff.

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?

Despite no output schema, description fully explains what the tool returns, when to use it, and how to find artifact keys, making it complete for the given complexity.

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% but description provides additional examples for key ('bot-system-prompt', 'agent-skill') and slug ('agent-ops-cyan-wall'), adding clarity beyond schema descriptions.

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?

Description clearly states it returns the raw body of an agent-onboarding artifact, lists examples (system prompt, SKILL.md, MCP-config), and distinguishes from get_display_agent_artifact by noting raw vs substituted body.

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?

Explicitly states when to use (BEFORE install, no display to resolve slots) and when not (AFTER install, use get_display_agent_artifact). Also references get_store_template_details for discovering artifact keys.

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

get_store_template_detailsGet Store Template DetailsA
Read-onlyIdempotent
Inspect

Returns the full public details of a single store template: localized title, short description, long-form markdown (intro, use cases, audience, setup), category, optional suite (design family), tags, theme, designStyle, placement, features list, preview image URL, store detail path, AND an agentArtifacts array listing the bot-onboarding files shipped with the template (system prompts, Agent Skills standard SKILL.md files, MCP-config snippets). agentArtifacts is metadata only — bodies live behind get_store_template_agent_artifact (anonymous, raw with placeholders intact) and get_display_agent_artifact (owner-scoped, placeholders substituted against a specific display's installed slot slugs). Use this after search_store_templates picks a candidate so you can explain the template to the user, decide whether it ships agent integration, and offer the right install/onboard flow. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe template slug (English kebab-case) returned by search_store_templates, e.g. 'bistro-warm-door' or 'agent-ops-cyan-wall'.
languageNoPreferred content language. Defaults to 'en'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNo
tagsNo
suiteNo
themeNo
titleNo
categoryNo
featuredNo
featuresNo
fileNameNo
placementNo
detailPathNo
sourceKindNo
descriptionNo
designStyleNo
previewPathNo
publishedAtNo
introMarkdownNo
setupMarkdownNo
agentArtifactsNoAgent-onboarding files shipped with the template (system prompts, Agent Skills standard SKILL.md, MCP config snippets). Empty array when the template ships none. Body lives behind get_store_template_agent_artifact / get_display_agent_artifact.
previewImageUrlNo
audienceMarkdownNo
suiteDescriptionNo
useCasesMarkdownNo
categoryDescriptionNo
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by listing the exact fields returned and confirming no authentication is needed, which is not in annotations. No contradictions.

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 two sentences. The first sentence is somewhat long but packs all relevant return fields. The second is very concise. Overall efficient with no wasted words.

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?

The tool is simple (retrieve details by slug). No output schema exists, but the description enumerates all returned fields sufficiently. Combined with high annotation coverage, the description is fully complete for this context.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for both parameters (slug and language). The description does not add further semantics beyond what the schema provides, so baseline score of 3 is appropriate.

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 clearly states the action ('Returns the full public details') and the resource ('single store template'), and lists the specific fields returned. It distinguishes from siblings by referencing 'search_store_templates' as the preceding step, making its role unique.

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 explicitly directs when to use this tool ('after search_store_templates picks a candidate') and provides the workflow context ('explain the template before offering to send it to a display'). It also notes 'No authentication required', clarifying a usage condition.

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

get_store_template_install_optionsGet Store Template Install OptionsA
Read-onlyIdempotent
Inspect

Returns the displays the authenticated user can send a given store template to, plus the data slots the template needs. Call this before send_store_template_to_display so you can show the user which Türschild they can target and know which per-slot JSON the template consumes. Requires authentication with at least content_only scope. API-key callers scoped to a display whitelist only see their scoped displays. When no displays come back, tell the user they first need to create/claim a display (create_display / pair_by_code) before installing store content.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug returned by search_store_templates, e.g. 'bistro-warm-door'.
languageNoPreferred UI language for labels. Defaults to 'en'.
access_tokenNoOptional JWT access token.
session_request_idNoOptional session request ID from create_auth_session. Preferred over access_token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
displaysNo
languageNo
templateSlugNo
requiredDataSlotsNo
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds auth scope required (content_only) and API-key whitelist behavior.

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?

Slightly long but well-structured with numbered points; efficient for the information conveyed.

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?

No output schema, but description fully explains return structure (displays, slots) and error case (no displays). Complete for tool complexity.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions. Description reinforces slug source but adds minimal extra meaning.

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?

Description clearly states the tool returns displays and data slots for a template, distinct from sibling 'send_store_template_to_display'.

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?

Explicitly says 'Call this before send_store_template_to_display' and advises on handling no displays (create/claim a display).

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

invite_memberInvite MemberA
Destructive
Inspect

Creates an invite link to add a new member to an organization. The invite is valid for 7 days. Optionally bind it to a specific email address so only that person can accept it. Requires admin scope and the user must be an admin or owner of the organization. Returns the inviteUrl to share with the invitee.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesThe role for the invited member. Must be one of: 'admin' (manage members and displays), 'manager' (manage displays and content), 'viewer' (read-only dashboard access).
emailNoOptional email address to bind the invite to. If set, only this email address can accept the invite.
org_idYesThe organization ID to invite a member to. Obtain this from list_organizations.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roleNo
orgIdNo
orgNameNo
expiresAtNo
inviteUrlNo
inviteTokenNo
inviteeEmailNo
Behavior4/5

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

Annotations mark destructiveHint: true, and the description adds behavioral context: the invite is valid for 7 days, can be bound to an email, and returns an inviteUrl. It also discloses authorization requirements. No contradiction with annotations; the description supplements them well.

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

Conciseness5/5

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

The description is four efficient sentences, front-loaded with the main action. Every sentence serves a purpose: purpose, validity, options, authorization, output. No fluff.

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

Completeness4/5

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

Given the complexity (4 parameters, no output schema, but annotations present), the description covers purpose, validity, optional binding, authorization, and output. It omits error cases or duplicate invite handling, but is sufficient for an agent to decide usage.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already defines parameters clearly. The description adds minimal value by reiterating optional email binding and return value, but it does not enrich parameter meaning significantly beyond the schema.

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 clearly states the tool creates an invite link to add a new member to an organization. It specifies the verb 'creates' and the resource 'invite link,' which distinguishes it from sibling tools like remove_member or update_member_role.

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

Usage Guidelines4/5

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

The description provides context for when to use the tool: to add a new member. It also mentions prerequisites ('requires admin scope and the user must be an admin or owner'). However, it does not explicitly mention when not to use it or suggest alternative tools, though the sibling list implies alternatives.

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

list_api_keysList API KeysA
Read-onlyIdempotent
Inspect

Lists all API keys for the current user. Returns key metadata (prefix, name, scope, dates) but never the raw key. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keysNo
countNo
Behavior4/5

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

Annotations indicate readOnly and idempotent. Description adds that it never returns the raw key and requires admin scope, providing useful behavioral context beyond annotations.

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

Conciseness5/5

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

Two concise sentences with no redundancy. Front-loaded with core purpose, immediately actionable.

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

Completeness4/5

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

No output schema, but describes return format (metadata fields). Mentions scope requirement. Adequately complete for a list operation.

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

Parameters3/5

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

Schema has 100% coverage with one optional parameter. Description does not elaborate on the parameter, meeting baseline for high coverage but not adding extra value.

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?

Description clearly states it lists all API keys for the current user, returning metadata but not the raw key. It distinguishes from sibling tools like create_api_key and revoke_api_key.

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

Usage Guidelines4/5

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

Implicitly clear when to use (to list keys), and mentions prerequisite 'Requires admin scope'. No explicit 'when not to use', but adequate for a simple list operation.

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

list_assetsList AssetsA
Read-onlyIdempotent
Inspect

Lists the authenticated user's uploaded assets with optional filtering by type, search term, and group. Returns asset URLs that can be used in HTML content. Check this before uploading to avoid duplicates. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by MIME category.
limitNoMaximum results (default: 50, max: 200).
searchNoSearch in filename and description (case-insensitive).
group_idNoOnly assets of this group. Omit for personal assets.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
assetsNo
Behavior4/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false. Description adds value by specifying authentication scope ('content_only') and clarifies that listing can be used to check for duplicates before uploading. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences, each essential. First states purpose, second explains key parameter usage, third adds authentication requirement. No redundant words.

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

Completeness4/5

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

Covers core functionality (filtering, scope, auth). No output schema but listing assets is straightforward. Limit and pagination details are in schema. Could mention default limit but schema covers it.

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?

Input schema covers all 5 parameters with 100% description coverage. Description adds context for group_id, explaining its role in accessing shared vs personal assets. This enhances understanding beyond the schema. Other parameters are well-described in schema.

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?

Clearly states 'Lists uploaded assets with optional filtering', specifying verb and resource. Differentiates from siblings like delete_asset, get_asset, upload_asset by focusing on listing with filtering and scope. Explicitly covers personal vs group assets.

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

Usage Guidelines4/5

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

Provides clear when-to-use for group_id (organization displays) and when not to use it (personal assets). Includes authentication scope requirement and a tip to check before uploading. Does not explicitly mention alternatives but context is sufficient given sibling tools.

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

list_data_slotsList Data SlotsA
Read-onlyIdempotent
Inspect

Lists data slots with optional filtering. Returns metadata only (no jsonContent). Each item includes readUrl. Use readUrl in display HTML fetch() calls. Requires authentication.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default: 50, max: 200).
offsetNoOffset for pagination.
searchNoSearch in label (case-insensitive).
group_idNoGroup/organization ID to list shared group slots. Omit for personal slots.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
slotsNo
Behavior4/5

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

Annotations already provide readOnlyHint and idempotentHint. The description adds value by clarifying it returns metadata without jsonContent and explains the readUrl format, which is behavioral beyond annotations.

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

Conciseness5/5

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

Three sentences: purpose, return format with URL, authentication. No wasted words, front-loaded with key information.

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

Completeness4/5

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

No output schema, so description explains return value (metadata only, no jsonContent, readUrl). Covers authentication and URL format. Pagination details are in schema. Sufficient for a list tool.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all 5 parameters. The description adds minimal additional meaning (e.g., 'optional filtering') but relies on schema for parameter details.

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 clearly states it lists data slots with optional filtering and returns metadata only. It distinguishes from siblings like get_data_slot (single) and delete_data_slot (delete).

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

Usage Guidelines4/5

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

The description specifies authentication requirement and explains how to use the readUrl in fetch() calls. It implicitly differentiates from get_data_slot for single retrievals but lacks explicit when-not guidance.

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

list_display_categoriesList Display CategoriesA
Read-onlyIdempotent
Inspect

Lists the authenticated user's personal display categories with stable IDs, paths and assignment counts. Use this to discover existing categories before assigning or replacing categories on a display. Requires authentication with at least content_only scope and display.read capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
categoriesNo
Behavior4/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds the authentication scope requirement, which is a behavioral trait beyond the annotations. No contradictions.

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

Conciseness5/5

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

The description is two sentences, uses clear language, and contains no extraneous information. It is front-loaded with the main action.

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

Completeness4/5

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

For a simple list tool, the description covers purpose and authentication. It does not describe the return format, but the tool is straightforward and the schema has no output schema. Slight gap, but acceptable.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already provides meanings for both parameters. The description adds no extra parameter details, but the baseline is appropriate.

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 clearly states the verb 'Lists' and the specific resource 'the authenticated user's personal display categories and assignment counts'. It distinguishes from siblings like list_displays and list_public_api_categories by specifying 'personal' and 'assignment counts'.

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

Usage Guidelines4/5

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

The description includes the authentication scope requirement ('Requires authentication with at least content_only scope'), guiding when this tool should be used. It does not explicitly mention alternatives, but the context is clear.

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

list_displaysList DisplaysA
Read-onlyIdempotent
Inspect

Returns all displays accessible to the authenticated user as an array with count and display details. Use this to discover available display IDs before reading or modifying a specific display with get_display or send_html. Requires authentication with at least content_only scope; admin is not required. Each display entry includes id (8-character alphanumeric profile ID), name, status, locked, setupUrl, pairingUrl, managedUrl and approvalUrl plus a compact runtime summary such as screen resolution, touch support, deviceClass and deviceFamily when known. Do not use this to get full details of one display — use get_display with the display_id instead. To share what a display is currently showing, mint a short-lived signed link with get_display_preview_url; the platform no longer exposes a permanent public viewer URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.
session_request_idNoOptional session request ID returned by create_auth_session. Pass this instead of access_token for simpler, more reliable authentication — the server resolves the identity server-side.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
displaysNo
Behavior5/5

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

Annotations already indicate readOnly and non-destructive. Description adds useful context: requires content_only scope (not admin), and describes output fields like id, name, status, etc. No contradictions.

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?

Description is well-structured and front-loaded with the main purpose. Slightly lengthy but every sentence adds value; no redundancy.

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?

Despite no output schema, the description sufficiently describes the return format (array with count and details) and key fields. Also covers authentication requirements, making it complete for a list operation.

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

Parameters3/5

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

Both parameters are fully described in the schema (100% coverage). The description does not add additional meaning beyond what the schema provides, so baseline 3 is appropriate.

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?

Clearly states it returns all displays accessible to the user as an array with count and details. Distinct from siblings by explicitly mentioning alternative tools (get_display, send_html) for different purposes.

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?

Provides explicit guidance: use to discover display IDs before reading/modifying with get_display or send_html, and warns not to use for full details of one display.

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

list_organizationsList OrganizationsA
Read-onlyIdempotent
Inspect

Returns all organizations the authenticated user belongs to with their role, display count, member count and allocated slots. Use this to answer questions about the user's organizations, how many displays an organization has, or team membership. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
organizationsNo
Behavior3/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds that it returns role, member count, display count, and slots. No extra behavioral traits beyond what annotations imply, but adds useful output context.

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

Conciseness5/5

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

Two sentences: first states purpose and output, second gives usage and auth. No extraneous text, front-loaded with key 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?

Covers all aspects: purpose, output fields, usage context, and authentication. No output schema or required params, so description is sufficient for a straightforward list tool.

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

Parameters3/5

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

Input schema has 1 parameter with full description (100% coverage). Description mentions 'Requires authentication with at least content_only scope,' which adds auth context to the access_token parameter, but baseline is 3 due to high schema coverage.

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?

Description clearly states 'Returns all organizations the authenticated user belongs to with their role, display count, member count and allocated slots.' It specifies verb, resource, and output fields, differentiating it from siblings like get_organization (singular) and create_organization.

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

Usage Guidelines4/5

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

Explicitly says 'Use this to answer questions about the user's organizations, how many displays an organization has, or team membership.' Also notes auth requirement. Lacks explicit alternatives or when-not-to-use, but guidance is clear.

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

list_org_displaysList Organization DisplaysA
Read-onlyIdempotent
Inspect

Returns all displays in an organization with their real-time connection status, online/offline state, and license info. Use this for fleet monitoring. Requires content_only scope and organization membership.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
orgIdNo
orgNameNo
displaysNo
totalDisplaysNo
onlineDisplaysNo
Behavior4/5

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

Annotations declare the tool as read-only, idempotent, and non-destructive. The description adds value by noting real-time status updates and requiring specific scope/membership, which are beyond the annotations.

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

Conciseness5/5

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

The description is concise with two sentences that provide essential information without any redundant or unnecessary words.

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?

Despite lacking an output schema, the description details what is returned (connection status, online/offline state, license info) and covers prerequisites. It is sufficient for the tool's simplicity (2 parameters, no nesting).

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

Parameters3/5

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

The input schema has 100% description coverage, with both parameters clearly described. The description does not add additional meaning beyond the schema for the parameters, meeting 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 clearly specifies the verb ('returns'), resource ('displays in an organization'), and the specific data fields ('real-time connection status, online/offline state, and license info'). It distinguishes from sibling tools like 'list_displays' by scoping to organization level.

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

Usage Guidelines4/5

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

The description provides a specific use case ('fleet monitoring') and states prerequisites ('content_only scope and organization membership'). However, it does not explicitly exclude inappropriate contexts or compare with alternatives like 'list_displays'.

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

list_public_api_categoriesList Public API CategoriesA
Read-onlyIdempotent
Inspect

Lists all public-API categories with the number of APIs in each. Call this BEFORE search_public_apis when you want to offer the user a guided category pick (e.g. 'weather', 'finance', 'news'), or when the user asks 'what kinds of free APIs do you have?'. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalApisNo
categoriesNo
totalCategoriesNo
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds that no authentication is needed, which is a useful behavioral detail. Could include more about rate limits or return format, but given simplicity, it's adequate.

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

Conciseness5/5

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

Two well-structured sentences with no wasted words. Purpose and usage guidance are front-loaded, making it easy to scan quickly.

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 simple list tool with no parameters and no output schema, the description fully explains the return content (categories with counts) and when to use it. No gaps given the tool's simplicity.

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?

No parameters exist (schema coverage 100% with empty properties). Description correctly implies no input needed, so baseline 4 applies. No additional parameter info required.

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 clearly states the tool lists public-API categories with their API counts. It also distinguishes itself from the sibling tool search_public_apis by specifying when to call this one first.

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?

Explicitly instructs to call this before search_public_apis when offering a guided category pick or answering 'what kinds of free APIs do you have?'. Also notes no authentication required, aiding proper invocation.

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

list_store_categoriesList Store CategoriesA
Read-onlyIdempotent
Inspect

Lists all published agentView store categories (e.g. Gastronomie, Wartezimmer, Empfang, Smart Home) with localized titles, descriptions and template counts. Use this to narrow a subsequent search_store_templates call when the user asks for 'templates for a waiting room' or similar. No authentication required. Returns count, language and a categories array where each entry has slug, title, description, templateCount, heroIconKey and detailPath.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPreferred content language. Defaults to 'en'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
languageNo
categoriesNo
Behavior4/5

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

Annotations already provide readOnlyHint and destructiveHint, but description adds that no authentication is required and details the return structure (count, language, categories array with fields), which adds value beyond annotations.

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

Conciseness5/5

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

Two sentences efficiently convey purpose, usage, and return structure with no 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 simple read-only listing tool with one optional parameter and no output schema, the description fully covers return fields, use case, and authentication needs.

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

Parameters3/5

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

Schema covers 100% of the single parameter 'language' with description and default. Description mentions 'localized titles' implying language use but adds no significant new semantic detail beyond what schema provides.

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?

Description uses specific verb 'Lists' and resource 'published agentView store categories', clearly distinguishing it from sibling 'search_store_templates' by stating its purpose as narrowing subsequent searches.

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

Usage Guidelines4/5

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

Explicitly states when to use: when user asks for templates by category (e.g., 'waiting room'). Provides clear context but does not explicitly list alternative tools or when-not-to-use.

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

lock_displayLock DisplayA
Idempotent
Inspect

Locks a display so that content changes such as send_html, send_url and clear_display are rejected until unlock_display is called. Use this when the user wants to protect a display from accidental content changes. The display continues showing its current content. Requires admin scope. Returns id and locked (boolean true). To reverse this, use unlock_display.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to lock, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
lockedNo
Behavior5/5

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

Discloses that display continues showing current content, returns id and locked boolean, and requires admin scope. No contradiction with annotations (readOnlyHint false, idempotentHint true, destructiveHint false).

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

Conciseness5/5

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

Concise, front-loaded description with no unnecessary words. Each sentence adds value.

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?

Despite no output schema, describes return value (id, locked boolean). Covers behavior, prerequisites, and reversibility comprehensively.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description does not add extra meaning beyond the schema for parameters.

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?

Clearly states the tool locks a display to reject content changes, with specific examples (send_html, send_url, clear_display). Distinguishes from unlock_display and content-change tools.

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

Usage Guidelines4/5

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

Provides explicit use case: protect display from accidental content changes. Mentions reverse operation and admin scope requirement. Could add explicit when-not-to-use, but sufficient.

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

logoutLogoutA
Idempotent
Inspect

Clears the cached authentication identity from the current MCP session. Use this when the user wants to end the session or switch accounts. This does not revoke the underlying JWT token — it only removes the session-local cache. After logout, protected tools will require re-authentication. Returns loggedOut (boolean) and sessionBound (boolean).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
loggedOutNo
sessionBoundNo
transportAuthRequiredNo
Behavior1/5

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

The description claims to clear cached authentication identity, implying a state change, but annotations set readOnlyHint=true (indicating no state change). This contradiction directly violates the requirement to align with annotations.

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

Conciseness5/5

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

Four short sentences, each adding essential information. Front-loaded with core action, then usage context, then limitation, then return type. No wasted words.

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?

Given no parameters and no output schema, the description fully covers purpose, usage, behavior, return values, and side effects. The contradiction with annotations reduces reliability but the description itself is complete.

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?

No parameters exist in the schema, so description correctly adds no parameter info. Baseline score of 4 for zero-parameter tools.

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 explicitly states 'Clears the cached authentication identity from the current MCP session' with clear verb and resource. It distinguishes from sibling 'authenticate' by implying the opposite action.

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?

Explicitly states when to use: 'when the user wants to end the session or switch accounts.' Also clarifies what it does not do: 'This does not revoke the underlying JWT token', providing explicit exclusion guidance.

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

pair_by_codePair Display by CodeA
Destructive
Inspect

PREFERRED way to set up a physical display. Ask the user to open https://display.agentview.de on the target TV/screen, read the 6-character code, and share it. Then call this tool. This creates and pairs the display in one step — no orphaned or offline displays. Two modes: (1) New display — provide code + profile_name to create and pair in one step. This is the recommended default for first-time setup. (2) Rebind — provide code + target_display_id to move an existing display profile to new hardware. Call list_displays first to get the target_display_id. Always prefer this over create_display or create_org_display for physical devices. Use create_display/create_org_display only for pre-provisioning when the screen is not yet available. Requires admin scope. Returns profileId, name, linkedHardwareId and mode ('new' or 'rebind').

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe 6-character pairing code shown on the display (e.g. 'AB3K7F').
access_tokenNoOptional JWT access token for authentication.
profile_nameNoFriendly name for the display (required for new pairing, ignored for rebind). Example: 'Lobby Screen'.
target_display_idNoTo rebind: the existing display profile ID to switch to the new hardware. Omit for new display pairing.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
nameNo
profileIdNo
linkedHardwareIdNo
Behavior4/5

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

Annotations already indicate destructiveHint=true, but the description adds context: 'creates and pairs the display in one step — no orphaned or offline displays,' 'requires admin scope,' and details the workflow. This goes beyond the annotation by explaining what 'destructive' means in practice.

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 well-structured with bolded key terms, numbered steps, and clear sections. It is slightly verbose but every sentence adds essential context. No wasted words.

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

Completeness4/5

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

Given no output schema, the description explains the tool's effect (creates and pairs in one step) and covers prerequisites (admin scope), workflow, and error scenarios implicitly. It misses potential failure reasons or code expiration, but overall is comprehensive for a pairing tool.

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 description adds value by explaining the two modes (new vs rebind) and which parameters apply to each. It also provides a character set example for the code. The access_token parameter is described as optional JWT, which is sufficient.

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 clearly states it is the 'PREFERRED way to set up a physical display' and the 'DEFAULT for any ambiguous user request about creating, adding, or setting up a display.' It explicitly distinguishes from siblings like create_display by specifying when to use it and when to avoid it.

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?

It provides explicit instructions: use unless user explicitly asks for pre-provisioning without hardware or virtual/headless display. It names the alternative tool (create_display) and gives a clear workflow with numbered steps for both new pairing and rebind modes.

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

read_display_htmlRead Display HTMLA
Read-onlyIdempotent
Inspect

Reads the raw HTML source code currently shown on a display. Use this to inspect, modify or reuse existing content. Typical workflow: read_display_html to get the HTML, make changes, then send_html to push it back. Returns the complete HTML string plus metadata. If no live content is active, returns idle content if set. Requires content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
content_typeNoWhich content to read: 'live' (default) returns the active content, 'idle' returns the idle/default content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
htmlNo
nameNo
sourceNo
hasContentNo
htmlLengthNo
contentTypeNo
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds important details: authentication scope ('content_only'), return format (HTML string + metadata), and fallback behavior to idle/default HTML when no live content is active. No contradiction with annotations.

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

Conciseness5/5

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

The description is concise at 4 sentences, front-loaded with the primary purpose, and every sentence provides essential information without redundancy. The workflow and edge cases are efficiently presented.

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?

Despite lacking an output schema, the description adequately covers return values, edge cases (idle/HMTL fallback), and authentication requirements. All relevant behavioral aspects are addressed for this tool's complexity.

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%, but the description adds value by explaining the 'content_type' parameter options ('live' and 'idle') and the context of the return value, which helps agents understand parameter usage beyond the schema.

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 clearly states 'Reads the raw HTML source code that is currently shown on a display,' using a specific verb and resource. It distinguishes itself from siblings like 'get_display_content' and 'send_html' by focusing on raw HTML inspection and providing a typical workflow.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this when you want to inspect, modify or reuse the existing content' and outlines a typical workflow. However, it does not mention when to avoid using this tool in favor of others, such as using 'get_display_content' for non-HTML scenarios.

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

remove_display_from_orgRemove Display from OrganizationA
Destructive
Inspect

Removes a display from an organization, clearing its group assignment and all display grants. The display becomes unassigned. Requires admin scope and admin or owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
display_idYesThe display profile ID to remove.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
removedNo
displayIdNo
previousOrgIdNo
Behavior4/5

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

The description adds context beyond annotations by detailing that the operation clears group assignment and all display grants, and that the display becomes unassigned. This is consistent with the destructiveHint=true annotation and provides clear behavioral traits.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and contains no extraneous information. Every sentence is essential and earns its place.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, no output schema), the description adequately explains the effect and auth requirements. It could mention the return value or lack thereof, but this is not critical.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already describes all parameters clearly. The description does not add additional meaning beyond what the schema provides, meeting the baseline expectation.

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

Purpose4/5

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

The description clearly states the tool removes a display from an organization, clearing group assignment and grants, making it unassigned. This differentiates it from siblings like delete_display (which would delete the display entirely) and remove_display_grant (which only removes a single grant), but the distinction is implicit rather than explicit.

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

Usage Guidelines3/5

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

The description specifies required admin scope and admin or owner role, which are usage conditions. However, it does not provide explicit guidance on when to use this tool versus alternatives like remove_display_grant or delete_display, leaving the agent to infer from the description.

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

remove_display_grantRemove Display GrantA
Destructive
Inspect

Removes a user's access grant from a display within an organization. Requires admin scope and admin or owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
display_idYesThe display profile ID.
access_tokenNoOptional JWT access token for authentication.
target_user_idYesThe user ID whose grant to remove.

Output Schema

ParametersJSON Schema
NameRequiredDescription
removedNo
displayIdNo
targetUserIdNo
Behavior5/5

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

Description adds auth requirements (admin scope, admin/owner role) beyond annotations (destructiveHint: true). This is valuable behavioral context not present in structured data.

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

Conciseness5/5

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

Single sentence that is direct and to the point. Every word adds value, no redundancy.

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

Completeness4/5

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

Covers purpose and auth prerequisites adequately for a simple removal action. Could mention expected behavior if grant does not exist, but overall complete given tool complexity.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. Description does not add additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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?

Description clearly states the action ('Removes a user's access grant from a display within an organization'), using specific verb and resource. This distinguishes it from sibling tools like 'set_display_grant' or 'delete_display'.

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

Usage Guidelines4/5

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

Specifies required admin scope and admin/owner role, providing clear when-to-use context. Does not explicitly exclude alternatives or mention when not to use, but the context is helpful.

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

remove_memberRemove MemberA
Destructive
Inspect

Removes a member from an organization. Transfers their owned displays to a successor, unassigns their license allocations, and removes their display grants. Cannot remove the last owner. Requires admin scope and admin or owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
access_tokenNoOptional JWT access token for authentication.
target_user_idYesThe user ID of the member to remove.

Output Schema

ParametersJSON Schema
NameRequiredDescription
orgIdNo
removedNo
targetUserIdNo
displaysTransferredNo
Behavior5/5

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

Discloses side effects beyond annotations: transfers owned displays, unassigns license allocations, removes display grants. Annotations only indicate destructiveHint=true, so the description adds essential behavioral context. No contradiction.

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

Conciseness5/5

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

Three concise sentences: first states core action, second lists side effects, third gives constraints and requirements. No wasted words, front-loaded with purpose.

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?

Covers purpose, side effects, constraints, and authorization requirements comprehensively for a tool with 3 parameters and no output schema. Leaves no ambiguity about the operation's effects.

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

Parameters3/5

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

Input schema covers all 3 parameters with clear descriptions (100% coverage). The description adds no per-parameter details beyond the schema; it only explains the overall effect of the target_user_id parameter. Baseline of 3 is appropriate.

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 clearly states the verb 'Removes' and the resource 'member from an organization', and lists specific actions (transfers displays, unassigns licenses, removes grants). It distinguishes from sibling tools like invite_member and update_member_role by detailing the removal process and constraints.

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

Usage Guidelines4/5

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

Provides explicit prerequisites: 'Requires admin scope and admin or owner role' and a constraint: 'Cannot remove the last owner'. However, it does not explicitly state when not to use or compare to alternatives like delete_organization or other member management tools.

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

rename_displayRename DisplayA
DestructiveIdempotent
Inspect

Changes the friendly name of an existing display. Use this when the user wants to update only the display name without affecting its content or state. Requires admin scope. Returns id and the updated name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe new friendly display name. Non-empty string.
display_idYesThe 8-character alphanumeric display profile ID to rename, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
Behavior2/5

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

The description claims the tool does not affect content or state, but the annotation 'destructiveHint: true' contradicts this by implying potential data loss or destructive changes. Without resolving this inconsistency, the description misleads on behavioral impact.

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

Conciseness5/5

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

Two concise sentences, each carrying essential information without redundancy. The purpose is front-loaded, followed by usage context and output summary.

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

Completeness3/5

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

The description is complete for a simple rename operation, but the contradiction between the description and annotations (destructiveHint) undermines clarity. Without output schema, returning 'id and the updated name' is helpful, but the behavioral inconsistency reduces overall completeness.

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?

The input schema covers all 3 parameters with clear descriptions (100% coverage). The description adds value by noting the admin scope requirement (related to the access_token parameter), which is not in the schema's parameter descriptions.

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 clearly states the action ('Changes the friendly name') and the resource ('existing display'). It distinguishes itself from sibling tools like 'rename_display_category' and 'rename_organization' by specifying 'display'.

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 explicitly tells when to use this tool ('when the user wants to update only the display name without affecting its content or state') and mentions a prerequisite ('Requires admin scope'). This provides clear guidance.

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

rename_display_categoryRename Display CategoryA
Destructive
Inspect

Renames one personal display category by stable category ID. Existing assignments and grants keep working because they reference the category ID; only the category name/path changes. Requires display.manage capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_nameYesNew category name. The path segment is normalised by the server.
category_idYesCurrent category ID to rename.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
pathNo
colorNo
countNo
categoryIdNo
parentCategoryIdNo
Behavior4/5

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

Annotations already indicate destructiveHint=true, meaning the tool modifies data. The description adds value by clarifying that renaming does not break assignments or grants because they reference the stable ID. This context goes beyond what the annotations provide, though it could mention other side effects like permission requirements.

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

Conciseness5/5

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

The description consists of two short, focused sentences. The first sentence states the core action, and the second adds important behavioral context. No redundant words or filler.

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

Completeness4/5

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

Given the tool's simplicity and the absence of an output schema, the description covers the key behavioral aspect (non-breaking rename). However, it could mention return type or error conditions (e.g., invalid ID). For a rename tool with many siblings, this is mostly complete but has a minor gap.

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

Parameters3/5

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

The input schema has 100% description coverage for all parameters, so the baseline is 3. The description does not add new information about the parameters themselves; it only provides behavioral context. Thus, it meets adequacy without exceeding 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 clearly states the tool renames a personal display category by ID, with the specific verb 'renames' and resource 'display category'. It also distinguishes this from deletion by noting that assignments and grants keep working because they reference the stable ID, which differentiates it from siblings like delete_display_category.

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

Usage Guidelines3/5

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

The description implies the tool is for renaming without breaking references, but it does not explicitly provide when-to-use or when-not-to-use guidance. It lacks comparison to alternatives like create_display_category or set_display_categories_for_display, so an agent has to infer usage context.

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

rename_organizationRename OrganizationA
DestructiveIdempotent
Inspect

Renames an existing organization. Requires admin scope and admin or owner role in the organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe new name for the organization.
org_idYesThe organization ID to rename.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNo
orgIdNo
Behavior4/5

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

Discloses necessary authentication and role requirements, which goes beyond the annotations' binary hints. Adds value despite annotations already indicating destructive and non-read-only nature.

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

Conciseness5/5

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

Two clear, front-loaded sentences with no wasted words; every sentence serves a purpose.

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

Completeness4/5

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

For a simple rename tool with no output schema, the description adequately covers purpose, authorization, and parameter usage, though it does not describe the return value.

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

Parameters3/5

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

Input schema covers all parameters with descriptions at 100%, so the description adds no additional meaning beyond stating the action and requirements.

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?

Specifically states the action 'renames' and the resource 'organization', clearly distinguishing it from siblings like 'create_organization' or 'delete_organization'.

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

Usage Guidelines4/5

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

Provides explicit authorization requirements (admin scope, admin/owner role), giving clear context for when the tool is appropriate, though it does not explicitly mention when not to use it or list alternatives.

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

revoke_api_keyRevoke API KeyA
Destructive
Inspect

Permanently revokes an API key. This is irreversible — the key will immediately stop working. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesThe ID of the key to revoke (from list_api_keys).
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyIdNo
revokedNo
Behavior5/5

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

Adds critical behavioral context beyond annotations: irreversibility, immediate effect, and admin scope requirement. No contradiction with destructiveHint=true.

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

Conciseness5/5

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

Two sentences, no unnecessary words. Front-loaded with key action and consequences. Highly efficient.

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 simple mutation tool, covers purpose, behavior, and requirements. No output schema needed; return value is implied success/failure.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. Description adds no extra parameter details, so baseline 3 is appropriate.

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?

Clearly states it permanently revokes an API key, with emphasis on irreversibility and immediate effect. Distinguishes from sibling tools like create_api_key and list_api_keys.

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

Usage Guidelines4/5

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

Implicitly clear when to use, but lacks explicit alternatives or when-not to use. Could mention that list_api_keys provides the key_id.

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

search_public_apisSearch Public APIsA
Read-onlyIdempotent
Inspect

Searches a curated catalog of 600+ free, public APIs that require no authentication and work over HTTPS — ideal for embedding live data in display HTML pages via fetch(). Covers 47 categories including weather, news, finance, sports, images, food, entertainment, science, geocoding and more. Use this when generating HTML that needs live data from the internet. Returns matching APIs with documentation links, CORS support info and ready-to-use fetch() code hints. Use list_public_api_categories first if you want to offer the user a category-driven menu before searching. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return, 1-20. Defaults to 10.
queryNoFree-text search terms. Examples: 'weather forecast', 'random quotes', 'cat pictures', 'bitcoin price', 'jokes'.
categoryNoFilter by category ID. Examples: 'weather', 'finance', 'animals', 'food-drink', 'sports-fitness', 'news', 'entertainment'. Use 'all' or omit for all categories.
cors_onlyNoWhen true, only return APIs with confirmed CORS support (safe for browser-side fetch in HTML). Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
queryNo
resultsNo
categoryNo
corsOnlyNo
totalCatalogApisNo
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, confirming a safe, read-only operation. The description adds valuable behavioral context: returns documentation links, CORS support info, and fetch code hints; no authentication required; curated catalog of 600+ APIs. No contradictions.

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

Conciseness5/5

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

Five sentences, each purposeful. The description is front-loaded with the main purpose, followed by scope, use case, return details, and constraints. No redundant or extraneous information; every sentence earns its place.

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?

Despite lacking an output schema, the description sufficiently describes what is returned (documentation links, CORS support, fetch code hints). It covers the domain (600+ APIs, 47 categories), parameterization (limit, query, category, cors_only), and use case. No gaps remain for a search tool.

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 description coverage is 100%, so parameters are fully documented. The description adds value by contextualizing parameters (e.g., cors_only ensures safe browser-side fetch, query examples like 'weather forecast') and explaining the overall catalog scope, though it does not add new parameter details beyond the schema.

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 clearly states it searches a curated catalog of 600+ free public APIs for embedding in HTML via fetch. It specifies key attributes (no auth, HTTPS, 47 categories) and distinguishes itself from sibling tools like list_public_api_categories and search by emphasizing the use case of generating HTML with live data.

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool: 'when generating HTML that needs live data from the internet.' It provides context for appropriate use (public APIs, no auth, HTTPS) but does not explicitly state when not to use or mention alternatives. However, the sibling tools are different enough that the usage context is clear.

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

search_store_templatesSearch Store TemplatesA
Read-onlyIdempotent
Inspect

Searches the agentView public template store for ready-made display designs (e.g. 'Zahnarzt-Wartezimmer', 'Bistro warm', 'Empfang'). Each template is a polished HTML design a user can push to one of their Türschild / digital-signage displays. Use this when the user describes a use case and wants to pick a pre-built design instead of having you generate raw HTML. Returns total, offset, limit, language and a templates array with slug, title, description, category, optional suite (design family), tags, theme, designStyle, placement, previewImageUrl, detailPath, previewPath, featured and publishedAt. No authentication required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of templates to return. Defaults to 10.
queryNoFree-text search over template title, description and tags. Examples: 'Zahnarzt', 'italienisches Bistro', 'conference room'.
suiteNoOptional design-family suite slug (e.g. 'bistro-warm', 'sushi-minimal').
offsetNoOffset into the filtered result set for pagination. Defaults to 0.
categoryNoOptional category slug to restrict the search (English kebab-case, e.g. 'gastronomie', 'waiting-room').
languageNoPreferred content language. Defaults to 'en'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitNo
totalNo
offsetNo
languageNo
templatesNo
Behavior5/5

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

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds significant value by detailing the return structure (total, offset, limit, language, templates array with fields) and stating 'No authentication required'. No contradiction.

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 front-loaded with purpose and examples, but includes a detailed list of return fields which adds length. However, it is well-structured and every sentence adds value. Could be slightly more concise but still effective.

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?

No output schema exists, but the description fully details the return structure. It covers use case, prerequisites, and links to related tools (get_store_template_details). For a search tool with 6 parameters, it is sufficiently complete.

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 baseline is 3. Description adds examples for query, explains category and suite slugs, and notes defaults. This provides meaning beyond the schema field descriptions.

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 clearly states it searches the public template store for ready-made display designs, with specific examples ('Zahnarzt-Wartezimmer', 'Bistro warm', 'Empfang'). It distinguishes from siblings like get_store_template_details and send_store_template_to_display, which are mentioned for further steps.

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

Usage Guidelines4/5

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

Explicitly states when to use: 'when the user describes a use case and wants to pick a pre-built design instead of having you generate raw HTML'. It also notes no authentication required. However, it does not explicitly state when not to use, though the context implies alternatives.

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

send_htmlSend HTMLA
Destructive
Inspect

Pushes raw HTML to one display, replacing current content. Prefer send_url only when the user explicitly wants an external web page. Include a human-readable description so get_display_content can summarize intent without reading raw HTML. Before complex content, call get_display_capabilities to match the real browser/runtime. When no design system is supplied, use premium digital-signage quality: full-screen layout, strong hierarchy, refined typography, robust fallback data, and no action buttons unless touch is requested. Exactly one of html or base64_html is required. Requires content_only scope and display management access. Returns id, name, duration, file and version.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoComplete HTML document or fragment to render on the display. Mutually exclusive with base64_html — provide exactly one.
tokenNoDisplay-specific preview token for unauthenticated demo-sign access. This is NOT the auth/JWT token. Omit this for normal authenticated usage.
durationNoHow long the content stays on the display in seconds. 0 means indefinite (content persists until replaced). Defaults to 0 when omitted.
display_idYesThe 8-character alphanumeric display profile ID to send content to, e.g. 'ABCD1234'.
base64_htmlNoBase64-encoded HTML string (standard base64, not base64url). Use this instead of html only when the HTML contains characters that cannot survive JSON string transport. Mutually exclusive with html.
descriptionYesMandatory short human-readable description of the HTML upload (1-1000 characters), e.g. 'Weekly KPI dashboard with revenue and uptime'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically. This is different from 'token' which is a display-specific preview token.
content_descriptionNoOptional alias for description. If both are provided, description wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
fileNo
nameNo
versionNo
durationNo
currentContentDescriptionNo
Behavior4/5

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

Annotations already indicate destructiveHint=true. The description adds behavioral details like asset caching behavior, mutual exclusivity of html and base64_html, and mentions the return fields, going beyond annotations without contradicting them.

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 detailed but well-structured, front-loaded with the core purpose, and each sentence provides value. Slightly less concise due to thorough guidelines, but no wasted content.

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?

Given the tool's complexity (9 parameters, no output schema), the description covers all critical aspects: asset workflow, caching, authentication, output fields, quality expectations, and references to related tools.

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%, but the description adds meaningful context beyond schema definitions, such as the distinction between 'token' and 'access_token', asset embedding examples, and the mutual exclusivity constraint.

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 clearly states it sends HTML content to a display, with a specific verb and resource. It distinguishes itself from the sibling tool 'send_url' by stating preference rules.

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?

Provides explicit guidance on when to use this tool over alternatives (prefer over send_url), prerequisites (upload assets first, call get_display_capabilities), and recommendations (include content_description). Also specifies authentication scope.

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

send_store_template_to_displaySend Store Template to DisplayA
DestructiveIdempotent
Inspect

Installs a published store template onto one of the authenticated user's displays. The server materializes the template HTML, auto-creates any required data slots (reusing existing slots from a prior install when possible) and publishes the result so the Türschild updates within seconds. Optional data_slot_overrides bake per-slot JSON directly into the install so a 'show my daily menu' flow does not need a second set_data_slot call. Requires authentication with at least content_only scope, control access to the target display, and (for API-key callers) the display.send capability. Errors: 'template_not_found', 'display_not_found', 'access_denied', 'slot_install_failed', 'storage_quota_exceeded', 'invalid_slot_override', 'publish_failed'. Always call get_store_template_install_options first to know which slots the template needs.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTemplate slug to install, e.g. 'bistro-warm-door'. Must be a currently published template.
display_idYesDisplay profile ID (8-char alphanumeric) from list_displays or get_store_template_install_options.
access_tokenNoOptional JWT access token.
idempotency_keyNoOptional opaque key (max 128 chars) to make this install retry-safe. If a previous successful install for the same (user, display, idempotency_key) tuple exists within 24 hours, the cached result is returned without re-publishing. Use this when an MCP client may retry the call after a network timeout (e.g. ChatGPT and other LLM hosts retry tool calls automatically) so the user doesn't see the display flicker through two near-identical installs. Recommended format: a UUID generated client-side per user request.
session_request_idNoOptional session request ID from create_auth_session. Preferred over access_token.
data_slot_overridesNoOptional { key: value } map keyed by data-slot key (see requiredDataSlots). Each value is JSON payload to install into that slot — either a string of raw JSON or an inline object/array. Unknown keys are silently dropped; malformed JSON fails with invalid_slot_override. Per-slot payload capped at 64 KiB, max 64 overrides per call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
fileNameNo
displayIdNo
versionIdNo
templateSlugNo
overrideCountNo
installedSlotsNo
contentVersionIdNo
Behavior5/5

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

Beyond annotations (destructiveHint=true), description details materialization, auto-creation of data slots with reuse, publication, and update timing. Also specifies authentication scope and capabilities needed, aligning with annotations without contradiction.

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?

Descriptive but well-structured, front-loading the main action. Could be slightly trimmed, but every sentence adds value. Minor redundancy in listing return fields that could be inferred.

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?

Thorough for a complex tool with 5 params and no output schema: explains return fields, errors, prerequisites, and behavioral details. Completely compensates for lack of output schema.

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?

Adds significant meaning beyond input schema: for data_slot_overrides provides example, size cap (64 KiB), and behavior of unknown keys/malformed JSON. References prerequisite for slug and display_id. Schema description coverage is 100%, but description enriches it.

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 clearly states the tool installs a published store template onto a display, with specific verb 'install' and resource 'store template onto display'. It distinguishes from sibling tools like get_store_template_install_options by mentioning it as a prerequisite.

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?

Explicitly instructs to call get_store_template_install_options first to know required slots and targetable displays. Also explains when to use data_slot_overrides for dynamic JSON generation, and lists specific error types.

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

send_urlSend URLA
Destructive
Inspect

Loads a web page by URL on a display using a full-page iframe, immediately replacing whatever is currently shown. Use this when the user wants to show an external website, dashboard or web app on a display. Provide content_description whenever available so get_display_content can communicate intent without forcing read_display_html. The URL must be an absolute HTTP or HTTPS address. Check get_display_capabilities first to confirm connectivity and browser/runtime support before relying on a remote page. Use this only when the external page already has the desired design quality; otherwise prefer send_html and load render_premium_display_html or read agentview://public/design-system so you can generate a premium display-native experience yourself. Requires authentication with at least content_only scope. Returns id, name, duration, file and version.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe absolute HTTP or HTTPS URL to load on the display. Example: 'https://example.com/dashboard'.
durationNoHow long the content stays on the display in seconds. 0 means indefinite. Defaults to 0.
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
content_descriptionNoOptional human-readable summary of what this URL content is about (recommended).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
fileNo
nameNo
versionNo
durationNo
currentContentDescriptionNo
Behavior4/5

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

Annotations set `destructiveHint: true` and `readOnlyHint: false`. The description adds that the tool 'immediately replaces whatever is currently shown', confirms URL must be absolute HTTP/HTTPS, and requires authentication with `content_only` scope. This goes beyond annotations, though it could more explicitly state the destructive nature.

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

Conciseness5/5

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

The description is a single focused paragraph of six sentences. Each sentence adds distinct value: core action, usage context, parameter advice, URL constraints, prerequisites, return fields. No redundant or unnecessary content.

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?

Although there is no output schema, the description explicitly lists the return fields (id, name, duration, file, version). It also covers the main action, preconditions, authentication scope, and important parameter advice, making it self-contained for an agent to use 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 description coverage is 100%, so each parameter is already well-documented. The description adds value by explaining the purpose of `content_description` in the larger workflow and the need to check `get_display_capabilities` before use, but these are not parameter-specific details.

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 specifies a concrete action ('Loads a web page by URL on a display using a full-page iframe, immediately replacing whatever is currently shown'), clearly distinguishing it from siblings like `send_html`. It also explains when to use `content_description` for integration with `get_display_content`.

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 explicitly states when to use this tool ('when the user wants to show an external website, dashboard or web app on a display') and provides a prerequisite ('Call get_display_capabilities first to confirm connectivity'). It also advises on using `content_description` for better behavior in `get_display_content`.

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

set_data_slotSet Data SlotA
DestructiveIdempotent
Inspect

Creates or updates a mutable JSON data slot (max 2 MB). Slug is stable; reusing it updates in place. The public read URL uses a separate server-generated PublicId, so the slug is not itself a secret URL. type='value' stores JSON verbatim; type='aggregate' stores a composite definition with sources such as {slot:'name', as?:'alias'} or {prefixMatch:'agent-'} for dynamic inclusion. Aggregates allow up to 32 sources and at most one prefixMatch, and sources must stay in the same personal/group scope. Requires content scope. Returns slug, readUrl metadata, size and timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStable slug for the data slot. Must match ^[A-Za-z0-9_-]{8,64}$. Same slug on a later call updates the existing slot. Slug stays exactly as supplied; the public URL uses a separate server-generated PublicId so the slug itself is never sensitive.
typeNoSlot kind. 'value' (default) stores 'content' verbatim. 'aggregate' stores 'content' as a composite-slot definition. Immutable after creation.
labelNoHuman-readable label (max 200 chars). Required when creating a new slot; optional on update.
contentYesJSON content to store. For value slots: any valid JSON value up to 2 MB. For aggregate slots: a definition object { sources: [{slot,as?} | {prefixMatch}], onMissing?, onInvalidJson?, includeMeta?, staleAfterMs?, output? }.
group_idNoGroup/organization ID for shared group slots. Omit for personal slots.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugNo
typeNo
labelNo
groupIdNo
readUrlNo
sizeBytesNo
updatedAtNo
Behavior4/5

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

Annotations indicate destructiveHint=true and idempotentHint=true. The description adds details about authentication requirements, aggregate slot resolution on read, slug scoping, and immutability of slot type. These go beyond annotations without contradiction.

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 relatively long but well-structured. It starts with the core purpose, then covers slugs, then slot types. Each sentence adds necessary context. Minor redundancy could be trimmed but overall efficient.

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

Completeness4/5

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

Given the tool's complexity (two slot kinds, scoping, authentication, 6 parameters, no output schema), the description covers essential aspects: read URL format, aggregate definition, limitations, and response content. It lacks explicit return value details but mentions a read URL in response.

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%. The description adds meaning by explaining the difference between 'value' and 'aggregate' types, detailing the aggregate definition document shape, and clarifying slug uniqueness and human-readability. It also mentions the 2 MB limit.

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 clearly states it 'Creates or updates a mutable JSON data slot (max 2 MB).' This specific verb+resource pair distinguishes it from siblings like 'delete_data_slot' and 'get_data_slot'.

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

Usage Guidelines4/5

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

The description explains when to use type='aggregate' for composite slots (JSON collections) and when to use default. It also notes type immutability and scope requirements. However, it does not explicitly state when not to use the tool or compare to alternatives.

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

set_display_categories_for_displaySet Display Categories For DisplayA
DestructiveIdempotent
Inspect

Replaces the caller's personal category assignments on one display with the provided category ID list. Empty array clears the caller's assignments. This only affects the caller's personal category scope and never deletes another manager's organization categories on shared displays. Requires display.manage capability.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID.
access_tokenNoOptional JWT access token for authentication.
category_idsYesArray of category IDs to set on the display. Empty array clears assignments.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
displayIdNo
categoryIdsNo
Behavior4/5

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

The description discloses key behaviors: replaces existing personal assignments, accepts an array, empty array clears. This adds context beyond annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=true) by clarifying the scope ('personal' and 'on one display'). No contradictions.

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

Conciseness5/5

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

The description is a single sentence that is concise, front-loaded, and free of unnecessary words. Every element contributes to understanding.

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

Completeness3/5

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

The description covers the core operation but omits details like return value (no output schema), error handling, authentication requirements (though access_token parameter hints at it), and the effect of invalid category IDs. While adequate for a simple set operation, it leaves some gaps.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds no additional meaning beyond the schema's description of 'category_ids' (array to set). Baseline 3 is appropriate as no extra parameter details are provided.

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 explicitly states the action ('replaces'), the resource ('caller's personal category assignments on one display'), and the effect ('with provided category ID list, empty array clears'). It clearly distinguishes from sibling tools like bulk_assign_display_category by specifying personal assignments only.

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

Usage Guidelines3/5

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

The description implies usage context (setting personal categories for a display) but does not provide explicit guidance on when to use this tool versus alternatives like bulk_assign_display_category or list_display_categories. No 'when not to use' or prerequisites are mentioned.

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

set_display_embeddable_originsSet Display Embeddable OriginsA
DestructiveIdempotent
Inspect

Sets the optional origin allowlist that restricts which third-party websites may embed this display via /display-embed/{profileId}. Only effective when the display's privacy_mode is 'Public'; private displays reject the embed route entirely regardless of this setting. Pass an empty array to clear the allowlist so public displays can be embedded from any origin. Pass an array like ['https://example.com'] to lock embedding to those specific origins plus agentView's own domains and the ChatGPT widget host. Requires admin scope and is audit-logged.

ParametersJSON Schema
NameRequiredDescriptionDefault
originsYesOrigin strings allowed to embed this display. Pass an empty array to allow all origins for Public displays. Each entry must be a full HTTPS origin like 'https://example.com'.
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session. Preferred over access_token.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
changedNo
embeddableOriginsNo
Behavior4/5

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

Adds value beyond annotations by explaining audit-logging, return fields, and edge cases. Annotations already indicate destructive hint, but description elaborates on effects.

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

Conciseness5/5

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

Three sentences, well-structured: main purpose, condition with examples, and return info. No redundant text.

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

Completeness4/5

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

Covers preconditions, edge cases, and return fields despite no output schema. Optional auth parameters are not explained but schema covers them.

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 covers 100% of parameters, but description adds context about empty array behavior and always-allowed domains, enhancing understanding.

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 clearly states it sets an origin allowlist for embedding, using specific verbs and resource. It distinguishes itself from siblings by focusing on a unique functionality.

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

Usage Guidelines4/5

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

Provides explicit condition (only effective in Public privacy mode) and examples (empty array vs specific origins). Lacks explicit 'when not to use' but condition implies for Private displays it's irrelevant.

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

set_display_grantSet Display GrantA
DestructiveIdempotent
Inspect

Grants a specific user access to a specific display within an organization. Creates or updates the grant. The target user must be a member of the organization. Access levels: 'view' (see status) or 'control' (send content). Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
display_idYesThe display profile ID.
access_levelYesAccess level: 'view' or 'control'.
access_tokenNoOptional JWT access token for authentication.
target_user_idYesThe user ID to grant access to.

Output Schema

ParametersJSON Schema
NameRequiredDescription
grantedNo
displayIdNo
accessLevelNo
targetUserIdNo
Behavior4/5

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

The description discloses that the tool creates or updates a grant, requires admin scope, and lists access levels. This adds context beyond annotations, which already indicate idempotent and destructive hints.

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

Conciseness5/5

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

The description is concise with two sentences, no fluff, and front-loads the key action. Every sentence is informative.

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

Completeness4/5

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

Given no output schema, the description adequately covers purpose, parameters, and prerequisites. It could mention return values or error handling, but the core information for tool selection is present.

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?

With 100% schema coverage, the description still adds value by explaining access levels ('view' or 'control') and the prerequisite of the target user being an org member, beyond what the schema provides.

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 clearly states the tool grants a specific user access to a specific display, with verbs 'creates or updates' and lists access levels. It distinguishes from siblings like remove_display_grant.

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

Usage Guidelines4/5

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

The description provides clear context for use: granting access, requiring the target user to be an organization member, and specifying admin scope. However, it does not explicitly say when not to use or mention alternatives.

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

set_display_privacy_modeSet Display Privacy ModeA
DestructiveIdempotent
Inspect

Sets the per-display privacy mode that caps how long share-links can live. 'Private' (default for new displays) caps share-link TTL at 1 hour — choose this for displays that might show PII. 'Public' opts the display in to digital-signage mode and lifts the cap to 24 hours. Flipping is audit-logged. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
privacy_modeYesDesired privacy mode.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
changedNo
privacyModeNo
previousPrivacyModeNo
shareLinkMaxTtlSecondsNo
Behavior4/5

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

Annotations indicate readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds behavioral context beyond these: share-link TTL caps (1 hour vs 24 hours), audit logging for Public flips, and that Private is GDPR-by-default. No contradictions.

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

Conciseness5/5

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

Three sentences efficiently convey purpose, usage, behavioral details, and return information. No redundant language; each sentence adds essential 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?

Description covers purpose, when to use, behavioral effects (TTL caps, audit log), required admin scope, and return fields (id, name, privacyMode, previousPrivacyMode, shareLinkMaxTtlSeconds, changed flag). This is complete for a mutation tool with no output schema.

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?

With 100% schema coverage, the description still adds meaning: it explains the effect of each privacy mode value and the implications for share-link TTL. It also clarifies the optional nature of access_token implicitly through context.

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 clearly states the tool sets per-display privacy mode affecting share-link TTL, distinguishing between Private and Public modes with specific use cases. This differentiates it from sibling tools like configure_display or set_display_categories_for_display.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use Private (for PII, GDPR default) and Public (for digital signage), and notes that flipping to Public is audit-logged. It also mentions the admin scope requirement. However, it does not explicitly state when not to use this tool compared to alternatives.

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

set_idle_contentSet Idle ContentA
DestructiveIdempotent
Inspect

Sets or clears the default idle content for a display. Idle content is shown whenever the display has no active live content. Provide html OR url to set idle content (mutually exclusive — url is wrapped in a full-page iframe document), or omit both to clear idle content. Provide content_description to make later state reads easier for agents. When the display is currently idle (no active live content), the new idle is pushed to the display immediately; otherwise it stays dormant until the live content ends. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoAbsolute HTTP or HTTPS URL to use as idle content; the server wraps it in a sandboxed full-page iframe. Mutually exclusive with html.
htmlNoComplete HTML to use as idle content. Omit this (and url) to clear custom idle content. Mutually exclusive with url.
display_idYesThe 8-character alphanumeric display profile ID, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.
content_descriptionNoOptional human-readable summary for the idle/default content.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
idleFileNo
idleVersionNo
idleContentClearedNo
Behavior5/5

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

Annotations indicate destructiveHint=true and idempotentHint=true; the description adds behavioral details: it sets or clears content, reverts to system default, requires admin scope, and returns specific metadata. No contradictions with annotations.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the primary action, and uses clear, concise language without redundancy. Every sentence adds meaningful 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?

Given the schema coverage (100%) and that the tool has no output schema, the description adequately covers purpose, usage guidelines, parameters, and return values. It references admin scope, conditions for idle content, and metadata returns, making it complete for an informed agent.

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?

Input schema has 100% coverage and descriptions for all parameters. The tool description adds value by explaining the effect of omitting html (clears idle content) and the purpose of content_description (improves later state reads), which enhances understanding beyond the schema.

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 clearly states that the tool 'Sets or clears the default idle content for a display.' It specifies the conditions under which idle content is shown and explicitly distinguishes from related tools like clear_display by mentioning it in the context.

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 provides explicit guidance: when to set vs. clear (omit html to clear), when idle content is shown (after clear_display, duration expiry, first connect), and additional context like requiring admin scope and using content_description for state reads.

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

set_org_connectivitySet Org ConnectivityA
DestructiveIdempotent
Inspect

Sets the default connectivity mode and global whitelist for an organization. These settings apply to all displays in the org unless overridden at the display level. Use this when an org admin wants to declare their network topology. Requires admin scope and Org-Admin role.

ParametersJSON Schema
NameRequiredDescriptionDefault
org_idYesThe organization ID.
access_tokenNoOptional JWT access token for authentication.
global_whitelistNoOrg-wide whitelist of allowed URL patterns. Pass an empty array to clear.
default_connectivity_modeNoDefault connectivity mode for all org displays.

Output Schema

ParametersJSON Schema
NameRequiredDescription
orgIdNo
globalWhitelistNo
defaultConnectivityModeNo
Behavior4/5

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

Disclosures that settings apply to all displays unless overridden at display level, and requires specific role. Annotations indicate idempotent and destructive hints, which are coherent with the description. No contradiction.

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

Conciseness5/5

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

Three sentences efficiently convey purpose, usage scenario, and prerequisites. No redundant information.

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

Completeness4/5

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

Given the absence of an output schema, the description adequately covers effect and prerequisites. Could mention that settings are persistent, but overall complete for the tool's complexity.

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?

Adds meaning beyond schema by clarifying how to clear the global whitelist and listing valid values for default_connectivity_mode. Schema coverage is 100%, so the description provides extra context.

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 clearly states the verb 'Sets' and resource 'default connectivity mode and global whitelist for an organization'. It distinguishes itself from sibling tools by focusing on org-wide settings, not individual display or other configurations.

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

Usage Guidelines4/5

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

Provides explicit when-to-use guidance with an example network topology scenario. Mentions required admin scope and Org-Admin role. Could include when not to use, but purpose is sufficiently specific.

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

test_display_contentTest Display ContentA
Read-onlyIdempotent
Inspect

DRY-RUN validator for HTML payloads. Pushes the HTML through agentView's size + description checks WITHOUT touching any real display. Use this when an LLM has just generated HTML and you want to confirm it is well-formed and within limits BEFORE risking a real send_html call (e.g. after composing a complex layout, or before broadcasting to many displays). No display_id is needed; the response carries simulated=true and a safe size summary. Capped at 1 MB. Authenticated, but no display-scope check — only verb-level enforcement.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlNoComplete HTML document to validate. Mutually exclusive with base64_html — provide exactly one.
base64_htmlNoBase64-encoded HTML payload. Mutually exclusive with html.
descriptionYesShort human-readable description of what the HTML represents (1-1000 chars). Same validation rules as send_html.
access_tokenNoOptional JWT access token for authentication.
session_request_idNoOptional session request ID returned by create_auth_session.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
successNo
displayIdNoAlways 'test' — no real display is touched.
simulatedNo
sizeBytesNo
descriptionNo
displayNameNo
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds context by explaining the validation checks (size and description), the simulated flag in the response, and the 1 MB cap, enhancing transparency and providing details beyond annotations without contradiction.

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

Conciseness5/5

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

The description is concise with five sentences, each adding value: summary, behavior, usage scenario, response hint, and limit. It is front-loaded and free of redundancy, earning top marks for structure.

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

Completeness4/5

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

For a validation tool with no output schema, the description covers purpose, behavior, constraints, and usage guidance. It mentions the simulated response but could detail the exact validation outcome (success/error) more. Nonetheless, it is fairly complete.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. It does not contribute significantly beyond the schema, merely implying that no display_id is needed. Baseline 3 is appropriate as the schema already handles parameter documentation.

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 clearly defines the tool as a DRY-RUN validator for HTML payloads, specifying the action (validation without real display), the resource (HTML), and distinguishing it from sibling tools like send_html by noting no display_id is needed and the response carries simulated=true.

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 explicitly states when to use (after LLM HTML generation, before send_html) and what not to do (no display_id needed, capped at 1 MB). It provides clear context and alternatives, making it easy for an agent to decide when to invoke this tool.

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

unassign_licenseUnassign LicenseA
DestructiveIdempotent
Inspect

Removes a premium license token from a display, restoring the watermark and ad eligibility. The license returns to the user's available pool. Requires admin scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to remove a license from, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
badgeModeNo
freeLicensesNo
isPremiumAssignedNo
Behavior4/5

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

Annotations indicate destructiveHint=true and idempotentHint=true. The description adds valuable behavioral context: restoring watermark and ad eligibility, returning license to the pool, and listing specific return fields. No contradictions with annotations.

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

Conciseness5/5

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

The description is concise with two sentences that are front-loaded with the core action. No superfluous words; every sentence adds essential information.

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

Completeness4/5

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

Lacking an output schema, the description compensates by listing return fields. It covers side effects and prerequisites (admin scope). It could mention error scenarios or state before/after, but overall it is reasonably complete for a mutation tool.

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

Parameters3/5

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

Input schema coverage is 100% with adequate descriptions for both parameters. The description adds minimal extra meaning beyond the schema, such as the return fields, but doesn't elaborate on parameter behavior or dependencies.

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 clearly states it removes a premium license from a display and specifies the effects (watermark, ad eligibility, license pool return). The verb 'removes' combined with the resource 'license' is specific, and the tool is well-distinguished from related siblings like assign_license.

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

Usage Guidelines4/5

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

The description mentions 'Requires admin scope,' which gives a clear usage condition. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., assign_license or allocate_licenses), so it isn't a perfect 5.

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

unlock_displayUnlock DisplayA
Idempotent
Inspect

Unlocks a previously locked display so that content changes (send_html, send_url, clear_display) are accepted again. Use this when the user wants to resume managing a locked display. Requires admin scope. Returns id and locked (boolean false). To lock again, use lock_display.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_idYesThe 8-character alphanumeric display profile ID to unlock, e.g. 'ABCD1234'.
access_tokenNoOptional JWT access token for authentication. Pass the token returned by get_auth_session when your MCP client does not send it as an Authorization: Bearer HTTP header automatically.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
lockedNo
Behavior4/5

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

Annotations provide idempotentHint=true, readOnlyHint=false. Description adds what action is taken (unblocking content changes) and return values (id and locked boolean false). No contradictions.

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

Conciseness5/5

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

Two sentences, no fluff. Essential information front-loaded: purpose, usage hint, permission, and return value. Efficient.

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?

With no output schema, description explains return values. All necessary context for a simple unlock tool is present: what it does, when to use, permissions, and result. Good coverage.

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

Parameters3/5

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

Schema covers 100% of parameters with clear descriptions. The description provides an example for display_id but adds minimal value beyond the schema.

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 clearly states the action (unlocks) and the resource (display) with specific purpose: enabling content changes after lock. It distinguishes from sibling lock_display by mentioning its counterpart.

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

Usage Guidelines4/5

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

Explicitly states when to use ('when the user wants to resume managing a locked display') and notes required admin scope. Does not explicitly exclude other cases, but context is clear.

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

update_assetUpdate AssetA
DestructiveIdempotent
Inspect

Updates the name and/or description of an existing asset. The URL does not change. At least one of name or description must be provided. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew filename for the asset.
asset_idYesThe asset ID to update.
descriptionNoNew description for the asset.
access_tokenNoOptional JWT access token for authentication.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
nameNo
assetIdNo
descriptionNo
Behavior3/5

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

Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds only that URL does not change, offering minimal extra behavioral context beyond structured data.

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

Conciseness5/5

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

Two concise sentences, front-loaded with action, no unnecessary words. Every sentence earns its place.

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

Completeness3/5

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

Without output schema, description should mention return value or success indication. Lacks error handling or side effects, but adequately covers core purpose and preconditions.

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%. Description adds a crucial constraint (at least one of name/description required) not present in schema, but offers no deeper semantics for access_token.

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?

Description clearly states the tool updates an existing asset's name and/or description, specifies what doesn't change (URL), and differentiates from sibling tools like rename_display or delete_asset.

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

Usage Guidelines4/5

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

Provides important preconditions: at least one field must be provided and requires authentication with content_only scope. Does not explicitly compare to alternatives but context is adequate.

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

update_member_roleUpdate Member RoleA
Destructive
Inspect

Changes a member's role within an organization. Cannot change your own role or the owner's role. Requires admin scope and admin or owner role.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesThe new role. Valid roles depend on organization type (e.g. 'admin', 'manager', 'viewer').
org_idYesThe organization ID.
access_tokenNoOptional JWT access token for authentication.
target_user_idYesThe user ID of the member whose role to change.

Output Schema

ParametersJSON Schema
NameRequiredDescription
orgIdNo
newRoleNo
previousRoleNo
targetUserIdNo
Behavior5/5

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

Annotations indicate destructiveHint=true and readOnlyHint=false, which matches the mutation described. The description adds valuable behavioral context beyond annotations, such as the inability to change own or owner's role, and the required auth level.

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

Conciseness5/5

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

Two sentences, front-loaded with the main purpose, followed by constraints. No redundant information; every sentence adds value.

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

Completeness4/5

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

The description covers purpose, constraints, and auth requirements adequately for a simple mutation tool with no output schema. Slight gap in not mentioning success behavior, but overall complete.

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

Parameters3/5

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

Schema description coverage is 100%, with all four parameters documented in the schema. The description does not add additional parameter semantics beyond what is already in the schema, but the baseline score of 3 is maintained.

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 clearly states 'Changes a member's role within an organization', which is a specific verb+resource. It adds constraints (cannot change own or owner's role) and distinguishes from sibling tools like invite_member or remove_member.

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

Usage Guidelines4/5

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

Description provides explicit prerequisites ('Requires admin scope and admin or owner role') and constraints ('Cannot change your own role or the owner's role'), giving clear context for when to use. It does not explicitly mention alternatives, but the guidance is sufficient.

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

upload_assetUpload AssetAInspect

Upload one or more files (images, fonts, CSS, video, etc.) as assets and receive stable URLs. Use these URLs in your HTML with or @font-face. Assets are cached on displays. Pass files as base64-encoded data. Requires authentication with at least content_only scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesArray of file objects, each with 'name' (filename with extension) and 'data' (base64-encoded content).
group_idNoOptional group ID to associate the assets with.
access_tokenNoOptional JWT access token for authentication.
descriptionsYesJSON object mapping each filename to a human-readable description.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
assetsNo
Behavior4/5

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

The description adds value beyond annotations by disclosing that assets are cached on displays, only HTML is re-downloaded, and files must be base64-encoded. There is no contradiction with annotations (readOnlyHint=false, destructiveHint=false).

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 moderately concise and well-structured, front-loading the purpose. Each sentence adds meaningful information, though it could be slightly tighter.

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

Completeness4/5

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

The description covers key aspects: upload mechanism, caching, authentication, and storage location. It is complete for a file upload tool, though it omits file size or type limits (which are not in the schema either).

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds some context (e.g., base64 encoding for files, group_id usage) but does not significantly extend beyond the schema's own descriptions.

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 clearly states that the tool uploads files as assets and returns stable URLs, which is a specific verb and resource. It distinguishes from sibling tools like delete_asset, update_asset, and list_assets by focusing on uploading new assets.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the group_id parameter (for organization displays) and when to omit it (personal displays), as well as required authentication scope. However, it lacks explicit guidance on when not to use this tool in favor of sibling tools like list_assets or get_asset for reading.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources