agentView
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.
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.
Tool Definition Quality
Average 4.4/5 across 74 of 74 tools scored. Lowest: 3.4/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.
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.
74 tools is excessive for most servers. While covering a broad domain, the count makes navigation difficult and suggests insufficient granularity.
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 toolsallocate_licensesAllocate LicensesADestructiveIdempotentInspect
Distributes the account's existing premium display licenses to an organization. The account has a pool of premium licenses (a base allowance plus any additional licenses on the account) that can be allocated across organizations it owns. Requires admin scope and available premium licenses.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID to allocate licenses to. Obtain this from list_organizations. | |
| licenses | Yes | Number of premium display licenses to allocate to this organization. Set to 0 to deallocate all licenses from this org. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orgId | No | |
| allocatedToOrg | No | |
| personalDisplayLimit | No | |
| freeAllocatableLicenses | No | |
| totalAllocatableLicenses | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false and destructiveHint=true. The description adds context about the license pool and the need for available licenses, which is beyond what annotations provide. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, resource context, and requirements. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality and requirements. An output schema exists but is not shown; however, the description is sufficient for an agent to understand the tool's purpose and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the tool description does not add information about the parameters beyond what's in the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('distributes'), the resource ('premium display licenses'), and the target ('organization'). It distinguishes from sibling tools like assign_license by specifying allocation from the account's pool to an org.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions prerequisites: 'Requires admin scope and available premium licenses.' It does not explicitly state when not to use it, but the sibling list provides context for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_licenseAssign LicenseADestructiveIdempotentInspect
Marks a display as premium using one of the account's available licenses, which removes the free-tier watermark. The account must have an unassigned premium license available. Each license also adds +30 MB to the display's context storage pool (personal or group). Requires admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to assign a license to, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| badgeMode | No | |
| freeLicenses | No | |
| isPremiumAssigned | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and idempotentHint=true. The description adds useful context beyond annotations: the license adds +30 MB storage. It does not cover all edge cases (e.g., what happens if no license), but provides adequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, no redundancy, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and presence of an output schema, the description covers key behaviors: action, prerequisite, effect. It does not mention error cases or return values, but output schema handles returns. Slightly incomplete but sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both parameters documented. The description adds little beyond the schema—only the admin scope requirement is new. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Marks a display as premium using one of the account's available licenses, which removes the free-tier watermark.' It distinguishes from sibling tools like unassign_license and allocate_licenses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use when you want to mark a display as premium and have an available license. It mentions prerequisites (unassigned license, admin scope) but does not explicitly state when not to use 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.
authenticateAuthenticate SessionAIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| jwt | No | Alias for token. Use this if your wrapper cannot send the 'token' field reliably. | |
| token | No | The 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_token | No | Alias for token. Use this if your wrapper follows OAuth naming conventions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| No | ||
| scope | No | |
| userId | No | |
| isAgent | No | |
| expiresAt | No | |
| sessionBound | No | |
| authenticated | No | |
| transportAuthRequired | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and destructiveHint=false; description adds that it caches identity on the session, which is a useful behavioral detail. However, it doesn't document error behavior or whether repeated calls overwrite the cached identity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: purpose, usage guidance, and return values. No redundancy or filler. Front-loaded with core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers usage constraints and return values adequately. Since an output schema exists, return field descriptions are not needed here. Minor gap: no mention of error handling for invalid tokens.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already well-documented (aliases, usage warnings). The description does not add new parameter-level detail beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates a JWT token and caches identity, distinguishing it from sibling tools like get_auth_session. The verb 'validates' and resource 'JWT agent token' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to use (if client can't reliably send Authorization header) and when not to (if already auto-authenticated by get_auth_session), with clear alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
broadcast_contentBroadcast ContentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Set to true to target all accessible displays. | |
| html | No | Complete HTML document to render. Mutually exclusive with base64_html. | |
| duration | No | How long content stays in seconds. 0 = indefinite. | |
| base64_html | No | Base64-encoded HTML string. Mutually exclusive with html. | |
| description | Yes | Short description of the content being sent. | |
| display_ids | No | Array of display profile IDs to target. Provide this or set all to true. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID. | |
| content_description | No | Optional semantic description of the content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sent | No | |
| skipped | No | |
| duration | No | |
| fileName | No | |
| sentCount | No | |
| skippedCount | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false. The description adds that locked displays are skipped and returns lists of sent/skipped displays, and requires 'content_only' scope. However, it does not detail error handling or what happens if content fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the primary purpose, and each sentence adds essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return format is covered elsewhere), the description adequately explains the main behavior, targeting options, scope requirement, and return lists. The optional auth parameters are standard and not critical for the core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds context on the usage of 'display_ids' vs 'all' but does not explain parameters like 'access_token' or 'session_request_id' beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool broadcasts HTML content to multiple displays, differentiating from siblings like send_html (single display) and broadcast_to_categories (by category). The verb 'broadcast' and resource 'multiple displays' are specific and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use 'display_ids' for specific targets or 'all' for all accessible displays, and notes that locked displays are skipped. It also mentions required scope. However, it does not explicitly compare with alternative tools for single-display or category-based broadcasting.
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 CategoriesADestructiveInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | HTML body. Required unless dry_run=true. | |
| dry_run | No | When true, returns matched profile list without sending. | |
| description | No | Optional human-readable description (<=1000 chars). | |
| access_token | No | ||
| session_request_id | No | ||
| include_descendants | No | When true, include displays assigned to subcategories of the selected categories. | |
| include_category_ids | Yes | Category IDs to include. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sent | No | |
| dryRun | No | |
| matched | No | |
| results | No | |
| skipped | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable detail: requires display.send capability, locked displays are skipped with a reason. This goes beyond annotations but could still elaborate on error handling or idempotence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each focused and informative. No redundant or vague phrasing. Front-loads the core action and adds critical details sequentially.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, output schema present), the description covers primary behaviors (send, dry-run, descendants), prerequisites (capability), and edge cases (locked displays). Output schema handles return details, so no further explanation needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 71% schema coverage, the description adds meaning beyond schema descriptions, notably clarifying that html is required unless dry_run=true, and explaining include_descendants. Parameters like access_token and session_request_id are not mentioned, but the schema covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends HTML to displays assigned to specific categories, with explicit mention of key options like include_descendants and dry_run. This distinguishes it from sibling tools like broadcast_content or send_html, which likely target individual displays or different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: when dry_run is applicable, requirement for display.send capability, and behavior with locked displays. However, it does not explicitly contrast this tool with alternatives like broadcast_content or send_html, leaving the agent to infer the categorical focus.
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 CategoryADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Operation mode. Must be 'add' or 'remove'. | |
| category_id | Yes | Category ID to add or remove. | |
| display_ids | Yes | Array of display profile IDs to mutate. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | |
| results | No | |
| categoryId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds context: the operation is owner-scoped (only touches caller's rows), does not mutate others' categories, and returns a per-display result list. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and scope, second details scoping and return format. No wasted words. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters, full schema coverage, and presence of an output schema, the description covers essential behavioral aspects (scoping, return format). It is sufficiently complete for an agent to understand the tool's purpose and usage constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description does not add additional parameter semantics beyond what the schema already provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool bulk adds or removes a category across multiple displays, scoped to the caller's managed displays. It distinguishes from related tools like set_display_categories_for_display (single display) and create_display_category (category creation). The verb-resource combination is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the owner-scoped behavior and that it doesn't affect other managers' assignments. It implies when to use (bulk operations on owned displays) but does not explicitly list when not to use or alternatives. Returns per-display results, which helps the agent understand the outcome.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The short ID of the pending, guest or demo display to claim. This is the hardware or temporary ID shown on the device. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. | |
| profile_name | Yes | Friendly name to assign to the newly claimed display. Non-empty string. Example: 'Reception Kiosk'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| profileId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only indicate non-readonly and non-destructive), the description adds critical behavioral details: the operation permanently transfers ownership, counts against the user's display quota, and requires admin scope. This gives the agent a clear understanding of the tool's effects and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at four sentences, each serving a distinct purpose: definition, consequence, usage guidance, and return summary. It front-loads the core action and avoids redundancy. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (ownership transfer, quota impact, admin scope) and the presence of a comprehensive input schema and output schema reference (mentions returning profileId and name), the description covers all essential aspects: purpose, prerequisites, consequences, and return values. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for all three parameters (100% coverage), so the baseline is 3. The description adds value by explaining the usage of access_token (prefer session_request_id) and giving an example for profile_name. This additional context justifies a score above baseline, though the schema itself is already informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Converts an unclaimed guest or pending display into a managed personal display') and the specific resource. It also distinguishes from the sibling tool pair_by_code by noting the appropriate use case ('For first-time physical setup, prefer pair_by_code instead'). The verb 'converts' and the object 'unclaimed guest or pending display' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('only when the user explicitly wants to adopt an existing hardware or demo display that is already running') and when not to use it ('For first-time physical setup, prefer pair_by_code instead'). It also mentions the requirement for admin scope, providing clear guidance on authorization prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_displayClear DisplayADestructiveIdempotentInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to clear, e.g. 'ABCD1234'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds behavioral details: 'Viewers will immediately see the change', 'Returns id and status ('cleared')', and required scope. No contradictions. The description enriches transparency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, usage context, differentiation and return info. No redundancy, front-loaded with the core verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters and a simple output, the description covers purpose, effect, alternative, authentication, and return format. No gaps. The agent has all necessary information to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters (display_id format, access_token purpose). The description does not add new parameter semantics but reinforces the tool's effect. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('removes current live content', 'returns to idle/default state') and explicitly distinguishes from delete_display ('does not delete the display itself'). This eliminates ambiguity and clearly defines the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use the tool ('user wants to blank or reset a display') and explicitly tells when not to use it ('use delete_display for that'). It also mentions authentication scope requirements, providing complete usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_displayConfigure DisplayADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| allow_camera | No | Allow embedded content to request camera access. Default is false. | |
| allow_microphone | No | Allow embedded content to request microphone access. Default is false. | |
| allow_geolocation | No | Allow embedded content to request geolocation access. Default is false. | |
| show_mouse_cursor | No | Show a visible mouse cursor on the display surface. Default is true. | |
| preferred_language | No | Preferred language for the display shell. Omit to leave unchanged. | |
| show_badge_overlay | No | Show the AI connect badge overlay on the display. Default is true. | |
| watermark_position | No | Position of the badge watermark on the display. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| allowCamera | No | |
| allowMicrophone | No | |
| changedSettings | No | |
| showMouseCursor | No | |
| allowGeolocation | No | |
| showBadgeOverlay | No | |
| effectiveLanguage | No | |
| preferredLanguage | No | |
| watermarkPosition | No | |
| appliedToLiveDisplay | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give readOnlyHint=false, destructiveHint=true, idempotentHint=true. The description adds behavioral context beyond annotations by stating: 'Requires admin scope' and 'If the display is online, changes are pushed immediately via SignalR.' This informs the agent about authorization and real-time behavior. However, it does not explain the destructive nature (destructiveHint=true) further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, each serving a clear purpose: purpose statement, usage guidance, optionality/behavior, and additional context (push, scope). 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.
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, many booleans/enums) and the presence of an output schema, the description covers essential aspects: admin scope, optional parameters, real-time push. It does not explain the return value or response format, but the output schema likely handles that. Slightly more detail about offline behavior or error conditions would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 grouping parameters into categories (hardware permissions, UI settings) and explicitly stating that only provided parameters are changed (partial update behavior). This contextual information is not in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'updates' and clearly identifies the resource as 'hardware permission and UI settings for a display'. It enumerates the specific settings (camera, microphone, geolocation, etc.), making the tool's purpose unambiguous. This distinguishes it from sibling tools like 'create_display' or 'lock_display'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when the user wants to enable or disable...' and clarifies that 'All parameters except display_id are optional — only provided settings are changed.' It does not explicitly mention when not to use it or alternatives, but the guidance is clear and actionable.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for the key. Example: 'Home Assistant', 'CI Pipeline'. | |
| scope | No | Scope for the key: 'content_only' (send content, list displays) or 'admin' (full management). | content_only |
| org_id | No | Optional organization ID. If set, the key acts on behalf of this organization. | |
| permissions | No | Granular 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_token | No | Optional JWT access token for authentication. | |
| capabilities | No | Optional 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_days | No | Optional expiration in days. If not set, the key never expires. | |
| allowed_slot_slugs | No | Optional 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_ids | No | Optional 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
| Name | Required | Description |
|---|---|---|
| key | No | |
| name | No | |
| keyId | No | |
| orgId | No | |
| scope | No | |
| warning | No | |
| createdAt | No | |
| expiresAt | No | |
| permissions | No | |
| capabilities | No | |
| allowedSlotSlugs | No | |
| allowedDisplayIds | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the raw key is returned only once (must be stored securely) and requires user consent. Adds value beyond annotations (readOnlyHint=false, destructiveHint=false) by explaining non-idempotency and security. Could mention rate limits or multiple key creation, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with main purpose, followed by constraints. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain return values. Covers creation, security, consent, scope, and granular permissions adequately for a 9-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful context about key storage and granular scoping, supplementing the schema descriptions. Adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool creates a long-lived API key for server-to-server integration without OAuth. Distinguishes from siblings like list_api_keys and revoke_api_key by specifying the use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use (server-to-server without OAuth) and prerequisites (user consent, admin scope). Does not explicitly state when not to use or name alternatives, 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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | Requested 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_identifier | No | Optional 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
| Name | Required | Description |
|---|---|---|
| hint | No | |
| pollUrl | No | |
| loginUrl | No | |
| expiresIn | No | |
| requestedScope | No | |
| sessionRequestId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but basic. The description adds behavioral context: it creates a session (not read-only), requires user interaction (open loginUrl), and describes return fields including expiration. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and usage. Every sentence provides essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 nested objects) and presence of output schema details in description, it is fully complete. It covers parameters, return values, and workflow steps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds minor extra context for agent_identifier ('shown to the user in the browser consent screen') but otherwise does not significantly augment parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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. It specifies the use case: when the client cannot complete OAuth 2.1 with PKCE. This distinguishes it from other auth tools like authenticate and get_auth_session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('as the first step when your client cannot complete OAuth 2.1 with PKCE itself') and when not to use ('if you already have a valid Bearer token'). Also provides next steps (poll get_auth_session).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional friendly name for the new display. If omitted, a default name is assigned. Example: 'Lobby Screen'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| status | No | |
| setupUrl | No | |
| managedUrl | No | |
| pairingUrl | No | |
| approvalUrl | No | |
| pairingExpiresAt | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-destructive and non-read-only. Description adds context: display starts offline/uncoupled, requires admin scope, and contrasts with other tools' auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with conditional guidance and return fields listed. A bit long but each sentence adds value. Could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a creation tool with output schema. Covers when to use, alternatives, auth requirements, and return fields. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds example for 'name' and explains when to use access_token vs. session_request_id. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a personal display without pairing, and distinguishes it from pair_by_code. The verb 'create' and resource 'display' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool (pre-provisioning, headless) vs. pair_by_code, and warns not to use it for capacity checks (use get_account).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable category name, e.g. 'Reception' or 'Meeting room'. | |
| access_token | No | Optional JWT access token for authentication. | |
| parent_category_id | No | Optional parent category ID for creating a subcategory. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| path | No | |
| color | No | |
| count | No | |
| categoryId | No | |
| parentCategoryId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive behavior. The description adds valuable behavioral context: stable IDs and that renaming retains assignments/grants. It also states required capability. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste. First sentence states purpose, second adds subcategory nuance, third covers behavioral trait and requirement. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, 1 required, and an output schema, the description covers creation purpose, subcategory usage, stability, and required capability. It lacks error handling (e.g., duplicate names) but output schema may compensate. Almost complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is described in the input schema. The description echoes the use of parent_category_id for subcategories but adds no new semantic value beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a personal display category using specific verbs and resource. It distinguishes from siblings like rename_display_category and list_display_categories by specifying 'personal' and by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear when-to-use guidance: create a personal display category, optionally with a parent_category_id for subcategories. However, it does not explicitly state when not to use or mention alternatives for organizational categories, though such a tool may not exist.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Friendly name for the organization. Example: 'Marketing Team'. | |
| type | No | Organization type. Defaults to 'organization' if omitted. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| slug | No | |
| type | No | |
| orgId | No | |
| yourRole | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the user becomes owner, requires admin scope, and lists return fields. Annotations already indicate mutation (readOnlyHint=false), so description adds valuable context without contradicting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with front-loaded main action. Every sentence adds value; no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers creation, ownership, use case, scope, and returned fields. Could be slightly more complete with error handling or limits, but adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add extra meaning beyond the schema for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it creates a new organization and sets the authenticated user as owner. Distinct from sibling tools like list_organizations 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use when setting up a shared display fleet, providing a clear use case. Lacks explicit mention of when not to use, but context is sufficient.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Friendly name for the new display. Example: 'Lobby Screen'. | |
| org_id | Yes | The organization ID to create the display in. Obtain this from list_organizations. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| orgId | No | |
| status | No | |
| orgName | No | |
| setupUrl | No | |
| pairingUrl | No | |
| pairingExpiresAt | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral info (not read-only, not destructive). Description adds significant context: display starts offline and uncoupled, owned by org not user, requires admin scope and manager role. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with each sentence providing distinct value. Slightly verbose but every sentence earns its place. Front-loaded with purpose and key distinction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only 3 parameters and an output schema exists, the description covers all needed context: state after creation, ownership, required permissions, and alternative tool guidance. No gaps for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 significant extra meaning beyond what the schema already provides for the parameters. However, it does contextualize the need for available licenses and org_id source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it creates a display without pairing, distinguishing from pair_by_code. Uses specific verb 'creates' and explicit resource 'display in organization', with clear scope of offline/uncoupled state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (administrative pre-provisioning when screen not available) and when not (prefer pair_by_code for physical screens). Also lists prerequisites: admin scope, manager+ role, available licenses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_assetDelete AssetADestructiveInspect
Deletes one or more assets. Displays referencing deleted assets will show broken images. Requires authentication with at least content_only scope.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_ids | Yes | One or more asset IDs to delete. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds that displays referencing deleted assets will show broken images and that content_only scope is required. This provides useful behavioral context not captured in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two efficient sentences. The first states the primary action; the second adds critical side effects and requirements with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-asset deletion tool with good annotations and an output schema, the description covers side effects and authentication adequately. Minor gap: does not clarify if deletion is permanent or reversible, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes both parameters. The description does not add new semantic meaning beyond restating that asset_ids are the targets and access_token is optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes one or more assets, specifying the action and resource. It distinguishes from siblings like update_asset or upload_asset by explicitly using 'deletes' and mentioning the side effect on referencing displays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the required authentication scope but does not provide when-to-use or when-not-to-use guidance relative to siblings. No alternatives or exclusions are mentioned, relying on the obvious destructive nature.
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 SlotADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug of the data slot to delete. | |
| group_id | No | Group/organization ID to delete a group slot. Omit for personal slots. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| deleted | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds beyond annotations: mentions that the readUrl will return 404 and that the action cannot be undone. These are critical behavioral traits not captured in annotations alone. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four succinct sentences, each adding unique information: purpose, side effect, irreversibility, parameter guidance, authentication. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 presence of an output schema, the description covers the key aspects: what it does, side effect, irreversibility, parameter usage. Could mention success/failure response but output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining the conditional usage of group_id (group vs personal slots) and requiring authentication. Does not redundantly repeat schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (permanently deletes a data slot) and distinguishes it from siblings like set_data_slot and get_data_slot. It explicitly mentions the irreversible nature and side effect on the readUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear instruction on when to use the group_id parameter (for group slots) and when to omit it (personal slots). Requires authentication is stated. Does not explicitly state when not to use this tool, but the purpose implies exclusivity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_displayDelete DisplayADestructiveInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to delete, e.g. 'ABCD1234'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| deleted | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the destructiveHint annotation by stating the action is permanent and cannot be undone. It adds the requirement for admin scope, providing behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core action and immediately addresses usage guidance and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructiveHint annotation and the presence of an output schema, the description covers the essential aspects: action, permanence, usage recommendation, permission requirement, and return values. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description does not add additional meaning beyond what's in the schema, achieving the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it permanently deletes a display and all associated content. It uses a specific verb ('deletes') and resource ('display'), and distinguishes from sibling tools like 'clear_display' or 'remove_display_from_org'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using only when the user explicitly confirms removal and notes the requirement for admin scope. While it doesn't enumerate alternatives or when-not-to-use, the context is clear and sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_organizationDelete OrganizationADestructiveInspect
Permanently deletes an organization, releasing all its displays and removing all members. Only the owner can delete. This cannot be undone. Requires admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID to delete. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| orgId | No | |
| deleted | No | |
| membersRemoved | No | |
| displaysReleased | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint=true. Description adds context about permanent deletion, effect on displays and members, and irreversibility, going 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then authorization, then irreversibility. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, effect, authorization, irreversibility. Output schema exists, so return values not needed. Misses error conditions or prerequisites like org being empty, but overall complete for a delete tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 no parameter-specific information beyond the schema, but the schema already describes them adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'deletes', the resource 'organization', and the effects on displays and members. It distinguishes itself from sibling tools like create_organization, rename_organization, and delete_display.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Specifies prerequisites: 'Only the owner can delete' and 'Requires admin scope'. However, it does not explicitly mention when not to use or compare to alternatives like remove_member for deconstructing an org.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch ResourceARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | The resource URI to fetch. Must use the agentview:// scheme. Examples: 'agentview://public/status', 'agentview://account/me', 'agentview://display/ABCD1234'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| uri | No | |
| data | No | |
| text | No | |
| type | No | |
| title | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds meaningful behavioral context: authentication requirements for public vs private URIs and the return fields (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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first states purpose, second provides usage flow, third adds authentication and return details. No wasted words, effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter and an output schema present, the description adequately covers authentication, usage pattern, and return fields. Sufficient for an agent to understand tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, and the description reiterates the same information about the URI parameter. It adds no new meaning beyond the schema, thus baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieves', the resource 'full details of a single agentView resource', and distinguishes from search tools by specifying after search or direct URI usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage scenarios ('Use this after search... or directly when you already know the URI') and differentiates between public/private URIs with authentication requirements, but lacks explicit when-not-to-use guidance or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet AccountARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| name | No | |
| plan | No | |
| No | ||
| points | No | |
| userId | No | |
| maxDisplays | No | |
| planFeatures | No | |
| organizations | No | |
| currentDisplays | No | |
| authenticatedVia | No | |
| organizationCount | No | |
| remainingDisplays | No | |
| maxPersonalDisplays | No | |
| currentPersonalDisplays | No | |
| totalAccessibleDisplays | No | |
| remainingPersonalDisplays | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so safety profile is clear. Description adds behavioral context like 'Requires authentication with at least content_only scope' and details the return fields, which helps the agent understand the tool's 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph is well-structured with purpose, field list, usage guidance, and exclusion instruction. Slightly verbose but every sentence adds value; minor reduction could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (though not shown), the description is comprehensive: explains return fields, usage context, auth requirements, and explicitly excludes misuse. No gaps for a simple get-profile tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers access_token with 100% coverage. Description adds valuable usage semantics: explains when to use access_token vs session_request_id and that the server resolves authentication. This goes beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Returns the authenticated user's account profile' and enumerates specific fields (userId, name, email, plan, display limits, etc.). Explicitly distinguishes from sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this to answer questions about the user's subscription, display quota, organization memberships or plan capabilities.' Also gives a clear when-not-to-use instruction referring to the sibling tool list_displays.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetGet AssetARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | The asset ID (e.g. 'ast_01H7KXZ...'). | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| name | No | |
| assetId | No | |
| mimeType | No | |
| createdAt | No | |
| sizeBytes | No | |
| description | No |
Tool Definition Quality
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 detail about returning URL and authentication requirement, but does not significantly extend 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. Purpose is front-loaded, and the description is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only single asset retrieval tool, the description, annotations, and output schema provide complete context. No missing information for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description does not add further semantic meaning beyond that already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns metadata for a single asset including its URL, and provides a specific use case (verifying asset existence). This distinguishes it from siblings like list_assets or update_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when to use the tool (to verify existence before referencing) and the required authentication scope. It does not explicitly state when not to use, but the context is sufficient for selection.
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 SessionAIdempotentInspect
Polls the status of a login session created by create_auth_session. 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; tokenExpiresAt is an ISO 8601 timestamp for when re-authentication is required. For security the raw bearer token is intentionally not returned over MCP, so keep using your session_request_id on protected calls), 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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_request_id | Yes | The sessionRequestId string returned by create_auth_session. Must be passed exactly as received. |
Output Schema
| Name | Required | Description |
|---|---|---|
| scope | No | |
| status | No | |
| expiresIn | No | |
| requestedScope | No | |
| tokenExpiresAt | No | |
| sessionRequestId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotence and non-destructive behavior. The description adds significant behavioral context: polling frequency, three possible states and their meanings, security note about bearer token not being returned, and automatic authentication on active status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but every sentence adds value. It is front-loaded with the core purpose and well-structured. Could be marginally more concise but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately explains return states and actions to take. It completes the context of the auth workflow, including when to poll and how to handle each result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one required parameter with 100% schema coverage. Description adds value by emphasizing that the session_request_id must be passed exactly as received, which is a critical usage detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it polls the status of a login session created by create_auth_session. The verb 'polls' and resource 'login session status' are specific, and the tool is distinguished from siblings by being part of the auth flow only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use after create_auth_session, poll every 2-3 seconds until status is not 'pending', and not for any other purpose. Also provides guidance on reauthentication if expired.
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 SlotARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug of the data slot to retrieve. | |
| group_id | No | Group/organization ID to retrieve a group slot. Omit for personal slots. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| type | No | |
| label | No | |
| content | No | |
| groupId | No | |
| readUrl | No | |
| sizeBytes | No | |
| updatedAt | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds value by noting the readUrl in the response and authentication requirement, adding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with clear front-loading of purpose, followed by usage hint and response detail. No superfluous words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers purpose, parameter usage, response feature (readUrl), and authentication. No gaps for this read-only, idempotent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful interpretation for group_id ('omit for personal slots'), enhancing understanding beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Returns the current JSON content and metadata of a data slot by slug,' specifying a verb and resource. It distinguishes this tool from siblings like set_data_slot, delete_data_slot, and list_data_slots, which have different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on using group_id for group slots and omitting for personal slots. Mentions authentication requirement. Lacks explicit 'do not use when' statements, but context is clear given sibling names.
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 UsageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug of the data slot to scan usage for. | |
| group_id | No | Group/organization ID for group slots. Omit for personal slots. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| count | No | Total number of displays referencing the slot (may exceed displays.length if truncated). |
| displays | No | |
| truncated | No | True if more than 50 displays match; only the first 50 are returned in 'displays'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds significant behavioral context: results capped at 50 with 'truncated' flag, same read scope required, and caveat about personal/group slot scope. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with clear sentences covering purpose, usage, scope, limits, and auth. It is not overly verbose, though it could be broken into shorter sentences for easier scanning. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, no nested objects, output schema exists), the description covers all critical aspects: what is returned (displays with placeholders), the limit and truncation behavior, auth and scope requirements, and the connection to sibling tools. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage for all three parameters with descriptions. The description adds little beyond schema: it explains the slug parameter's purpose ('scan usage for') and the group_id parameter's role ('for group slots'), but the schema already covers these. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists displays that embed a {{slot:<slug>}} placeholder for a specific data slot. It uses a specific verb ('Lists') and resource ('displays'), and distinguishes from siblings like get_data_slot (which retrieves slot data) and delete_data_slot (which needs this info beforehand). No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this BEFORE delete_data_slot to know which displays will start returning 404, or before set_data_slot on a structural change.' Also covers scope differences (personal vs group). Provides clear guidance on alternatives and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_displayGet DisplayARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. Obtain this from list_displays or from a previous create_display call. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. | |
| session_request_id | No | Optional 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
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| engine | No | |
| locked | No | |
| screen | No | |
| status | No | |
| browser | No | |
| runtime | No | |
| hasTouch | No | |
| lastSeen | No | |
| platform | No | |
| settings | No | |
| setupUrl | No | |
| viewport | No | |
| managedUrl | No | |
| pairingUrl | No | |
| resolution | No | |
| approvalUrl | No | |
| deviceClass | No | |
| touchSource | No | |
| deviceFamily | No | |
| screenSource | No | |
| classification | No | |
| currentContent | No | |
| viewportSource | No | |
| pairingExpiresAt | No | |
| effectiveLanguage | No | |
| hasDefaultContent | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds value by detailing the return contents and authentication requirement, but does not contradict annotations. A score of 4 reflects that annotations carry most transparency burden, description adds context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states what the tool returns, second gives usage guidance, third authentication. No extraneous words. Front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations are comprehensive, the description covers purpose, usage, authentication, and return contents. It is fully complete for a read-only retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so baseline is 3. The description adds no parameter details beyond the schema, but that is acceptable since schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns full details of a single display, and enumerates many specific aspects (live state, content, pairing links, etc.). It distinguishes itself from list_displays (discovery) and create_display (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use ('when you already know the display ID and need its complete state') and when not to ('do not use this to discover displays — use list_displays first'). Also specifies required authentication scope.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Artifact 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_id | Yes | Display profile ID (8-char alphanumeric) from list_displays. | |
| access_token | No | Optional JWT access token (use session_request_id instead when possible). | |
| session_request_id | No | Optional session request ID returned by create_auth_session. Preferred over access_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| kind | No | |
| content | No | Artifact body with {{slot:KEY.prop}} placeholders resolved to this display's installed slot slugs / readUrls. |
| fileName | No | |
| displayId | No | |
| sizeBytes | No | |
| contentType | No | |
| unresolvedPlaceholders | No | Placeholders 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. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, etc. The description adds significant behavioral context: requires content scope, owner permissions, and explains substitution behavior including unresolved placeholders. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient paragraph (~150 words), front-loaded with the main purpose, then a killer flow example, followed by requirements and edge cases. Every sentence earns its place with no repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown but indicated), the description appropriately focuses on usage context. It covers the substitution mechanism, unresolved placeholders, and authentication preferences. It is complete enough for a read-only artifact retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 how to discover artifact keys (via get_store_template_details) and clarifying that session_request_id is preferred over access_token. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb- resource pair: 'Returns the agent-onboarding artifact body... SUBSTITUTED against the slot slugs'. It clearly distinguishes from sibling tools like get_store_template_agent_artifact by emphasizing substitution and giving a concrete use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage flow ('Add my Claude Code agent...' → list_displays → get_display_agent_artifact → save) and mentions prerequisites (content scope, ownership/API-key). However, it does not explicitly compare with the similar sibling tool get_store_template_agent_artifact, so misses an opportunity for when-not-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_display_capabilitiesGet Display CapabilitiesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional 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
| Name | Required | Description |
|---|---|---|
| screen | No | |
| runtime | No | |
| metadata | No | |
| viewport | No | |
| displayId | No | |
| capabilities | No | |
| connectivity | No | |
| classification | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds context that the tool returns resolved capabilities and lists many specific fields, confirming it is a read-only operation. No contradictions. Adds value by detailing the output content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first succinctly lists all returned data categories, second provides usage guidance and auth requirement. No extraneous words, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with an output schema, the description adequately covers what it returns and when to use it. The presence of an output schema means return values are documented elsewhere, so the description is complete without explaining them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters described in the input schema. The description does not add any additional meaning about parameters beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and identifies the resource as 'resolved display capabilities', listing concrete facts like screen, viewport, browser version, etc. It distinguishes from siblings like get_display by focusing on capabilities needed for content matching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Call this before generating or sending HTML so your agent can match the content to the real display browser.' Also notes authentication requirement. Does not specify when not to use or contrast with alternative tools, 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.
get_display_contentGet Display ContentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| status | No | |
| idleFile | No | |
| contentUrl | No | |
| currentFile | No | |
| currentVersion | No | |
| hasIdleContent | No | |
| hasLiveContent | No | |
| liveContentInfo | No | |
| currentContentDescription | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds scope requirement and return data specifics, but does not detail additional behaviors (e.g., rate limits, caching). Still 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single paragraph but front-loaded with main purpose. Includes multiple guidance points efficiently. Could be more structured (e.g., bullet points) but is not verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description adequately covers return data, usage guidance, and scope. No missing elements for a read-only tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description does not add new parameter context beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns current content state of a display, listing specific fields (active live content, content URL, idle content, delivery status). Distinguishes from siblings read_display_html and get_display_preview_url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises checking currentContentDescription first, using read_display_html only for raw source edits, and using get_display_preview_url for sharing. Also mentions required scope 'content_only'.
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 LinkARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| ttl_seconds | No | Lifetime of the share link in seconds. Default 3600 (1 hour). Clamped to [60, 86400]. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | |
| displayId | No | |
| expiresAt | No | |
| previewUrl | No | |
| ttlSeconds | No | |
| displayName | No | |
| privacyMode | No | |
| contentVersionId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations (readOnlyHint=true, destructiveHint=false): short-lived, read-only, expires after ttl_seconds, dies on owner push, TTL clamping based on privacy_mode, and that recipients cannot push/configure/discover. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and well-structured in a single paragraph with logical flow. Every sentence adds value, but could be slightly more concise given the length (5 sentences).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 parameters, output schema exists, annotations present), the description is comprehensive, covering behavior, constraints, usage context, and scope requirement. The output schema is present but not described, which is acceptable per rules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description enriches all three parameters: display_id format, ttl_seconds defaults and clamping behavior, and access_token as optional JWT. The description adds meaning beyond the schema constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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', specifying the verb 'generates' and resource 'share link', and distinguishes itself from siblings by emphasizing it's the only supported way to share screen content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use scenarios: '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.' It also notes that the legacy URL is removed for GDPR compliance, but it 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_license_infoGet License InfoARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| canAllocate | No | |
| orgAllocations | No | |
| personalDisplays | No | |
| allocatableLicenses | No | |
| totalAllocatedToOrgs | No | |
| totalPremiumLicenses | No | |
| freeAllocatableLicenses | No | |
| personalPremiumDisplays | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint. The description adds the requirement for 'content_only scope' and specifies the return content, providing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, highly concise, front-loaded with the primary action and followed by usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description sufficiently covers what the tool returns. It also explains the purpose and prerequisites, making it complete for a read-only info tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter is an optional access_token, which is self-explanatory. The description does not add any additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns 'complete license allocation overview' and enumerates specific fields (total premium licenses, personal usage, etc.), distinguishing it from sibling tools like allocate_licenses which actually modify licenses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Use this to understand available capacity before allocating licenses,' giving clear context for when to use. It also mentions the required scope, but does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organizationGet OrganizationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. Obtain this from list_organizations or from get_account. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| plan | No | |
| slug | No | |
| orgId | No | |
| members | No | |
| displays | No | |
| isActive | No | |
| yourRole | No | |
| createdAt | No | |
| memberCount | No | |
| contactEmail | No | |
| displayCount | No | |
| allocatedSlots | No | |
| remainingSlots | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds behavioral context beyond annotations by specifying that authentication with at least content_only scope and user membership in the organization are required. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states purpose, second gives usage guidance, third covers auth. Every sentence is necessary and informative. No fluff, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the tool's simplicity (get a specific org), the description is complete. It covers purpose, usage context, and auth requirements. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (org_id, access_token) well-documented. The description does not add additional semantic meaning beyond the schema, as it only mentions auth requirements which are not parameter-specific. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns full details of a specific organization including displays, members, roles, slots, and capacity. It distinguishes from sibling tool list_organizations by emphasizing 'specific organization' and '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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this after list_organizations to inspect a specific organization's state', providing clear when-to-use guidance. It also states authentication and membership requirements. Does not mention when not to use or alternatives beyond list_organizations.
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 StatusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| server | No | |
| status | No | |
| version | No | |
| statusUrl | No | |
| instructionsUrl | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, indicating safe, read-only behavior. The description adds that no authentication is required and specifies the returned fields, but this adds marginal value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences. The first sentence states the action and outputs, and the second gives usage context. No unnecessary words, front-loaded, and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, rich annotations, and an output schema), the description is fully sufficient. It covers what the tool does, when to use it, and key behavioral details (no auth required). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and schema coverage is 100% (empty). Since there are no parameters to explain, the description does not need to add parameter semantics. Baseline score of 4 is appropriate for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the server's public readiness status, version string, and discovery URLs. It specifies the verb 'Returns' and the resource, distinguishing it from other tools that require authentication or have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states to use this tool before authenticating to verify server reachability and obtain entry-point URLs. It also notes that no authentication is required, providing clear context for when to use it. However, it does not explicitly mention alternatives or 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.
get_storage_quotaGet Storage QuotaARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | No | Group/organization ID for the group's pool. Omit for the caller's personal pool. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| scope | No | |
| groupId | No | |
| usedBytes | No | |
| limitBytes | No | |
| suppressed | No | True for narrowly-scoped API keys; usedBytes/limitBytes are zeroed and meaningless. |
| remainingBytes | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. Description adds critical context: data slots and uploads share one quota, and suppression of numbers for certain API keys with suppressed=true flag. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states main action and scope, second adds usage guidance and edge case. Front-loaded, no redundancy, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description doesn't need to detail return fields. It covers key behavioral aspects (shared quota, suppression) and usage scenario, making it complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. Description largely repeats schema parameter descriptions (group_id, access_token) without adding new meaning. Baseline 3 is appropriate since schema already covers parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns storage-pool snapshot (used/limit/remaining bytes) for personal or group scope. Specific verb and resource, distinguishes from related tools like set_data_slot and upload_asset by recommending its use before them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: before set_data_slot or upload_asset on large payloads to avoid 413 errors. Also explains suppression behavior for narrowly-scoped API keys, giving clear context for when normal results are available.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Artifact key from get_store_template_details (e.g. 'bot-system-prompt', 'agent-skill', 'mcp-config'). | |
| slug | Yes | Template slug (e.g. 'agent-ops-cyan-wall'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | |
| kind | No | |
| slug | No | |
| content | No | Raw artifact body with placeholders intact. Treat as opaque text in the configured contentType. |
| fileName | No | Suggested filename when saving to disk (e.g. 'SKILL.md', '.mcp.json'). |
| sizeBytes | No | |
| contentType | No | MIME type of the body. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, non-destructive, idempotent. Description adds key behavioral facts: 'Placeholders are NOT substituted' and 'No authentication required', which are beyond annotation scope. It does not mention error cases or rate limits, but for a simple read-only operation, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, placeholder clarification, and guidance. Front-loaded with core function. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return format. It explains raw vs. substituted, directs to sibling tools for keys and post-install use, and confirms no auth required. For a read-only retrieval tool, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). The description adds examples for key ('bot-system-prompt', 'agent-skill') and context about slug as template slug, but does not add significant meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the RAW body of an artifact from a store template, with specific examples (system prompt, SKILL.md). It distinguishes itself from sibling get_display_agent_artifact by noting it does not substitute placeholders. The verb 'Returns' and resource 'RAW body' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use BEFORE installation when no display exists, and to use get_display_agent_artifact after installation. Also references get_store_template_details for discovering artifact keys. This is clear when-to-use and when-not-to-use guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_store_template_contentGet Store Template Content (HTML + Slots)ARead-onlyIdempotentInspect
Returns the raw display HTML body of a published store template plus its static slot definitions and allowed external origins — everything needed to insert the template as an editable slide in your own editor. {{asset:NAME}} placeholders are resolved to public URLs; {{slot:KEY.prop}} placeholders are left intact so you can bind them yourself using the returned slots array (same shape as get_store_template_install_options.requiredDataSlots). Only the current published version is returned. No authentication required.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Template slug (English kebab-case) from search_store_templates, e.g. 'bistro-warm-door'. | |
| version | No | Optional published version id (stpv_…) to pin. Omit for the current published version; a non-matching version returns template_not_found / version_not_available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | No | Raw display HTML. {{asset:NAME}} resolved to public URLs; {{slot:KEY.prop}} left intact. |
| slug | No | |
| slots | No | |
| version | No | |
| allowedExternalOrigins | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that only the current published version is returned and that no authentication is required, providing additional 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, well-structured: first sentence states what it returns, second explains placeholders, third covers version and auth. It is reasonably concise but could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and schema coverage is high, the description covers key points: return data shape, placeholder behavior, version handling, and auth. It references sibling tool for slot shape, which adds context. No major gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds value by explaining placeholder resolution (assets to URLs, slots left intact) and that version mismatch returns specific errors, providing meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Returns the raw display HTML body of a published store template plus its static slot definitions and allowed external origins'. It specifies the verb 'Returns' and the resource (store template content). It distinguishes from siblings by mentioning the slots array shape referencing get_store_template_install_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool is for inserting a template as an editable slide and clarifies placeholder handling (resolved assets vs intact slots). It implicitly distinguishes from get_store_template_install_options by referencing its data shape, but does not explicitly state when not to use this tool or provide direct alternatives.
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 DetailsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The template slug (English kebab-case) returned by search_store_templates, e.g. 'bistro-warm-door' or 'agent-ops-cyan-wall'. | |
| language | No | Preferred content language. Defaults to 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| tags | No | |
| suite | No | |
| theme | No | |
| title | No | |
| category | No | |
| featured | No | |
| features | No | |
| fileName | No | |
| placement | No | |
| detailPath | No | |
| sourceKind | No | |
| description | No | |
| designStyle | No | |
| previewPath | No | |
| publishedAt | No | |
| introMarkdown | No | |
| setupMarkdown | No | |
| agentArtifacts | No | Agent-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. |
| previewImageUrl | No | |
| audienceMarkdown | No | |
| suiteDescription | No | |
| useCasesMarkdown | No | |
| categoryDescription | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint, idempotentHint, and destructiveHint. Description adds 'No authentication required' and details the agentArtifacts metadata-only nature, linking to related endpoints. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the key output. It is detailed but not excessively long. Minor improvement would be breaking into multiple sentences for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema presence, the description needn't detail return types, but it does so anyway. It also explains the relationship with two artifact endpoints, covering the full context for using this tool in a workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds useful context: slug format 'English kebab-case returned by search_store_templates' and language defaults/enum values. This enriches the schema without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns 'full public details of a single store template' and enumerates the fields (title, description, markdown, category, etc.), clearly distinguishing it from sibling tools like search_store_templates and the artifact retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this after search_store_templates picks a candidate' and explains how the result drives decisions (explain template, check for agent integration, choose install flow). Implicitly advises against using it to get artifact bodies.
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 OptionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Template slug returned by search_store_templates, e.g. 'bistro-warm-door'. | |
| language | No | Preferred UI language for labels. Defaults to 'en'. | |
| access_token | No | Optional JWT access token. | |
| session_request_id | No | Optional session request ID from create_auth_session. Preferred over access_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| displays | No | |
| language | No | |
| templateSlug | No | |
| requiredDataSlots | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: authentication scope requirements (content_only), scoping behavior for API-key callers (only see whitelisted displays), and a user-facing fallback instruction. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of four sentences, front-loaded with purpose and usage. It is concise without being terse. Could be slightly more structured (e.g., bullet points), but it efficiently conveys all necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (as indicated by context signals), the description does not need to detail return values. It covers authentication, scoping, error handling (no displays), and references sibling tools. This is complete for a read-only query tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive field descriptions. The description only adds minimal value for the 'slug' parameter by referencing search_store_templates and giving an example. For the other parameters, the description does not add 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns displays and data slots for a store template, with a specific verb ('Returns') and resource ('displays... plus data slots'). It distinguishes itself from the sibling send_store_template_to_display by explicitly noting this is a prerequisite call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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', provides context on authentication (content_only scope, API-key scoping), and instructs what to do when no displays are returned (tell user to create/claim a display, referencing sibling tools create_display and pair_by_code). This provides comprehensive when-to-use and when-not-to guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_memberInvite MemberADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | The role for the invited member. Valid roles depend on organization type: organizations accept 'admin' (manage members and displays), 'manager' (manage displays and content) or 'viewer' (read-only dashboard access); families accept 'child'. | |
| No | Optional email address to bind the invite to. If set, only this email address can accept the invite. | ||
| org_id | Yes | The organization ID to invite a member to. Obtain this from list_organizations. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| role | No | |
| orgId | No | |
| orgName | No | |
| expiresAt | No | |
| inviteUrl | No | |
| inviteToken | No | |
| inviteeEmail | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behaviors: invite validity period (7 days), email binding, auth requirements, and return value (inviteUrl). This adds context beyond annotations (which include destructiveHint=true, but description does not contradict).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficient and front-loaded with the primary purpose. Every sentence adds necessary detail without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, output schema exists), the description covers creation, validity, requirements, and return value. It is complete for the agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description adds value by clarifying the email parameter's purpose ('only that person can accept'), role valid roles, and org_id source. Some parameters like access_token are not elaborated, but the schema already documents them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates an invite link to add a member to an organization, using specific verbs and resources. It distinguishes from sibling tools like 'remove_member' and 'update_member_role' by its focus on invitation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies prerequisites (admin scope, admin/owner status) and optional email binding, but does not explicitly mention when not to use it or suggest alternative tools. Still provides clear context for invocation.
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 KeysARead-onlyIdempotentInspect
Lists all API keys for the current user. Returns key metadata (prefix, name, scope, dates) but never the raw key. Requires admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| keys | No | |
| count | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable behavioral context: it never returns the raw key (security) and requires admin scope (access control), which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown), the description does not need to detail return values. It covers purpose, key behaviors, security, and prerequisites, making it complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter 'access_token' is fully described in the input schema (100% coverage). The description does not add additional parameter details, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lists', the resource 'API keys', and the scope 'for the current user'. It specifies what metadata is returned and explicitly notes security (never raw key) and required scope, distinguishing it from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Requires admin scope' as a usage condition but does not explicitly state when to use this tool versus alternatives like create or revoke API keys. The context of listing is implied but not contrasted with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsList AssetsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by MIME category. | |
| limit | No | Maximum results (default: 50, max: 200). | |
| search | No | Search in filename and description (case-insensitive). | |
| group_id | No | Only assets of this group. Omit for personal assets. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| assets | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint. The description adds that it returns URLs, requires content_only scope, and can be used for duplicate checking, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action, and every sentence adds value. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and good annotations, the description covers essential context: scope requirements, duplicate checking, and filter options. Could slightly improve by mentioning pagination behavior (limit default) which is in schema but not in description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 summarizes the filter options but does not add new meaning beyond the schema. Access_token is not mentioned in the description but is covered in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists assets for the authenticated user with optional filtering, and returns asset URLs. It differentiates from siblings like upload_asset, delete_asset, and get_asset by specifying its listing function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises checking before uploading to avoid duplicates and mentions required authentication scope. However, it does not explicitly state when not to use this tool or mention alternatives like search for broader queries.
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 SlotsARead-onlyIdempotentInspect
Lists data slots with optional filtering. Returns metadata only (no jsonContent). Each item includes readUrl. Use readUrl in display HTML fetch() calls. Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default: 50, max: 200). | |
| offset | No | Offset for pagination. | |
| search | No | Search in label (case-insensitive). | |
| group_id | No | Group/organization ID to list shared group slots. Omit for personal slots. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| slots | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, non-destructive. The description adds that returns metadata only (no jsonContent) and includes readUrl, along with authentication requirement. This enriches understanding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no fluff. Front-loads the main action ('Lists data slots with optional filtering') and efficiently conveys key behavioral details in a structured manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given good schema descriptions, annotations, and existence of output schema, the description sufficiently covers behavior and usage. Lacks explicit mention of pagination behavior or distinction from single-slot retrieval, but overall complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have descriptions in the input schema (100% coverage), so baseline is 3. The description only mentions 'optional filtering' generally, without adding new details about parameters beyond what schema provides. No extra semantic enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists data slots with filtering, returns metadata only (no content), and includes readUrl. It effectively distinguishes from sibling tools like get_data_slot (single slot retrieval) and set_data_slot (write operation) by specifying scope and content type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use for metadata and readUrl without content, requires authentication. However, it does not explicitly state when not to use or suggest alternatives like get_data_slot for a single slot or set_data_slot for writing, but the intent is clear.
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 CategoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| categories | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the tool is clearly safe. Description adds value by specifying what data is returned (stable IDs, paths, assignment counts) and the required permissions. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the core function, second provides usage guidance. No superfluous words. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is a simple list operation. Description covers purpose, returned data, usage context, and auth requirements. Output schema exists (not shown but present), so return values are documented. No gaps for the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (access_token, session_request_id) described. Description does not add extra parameter-specific semantics beyond the schema, but the authentication scope context is indirectly relevant. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Lists the authenticated user's personal display categories with stable IDs, paths and assignment counts.' Clear verb 'lists' and resource 'display categories' with explicit output details. Differentiates from siblings like create_display_category or rename_display_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this to discover existing categories before assigning or replacing categories on a display.' Provides clear context and purpose. Also mentions authentication scope and capability requirements, aiding correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_displaysList DisplaysARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. | |
| session_request_id | No | Optional 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
| Name | Required | Description |
|---|---|---|
| count | No | |
| displays | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds value by specifying required authentication scope (content_only, admin not required) and detailing the structure of each display entry, including runtime summary fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and usage guidelines, then provides additional details on return structure and authentication. It is efficient but could be slightly trimmed; however, no wasteful repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, high schema coverage, presence of annotations, and an output schema (not shown but indicated), the description is complete: covers purpose, when-to-use, auth requirements, and return field details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (access_token and session_request_id) already described. The description does not add new parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns all displays accessible to the authenticated user as an array with count and details. It distinguishes from sibling tools like get_display (for a single display) and get_display_preview_url (for sharing a preview).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (discover display IDs before reading/modifying) and when not to use (for full details of one display, use get_display; for preview, use get_display_preview_url). Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsList OrganizationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| organizations | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and destructiveHint, so the safe nature is covered. The description adds the auth scope requirement ('content_only scope'), which is valuable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence states the core functionality, the second adds usage context and auth requirement. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter, the description is complete. It mentions the returned fields, usage context, and auth scope. Output schema exists for return value details, so no further explanation needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter. The description adds guidance on preferring session_request_id over access_token and explains the context for using the token, going beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Returns'), the resource ('all organizations'), and the specific data included ('role, display count, member count and allocated slots'). It distinguishes from sibling list tools like list_displays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('answer questions about the user's organizations...'), providing concrete use cases. Does not mention alternatives or when not to use, 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.
list_org_displaysList Organization DisplaysARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orgId | No | |
| orgName | No | |
| displays | No | |
| totalDisplays | No | |
| onlineDisplays | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds details beyond annotations: specifies returned data (connection status, state, license info) and required scope/membership. No contradiction with readOnly, idempotent, non-destructive annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core functionality, then usage context. No redundant or vague statements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key output fields, usage context, and requirements. With output schema present, description is sufficient. Lacks mention of pagination or filtering beyond org_id, but acceptable for a fleet monitoring tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. Description adds no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns displays in an organization with real-time status, state, and license info. Uses specific verb 'Returns' and resource 'displays in an organization'. Distinguishes from siblings via required org_id, but doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context ('Use for fleet monitoring') and requirements (content_only scope, org membership). Does not mention when not to use or suggest alternative tools 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 CategoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| totalApis | No | |
| categories | No | |
| totalCategories | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. Description adds that no authentication is needed, implying it's a straightforward, safe operation. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second provides usage context. No unnecessary words. Front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, output schema present, and annotations already covering safety, description fully covers what an agent needs: purpose, when to use, and that no auth is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. Description adds no parameter info since none needed. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists public-API categories with counts of APIs each. Explicitly contrasts with sibling search_public_apis by advising to call this before that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: before search_public_apis for guided category pick or when user asks about available categories. Also notes no authentication required.
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 CategoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | Preferred content language. Defaults to 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| language | No | |
| categories | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the bar is lower. The description adds value by specifying that the tool returns published categories only, and details the return structure (count, language, categories array with fields). It also states 'No authentication required,' which is extra 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each adding essential information: what it lists, example categories, usage guidance with sibling tool, and return structure. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple one-parameter tool with an output schema and sibling tools list, the description fully covers purpose, usage, return format, and security requirements. It leaves no gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter. The description adds the default value 'en' for language, which is not in the schema, and clarifies its purpose as 'Preferred content language.' This goes beyond the schema's enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists published agentView store categories with localized details, and explicitly names example categories like Gastronomie, Wartezimmer. It distinguishes itself from siblings like search_store_templates by explaining how it narrows subsequent calls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this to narrow a subsequent search_store_templates call when the user asks for templates for a waiting room or similar.' Also notes no authentication required, which helps the agent decide on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_displayLock DisplayAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to lock, e.g. 'ABCD1234'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| locked | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds that the display continues showing current content, requires admin scope, and returns id and locked boolean, supplementing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core action, and no wasted words. Every sentence adds value, including scope requirement and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple locking tool, the description covers purpose, use case, behavior, parameters, return value, and reversal. Output schema exists and return value is described, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters. The tool description does not add extra parameter meaning beyond what the schema provides, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Locks a display so that content changes such as send_html, send_url and clear_display are rejected until unlock_display is called.' This specifies the verb (locks) and resource (display) with concrete effects, and distinguishes from the sibling unlock_display.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It advises to use when protecting a display from accidental content changes and explicitly names unlock_display as the reversal tool. While no explicit when-not-to-use is given, the context is clear enough for typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutLogoutAIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| loggedOut | No | |
| sessionBound | No | |
| transportAuthRequired | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: it explains the cache-only effect, that protected tools require re-authentication, and the return shape. Annotations provide idempotentHint: true and destructiveHint: false, which the description complements 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (four sentences) and front-loaded with the core action. Every sentence adds value, covering purpose, usage, behavioral limitations, and return fields without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, existing annotations, and the presence of an output schema (implied by the return description), the description is complete. It explains the tool's effect, side effects, and return values, addressing everything an agent needs to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The description adds no parameter-specific detail, but that is appropriate since there are none. It provides context on side effects and return values, meeting the baseline expectation for a 0-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Clears the cached authentication identity from the current MCP session.' It specifies the resource (cached identity) and the verb (clears), and implicitly distinguishes from sibling tools like authenticate by focusing on session logout.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: 'when the user wants to end the session or switch accounts.' It also clarifies what it does not do: 'This does not revoke the underlying JWT token — it only removes the session-local cache.' This provides clear usage guidance and exclusions.
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 CodeADestructiveInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The 6-character pairing code shown on the display (e.g. 'AB3K7F'). | |
| access_token | No | Optional JWT access token for authentication. | |
| profile_name | No | Friendly name for the display (required for new pairing, ignored for rebind). Example: 'Lobby Screen'. | |
| target_display_id | No | To rebind: the existing display profile ID to switch to the new hardware. Omit for new display pairing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | No | |
| name | No | |
| profileId | No | |
| linkedHardwareId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations set readOnlyHint=false and destructiveHint=true, which align with the description's claim of creating and pairing in one step. The description adds context: no orphaned displays, modes ('new' or 'rebind'), and return fields (profileId, name, linkedHardwareId, mode). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and uses bold for emphasis. It is detailed but not verbose; every sentence serves a purpose. Minor redundancy (mode explanation could be slightly tighter) keeps it from 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and an output schema, the description covers the workflow (user action, two modes), prerequisites, admin scope, and return values. It fully equips an agent to understand usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds value by explaining when 'profile_name' is required (new pairing) vs ignored (rebind) and that 'target_display_id' is for rebinding. Example for 'code' provided. Slightly above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's the 'PREFERRED way to set up a physical display' and elaborates on two modes (new and rebind), distinguishing it from 'create_display' and 'create_org_display'. The verb 'pair' combined with 'display by code' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use this tool: 'Always prefer this over create_display or create_org_display for physical devices.' It also provides a step-by-step prerequisite (user opens URL, reads code) and explains when to use alternatives (pre-provisioning when screen unavailable).
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 HTMLARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| content_type | No | Which content to read: 'live' (default) returns the active content, 'idle' returns the idle/default content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| html | No | |
| name | No | |
| source | No | |
| hasContent | No | |
| htmlLength | No | |
| contentType | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds value by detailing that it returns HTML string plus metadata, handles idle content, and requires 'content_only' scope. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise with every sentence serving a purpose: purpose, use case, workflow, return info, edge case, and prerequisites. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, output schema exists), the description covers the core purpose, workflow, return value, edge case, and auth requirement. It lacks explicit mention of output schema details, but output schema handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions (100% coverage). The description does not add new meaning beyond what the schema provides, except for the note about required scope, which is not a parameter. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads raw HTML from a display, with a specific verb ('reads') and resource ('raw HTML source code'). It distinguishes itself by outlining a typical workflow involving send_html, which differentiates it from sibling tools like 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('to inspect, modify or reuse existing content') and provides a typical workflow. It does not explicitly exclude scenarios or name alternatives, but the context is clear enough for an AI agent to decide.
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 OrganizationADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| display_id | Yes | The display profile ID to remove. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | No | |
| displayId | No | |
| previousOrgId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations (destructiveHint=true) by detailing what gets destroyed: group assignment and all display grants, and that the display becomes unassigned. This helps the agent understand the full impact. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of just two well-structured sentences. The first sentence states the action and its effects, and the second sentence specifies requirements. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and complete annotations, the description adequately covers the tool's purpose, side effects, and authorization requirements. There are no obvious gaps in information needed for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents all parameters. The description does not add any additional semantic information about the parameters beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'Removes' and resource 'display from an organization', and it details additional effects like clearing group assignment and all display grants. This distinguishes it from sibling tools such as delete_display or 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use by specifying required roles ('admin scope and admin or owner role'). However, it does not explicitly state when not to use this tool or mention alternatives among the siblings.
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 GrantADestructiveInspect
Removes a user's access grant from a display within an organization. Requires admin scope and admin or owner role.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| display_id | Yes | The display profile ID. | |
| access_token | No | Optional JWT access token for authentication. | |
| target_user_id | Yes | The user ID whose grant to remove. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | No | |
| displayId | No | |
| targetUserId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true. The description adds permission requirements (admin scope/role), which are useful 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that front-loads purpose and includes critical usage constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple removal tool with destructive hint and output schema, the description covers key aspects. Lacks details on return value but output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. The description does not add additional meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description explicitly state the action 'removes' and the resource 'user's access grant from a display', clearly distinguishing it from sibling tools like set_display_grant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required admin scope and role, guiding when to use. It does not explicitly exclude alternatives but implies context via sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_memberRemove MemberADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| access_token | No | Optional JWT access token for authentication. | |
| target_user_id | Yes | The user ID of the member to remove. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orgId | No | |
| removed | No | |
| targetUserId | No | |
| displaysTransferred | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds significant value by detailing exactly what happens on removal: transfers owned displays to a successor, unassigns license allocations, and removes display grants. Also discloses the critical constraint about the last owner.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, highly concise. First sentence states the main action, second covers permissions and constraints. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with side effects, the description covers all key aspects: action, side effects, permissions, and constraint. Output schema exists to document return values, so no need to describe them here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for all three parameters (org_id, access_token, target_user_id). The description doesn't add new parameter-level detail beyond what's in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Removes a member from an organization' and lists specific side effects (transfers displays, unassigns licenses, removes grants) and a constraint ('Cannot remove the last owner'). This verb+resource+scope description effectively distinguishes from sibling tools like invite_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Requires admin scope and admin or owner role', providing clear usage context. Also notes the 'Cannot remove the last owner' constraint. However, no specific mention of when not to use or alternatives, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_displayRename DisplayADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new friendly display name. Non-empty string. | |
| display_id | Yes | The 8-character alphanumeric display profile ID to rename, e.g. 'ABCD1234'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds that admin scope is required and returns id and updated name, which are additional behavioral details 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two focused sentences: first states purpose, second covers usage guidance, scope requirement, and return info. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, output schema exists), the description covers purpose, usage, behavioral constraints, and return values adequately. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides full descriptions for all three parameters (100% coverage). The description does not add any extra parameter-level meaning, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool changes the friendly name of a display. It distinguishes from siblings by specifying it updates only the name without affecting content or state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it (updating display name only) and implies not for other modifications. It mentions required admin scope. However, it does not name alternative tools like 'configure_display' for broader updates.
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 CategoryADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| new_name | Yes | New category name. The path segment is normalised by the server. | |
| category_id | Yes | Current category ID to rename. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| path | No | |
| color | No | |
| count | No | |
| categoryId | No | |
| parentCategoryId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. Description adds valuable context: 'only the category name/path changes' and that existing references are preserved. This goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no redundancy. First sentence identifies the action, second explains impact, third states requirement. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple rename tool, the description covers purpose, side effects, and auth. It does not mention error cases or how to find category_id, but output schema likely covers return values. Sibling context is handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description does not add new parameter details 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Renames one personal display category by stable category ID.' Verb and resource are specific, and it distinguishes from siblings like rename_display (different resource) and create_display_category (create vs rename).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions prerequisite 'Requires display.manage capability' and clarifies safe usage ('Existing assignments and grants keep working'). However, it does not explicitly state when not to use or provide 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.
rename_organizationRename OrganizationADestructiveIdempotentInspect
Renames an existing organization. Requires admin scope and admin or owner role in the organization.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name for the organization. | |
| org_id | Yes | The organization ID to rename. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| orgId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=true. The description adds permission requirements but does not disclose additional behavioral traits such as side effects on linked resources or notifications. Since annotations provide the core safety profile, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the action, and contains no redundant or extraneous information. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple rename function with only three parameters. The description covers the core action and required permissions. The existence of an output schema explains return values, so no additional description is needed. The context is complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all three parameters (org_id, name, access_token). The description does not add any parameter-specific semantics beyond what is already in the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (rename) and the resource (organization). It effectively distinguishes from sibling tools like create_organization, delete_organization, and list_organizations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies required permissions (admin scope and admin/owner role), providing clear guidance on when the tool can be used. It does not explicitly mention alternatives or when not to use, but the requirement is sufficient for proper usage.
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 KeyADestructiveInspect
Permanently revokes an API key. This is irreversible — the key will immediately stop working. Requires admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| key_id | Yes | The ID of the key to revoke (from list_api_keys). | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| keyId | No | |
| revoked | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description adds crucial behavioral details: the key is permanently revoked, will immediately stop working, and the action is irreversible. This fully discloses 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two efficient sentences. The most critical information (action and irreversibility) is front-loaded, followed by a necessary requirement (admin scope). No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with only two parameters and an existing output schema, the description covers all essential aspects: action, irreversibility, immediate effect, and authentication requirements. It is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage of the two parameters with meaningful descriptions (e.g., key_id explained as 'The ID of the key to revoke (from list_api_keys)'). The description adds no further parameter details, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'permanently revokes an API key,' using a specific verb and resource. It distinguishes itself from sibling tools like list_api_keys and create_api_key by focusing on the revocation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions the requirement of admin scope, providing clear context for when to use the tool. However, it does not explicitly contrast with alternatives or advise against misuse, though the warning about irreversibility serves as implicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch ResourcesARead-onlyIdempotentInspect
Searches agentView resources by keyword and returns a ranked list of matching resource URIs with titles and snippets. Use this to discover resources before calling fetch for full details. Do not use this if you already know the exact resource URI — call fetch directly instead. Without authentication only public documentation resources are searched; with authentication your account and accessible displays are included. Returns query, resourceType, count and a results array where each entry has uri, type, title, snippet and requiresAuthentication.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return. Integer between 1 and 20 inclusive. Defaults to 5. | |
| query | No | Free-text search terms. Examples: a display name, 'account', 'OAuth', 'status'. At least one of query or resource_type should be provided. | |
| resource_type | No | Restricts results to a specific resource category. Must be one of: 'all', 'documentation', 'status', 'account', 'display', 'api'. Defaults to 'all' when omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | No | |
| results | No | |
| resourceType | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe read operation. The description adds value by detailing output structure (query, resourceType, count, results array with fields) and noting authentication scope changes, which is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences plus output structure, front-loaded with purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description is fully adequate: it covers purpose, usage, auth implications, return structure, and parameter guidance. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description adds examples for query and clarifies default values for limit (5) and resource_type ('all'). This enhances usability beyond schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches agentView resources by keyword and returns ranked results with URIs, titles, and snippets. It implicitly differentiates from fetch by advising to use search for discovery before fetch, but it does not explicitly differentiate from sibling search tools like search_public_apis or search_store_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use (discovering resources before fetch) and when not to use (if exact URI is known, call fetch instead). Also explains authentication-dependent behavior, giving clear context for the agent.
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 APIsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return, 1-20. Defaults to 10. | |
| query | No | Free-text search terms. Examples: 'weather forecast', 'random quotes', 'cat pictures', 'bitcoin price', 'jokes'. | |
| category | No | Filter by category ID. Examples: 'weather', 'finance', 'animals', 'food-drink', 'sports-fitness', 'news', 'entertainment'. Use 'all' or omit for all categories. | |
| cors_only | No | When true, only return APIs with confirmed CORS support (safe for browser-side fetch in HTML). Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | No | |
| results | No | |
| category | No | |
| corsOnly | No | |
| totalCatalogApis | No |
Tool Definition Quality
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 behavioral context beyond annotations, such as the APIs being free, no auth, HTTPS-only, and providing ready-to-use fetch code hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded, with each sentence adding value. It concisely states purpose, coverage, use case, and related tool suggestion without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (mentioned in context signals), the description does not need to detail return values, but it does mention the type of information returned (documentation links, CORS info, fetch hints). It adequately covers the tool's functionality and context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds useful context (e.g., examples, category coverage) but does not significantly enhance parameter understanding beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches a curated catalog of 600+ free, public APIs requiring no authentication and working over HTTPS, ideal for embedding live data in HTML via fetch(). It distinguishes itself from sibling tools like list_public_api_categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using this tool when generating HTML that needs live data and suggests using list_public_api_categories first for category-driven menus. It provides clear usage context but does not explicitly 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.
search_store_templatesSearch Store TemplatesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of templates to return. Defaults to 10. | |
| query | No | Free-text search over template title, description and tags. Examples: 'Zahnarzt', 'italienisches Bistro', 'conference room'. | |
| suite | No | Optional design-family suite slug (e.g. 'bistro-warm', 'sushi-minimal'). | |
| offset | No | Offset into the filtered result set for pagination. Defaults to 0. | |
| category | No | Optional category slug to restrict the search (English kebab-case, e.g. 'gastronomie', 'waiting-room'). | |
| language | No | Preferred content language. Defaults to 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| limit | No | |
| total | No | |
| offset | No | |
| language | No | |
| templates | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral details: 'No authentication required' and specifies the return structure (fields like total, offset, limit, templates array). This complements 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately concise but includes a full list of return fields ('total, offset, limit, language and a templates array with...'), which is redundant given the output schema. Could be trimmed without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent search tool with a defined output schema and fully documented parameters, the description covers purpose, usage, parameters, and behavioral context. It mentions no authentication, which is important. Slightly verbose but complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters. The description adds little beyond the schema, only restating the search use case and language default. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool searches a template store for ready-made designs, provides concrete examples ('Zahnarzt-Wartezimmer', etc.), and distinguishes from generating raw HTML. The verb 'searches' and resource 'public template store' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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.' This provides clear context, though no explicit when-not or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_htmlSend HTMLADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Complete HTML document or fragment to render on the display. Mutually exclusive with base64_html — provide exactly one. | |
| token | No | Display-specific preview token for unauthenticated demo-sign access. This is NOT the auth/JWT token. Omit this for normal authenticated usage. | |
| duration | No | How long the content stays on the display in seconds. 0 means indefinite (content persists until replaced). Defaults to 0 when omitted. | |
| display_id | Yes | The 8-character alphanumeric display profile ID to send content to, e.g. 'ABCD1234'. | |
| base64_html | No | Base64-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. | |
| description | Yes | Mandatory short human-readable description of the HTML upload (1-1000 characters), e.g. 'Weekly KPI dashboard with revenue and uptime'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. This is different from 'token' which is a display-specific preview token. | |
| content_description | No | Optional alias for description. If both are provided, description wins. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| file | No | |
| name | No | |
| version | No | |
| duration | No | |
| currentContentDescription | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description reinforces that the tool replaces current content. It adds behavioral details such as requiring content_only scope, display management access, default duration of 0, and return fields (id, name, duration, file, version). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized and front-loaded with the main action. Every sentence contributes value, though some details (like scope requirements) could be more integrated. Still, it remains clear and efficient without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8 parameters and full schema coverage, the description completes the picture by explaining return values, dependencies (scope, capabilities), and edge cases (duration=0 meaning indefinite). It adequately prepares the agent for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 beyond schema by clarifying the mutual exclusivity of html and base64_html, explaining the difference between token and access_token, and noting content_description as an alias. This extra context improves parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it pushes raw HTML to a display, replacing current content. It distinguishes itself from the sibling tool send_url by explicitly advising to use send_url only for external web pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance (prefer send_url for external pages) and when-not-to (avoid without proper scope). It also advises calling get_display_capabilities for complex content, and outlines required access and design system conventions.
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 DisplayADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Template slug to install, e.g. 'bistro-warm-door'. Must be a currently published template. | |
| display_id | Yes | Display profile ID (8-char alphanumeric) from list_displays or get_store_template_install_options. | |
| access_token | No | Optional JWT access token. | |
| idempotency_key | No | Optional 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_id | No | Optional session request ID from create_auth_session. Preferred over access_token. | |
| data_slot_overrides | No | Optional { 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
| Name | Required | Description |
|---|---|---|
| fileName | No | |
| displayId | No | |
| versionId | No | |
| templateSlug | No | |
| overrideCount | No | |
| installedSlots | No | |
| contentVersionId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: it explains how the server materializes HTML, auto-creates/reuses data slots, publishes for quick updates, and details optional overrides. It also lists all possible error codes and mentions auth requirements (scope, control access, capability). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise: first sentence states purpose, then procedural details, auth requirements, error list, and prerequisite call. Every sentence adds value; no unnecessary words. Approximately 100 words, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with 6 parameters, nested objects, and an output schema. The description covers the full installation flow, including idempotency, slot reuse, error handling, and required preconditions. It does not need to explain return values as output schema exists. Complete for an AI agent to understand and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clarifying idempotency key format and use case, data_slot_overrides limits (64 KiB, 64 overrides, unknown keys dropped), and session_request_id preference over access_token. This enhances the schema descriptions meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Installs a published store template onto one of the authenticated user's displays.' It specifies the verb (Installs), the resource (store template), and the target (displays). It also distinguishes from siblings by mentioning the prerequisite call to get_store_template_install_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to install a template. It includes a prerequisite (always call get_store_template_install_options first) and explains idempotency to avoid duplicate installs. However, it does not explicitly compare with alternative send_* tools (e.g., send_html, send_url) or specify 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.
send_urlSend URLADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The absolute HTTP or HTTPS URL to load on the display. Example: 'https://example.com/dashboard'. | |
| duration | No | How long the content stays on the display in seconds. 0 means indefinite. Defaults to 0. | |
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| content_description | No | Optional human-readable summary of what this URL content is about (recommended). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| file | No | |
| name | No | |
| version | No | |
| duration | No | |
| currentContentDescription | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and readOnlyHint=false. Description adds context: immediately replaces current content, requires absolute HTTP/HTTPS, and mentions authentication scope. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is moderately long but well-structured with key information front-loaded. Each sentence adds value, though could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and existing output schema, the description covers purpose, usage, constraints, prerequisites, and alternatives. Returns are covered by output schema. Complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 useful context for url (must be absolute HTTP/HTTPS) and content_description (for intent communication), but does not add meaning for all parameters beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it loads a web page using a full-page iframe and immediately replaces current content. It distinguishes from siblings like send_html (prefer when design quality needed) and other display tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (show external website/dashboard/web app), when not to (prefer send_html if design needed), and prerequisites (check get_display_capabilities, require content_only scope). Provides clear alternatives.
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 SlotADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Stable 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. | |
| type | No | Slot kind. 'value' (default) stores 'content' verbatim. 'aggregate' stores 'content' as a composite-slot definition. Immutable after creation. | |
| label | No | Human-readable label (max 200 chars). Required when creating a new slot; optional on update. | |
| content | Yes | JSON 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_id | No | Group/organization ID for shared group slots. Omit for personal slots. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slug | No | |
| type | No | |
| label | No | |
| groupId | No | |
| readUrl | No | |
| sizeBytes | No | |
| updatedAt | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: size limit (2 MB), slug stability, public URL not secret, aggregate constraints (32 sources, one prefixMatch, same scope), and return fields. Annotations only indicate destructiveness and idempotence, but the description enriches this with practical details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient with four sentences conveying essential information. It is front-loaded with the main purpose. Could be slightly more concise, but it balances detail and brevity well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (two modes, six parameters, aggregate constraints), the description covers creation/update behavior, type differences, limitations, scope requirement, and return metadata. It is complete for the agent to understand usage without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description adds further meaning, especially for 'slug' (not secret), 'type' (details of each kind), and 'content' (structure for aggregates). This goes beyond the schema but does not fully compensate for missing schema description since coverage is already high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates or updates a mutable JSON data slot, distinguishes it from siblings (get, delete, list) by explaining the write behavior, and details the two types ('value' and 'aggregate'). It is specific about the resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use each type and mentions the required content scope. It does not explicitly list alternatives or state when not to use, but the context of siblings and the detailed usage of types provides clear guidance.
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 DisplayADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID. | |
| access_token | No | Optional JWT access token for authentication. | |
| category_ids | Yes | Array of category IDs to set on the display. Empty array clears assignments. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| displayId | No | |
| categoryIds | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior; the description adds important context about scope (personal vs. organization), that clearing assignments is done with an empty array, and that it never deletes other managers' categories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each adding essential information: main action, clearing behavior, and scope/capability requirement. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and annotations, the description covers purpose, key behavioral aspects, and prerequisites. It could mention optional parameters or error handling but is sufficiently 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description reiterates the schema's points for display_id and category_ids but adds no new semantic details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool replaces the caller's personal category assignments on a specific display, distinguishing it from related tools like bulk_assign_display_category by specifying 'on one display' and 'personal category scope'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating it replaces personal assignments and requires display.manage capability, but it does not explicitly compare with sibling tools or provide when-not-to-use guidance.
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 OriginsADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| origins | Yes | Origin 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_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. Preferred over access_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| changed | No | |
| embeddableOrigins | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true and idempotentHint=true. The description additionally reveals that this operation requires admin scope and is audit-logged. It explains the effect of passing empty array (clears allowlist) and the dependency on privacy_mode, providing useful behavioral context beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loading the main action and then adding conditions and examples. Every sentence adds necessary information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (though not shown), the description doesn't need to detail return values. It covers the core purpose, parameter behavior, conditions for effectiveness, auth requirements, and side effects (audit logging). This is 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The description adds significant value by explaining the semantics of 'origins' (empty array means allow all origins for public displays, specific origins lock embedding), the allowed format (full HTTPS origin), and the interaction with privacy_mode. This goes beyond the schema's basic type and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets the origin allowlist for embedding, specifying the resource (display embeddable origins) and the action. It distinguishes itself by focusing specifically on embed origins, which is not covered by sibling tools. The condition regarding privacy_mode further clarifies its specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool (to restrict third-party embedding) and when it's not effective (private displays). It provides guidance on using empty array vs specific origins. While it doesn't explicitly name alternatives, the context is clear given the sibling tools. The admin scope requirement and audit-logging are also mentioned.
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 GrantADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| display_id | Yes | The display profile ID. | |
| access_level | Yes | Access level: 'view' or 'control'. | |
| access_token | No | Optional JWT access token for authentication. | |
| target_user_id | Yes | The user ID to grant access to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| granted | No | |
| displayId | No | |
| accessLevel | No | |
| targetUserId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and destructive hints; description confirms idempotent 'Creates or updates' and adds requirement for admin scope, which annotations lack. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose. 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites (user must be member, admin scope), access levels, and mutation behavior. Output schema exists, so return format explanation is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning by explaining access level enum: 'view' (see status) or 'control' (send content), providing clarity beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Grants a specific user access to a specific display within an organization' with a specific verb and resource, and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides context on when to use: requires target user to be an organization member and admin scope. Lists access levels. Does not explicitly state alternatives but implies usage scope.
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 ModeADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| privacy_mode | Yes | Desired privacy mode. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| changed | No | |
| privacyMode | No | |
| previousPrivacyMode | No | |
| shareLinkMaxTtlSeconds | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations: flipping is audit-logged and requires admin scope. However, it does not elaborate on what exactly is 'destructive' (as hinted by annotations), and the idempotent hint is acknowledged but not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, every sentence adds value, and the key information is front-loaded. No redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (not shown), the description sufficiently covers the tool's behavior for a simple setting operation. It addresses prerequisites, parameter effects, and logging. Minor omission: no mention of error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant meaning to the 'privacy_mode' parameter by explaining the TTL caps and PII considerations, which is beyond the raw enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 that caps share-link TTL, with specific meanings for 'Private' and 'Public'. It distinguishes the tool's purpose from siblings like 'configure_display'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use each privacy mode (Private for displays with PII, Public for digital-signage) and notes that admin scope is required. However, it does not explicitly state when not to use this tool or compare it 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 ContentADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Absolute HTTP or HTTPS URL to use as idle content; the server wraps it in a sandboxed full-page iframe. Mutually exclusive with html. | |
| html | No | Complete HTML to use as idle content. Omit this (and url) to clear custom idle content. Mutually exclusive with url. | |
| display_id | Yes | The 8-character alphanumeric display profile ID, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. | |
| content_description | No | Optional human-readable summary for the idle/default content. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| idleFile | No | |
| idleVersion | No | |
| idleContentCleared | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by detailing mutual exclusivity of html/url, the iframe wrapping, immediate vs dormant behavior, and the admin scope requirement. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (4 sentences), front-loaded with the main purpose, and each sentence provides essential context without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and five parameters, the description covers all key aspects: usage, parameter interactions, behavioral nuances, and auth requirements. It is complete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the description still adds meaning by explaining mutual exclusivity of html/url, the effect of omitting both to clear content, and the purpose of content_description, which is not fully captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Sets or clears' and the resource 'default idle content for a display', distinguishing it from sibling tools that handle active content or other display configurations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use it (for idle content) and the behavioral conditions (immediate push if display idle, dormant otherwise). While it doesn't explicitly list alternatives, the context is sufficient for an agent to decide.
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 ConnectivityADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | The organization ID. | |
| access_token | No | Optional JWT access token for authentication. | |
| global_whitelist | No | Org-wide whitelist of allowed URL patterns. Pass an empty array to clear. | |
| default_connectivity_mode | No | Default connectivity mode for all org displays. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orgId | No | |
| globalWhitelist | No | |
| defaultConnectivityMode | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive hint and idempotent hint. The description adds context: requires admin scope and Org-Admin role, and settings apply to all displays unless overridden. This goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, each adding value. First sentence defines purpose and scope, second gives usage context. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, description need not explain return values. It covers when to use, prerequisites, and inheritance behavior. Lacks error or side-effect details, but adequate for a set operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds extra detail for global_whitelist ('Pass an empty array to clear'), which adds meaning beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Sets' and the resource 'default connectivity mode and global whitelist for an organization.' It differentiates from sibling tools by specifying scope and use case (org admin declaring network topology).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this when an org admin wants to declare their network topology' and mentions required admin scope and role. However, it does not explicitly state when not to use or name alternative tools for display-level overrides.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_feedbackSubmit FeedbackAInspect
Sends the user's product feedback about agentView to an internal review queue. Use this ONLY when the user explicitly wants to share feedback, a feature request, a complaint, or praise about agentView itself (not about the content shown on a display). Always confirm the wording with the user before sending; never invent or embellish feedback on their behalf. Requires authentication with at least content_only scope. The feedback is stored for later review; no automatic reply is sent and this does not open a support ticket. Returns the new feedback id and a status of 'received'.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The user's verbatim feedback text (max 2000 characters). Pass what the user actually said; do not paraphrase or add your own commentary. | |
| sentiment | No | Optional overall sentiment of the feedback. Set only when the user's tone is clear; omit if unsure. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. Preferred over access_token. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| status | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that feedback is stored for later review, no automatic reply is sent, and it does not open a support ticket. Mentions required auth scope. These details add value beyond the annotations, which only indicate readOnlyHint and destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and usage conditions. It's somewhat lengthy but every sentence adds value. Could potentially tighten some phrases without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (as indicated in context signals), the description doesn't need to explain return values. It covers purpose, usage guidance, behavioral traits, and parameter semantics comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaningful guidance for the message parameter (use verbatim text, don't paraphrase) and sentiment parameter (set only when tone is clear, omit if unsure). This extra context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends user feedback about agentView to an internal review queue. It distinguishes from sibling tools by specifying it's for feedback about the product itself, not displayed content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this ONLY when the user explicitly wants to share feedback, a feature request, a complaint, or praise about agentView itself' and advises against using for displayed content. Also instructs to confirm wording with user before sending.
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 ContentARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| html | No | Complete HTML document to validate. Mutually exclusive with base64_html — provide exactly one. | |
| base64_html | No | Base64-encoded HTML payload. Mutually exclusive with html. | |
| description | Yes | Short human-readable description of what the HTML represents (1-1000 chars). Same validation rules as send_html. | |
| access_token | No | Optional JWT access token for authentication. | |
| session_request_id | No | Optional session request ID returned by create_auth_session. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| success | No | |
| displayId | No | Always 'test' — no real display is touched. |
| simulated | No | |
| sizeBytes | No | |
| description | No | |
| displayName | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behaviors beyond annotations: no display_id needed, response includes simulated=true, size summary, 1 MB cap, authentication but no display-scope check. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
5 sentences packed with essential information, front-loaded with core purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations and output schema exist, the description covers safety (simulated), limits (1 MB), auth details, and usage context. Fully complete for a validation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description adds value by clarifying 'No display_id is needed' and that validation rules match send_html. Slightly above baseline for adding context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's a 'DRY-RUN validator for HTML payloads' with specific verb and resource. It distinguishes from siblings like send_html by emphasizing it does not touch real displays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (after generating HTML, before real send) and provides examples. Also notes what not to use it for (real display updates).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unassign_licenseUnassign LicenseADestructiveIdempotentInspect
Removes a premium license from a display; the license returns to the account's available pool and the display reverts to the free-tier watermark. Requires admin scope.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to remove a license from, e.g. 'ABCD1234'. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| name | No | |
| badgeMode | No | |
| freeLicenses | No | |
| isPremiumAssigned | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true, readOnlyHint=false), the description adds that the license returns to the available pool and the display reverts to free-tier watermark, disclosing important behavioral outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, no wasted words. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema coverage and annotations, the description is complete: it explains the mutation effect, authorization requirement, and outcome. With an output schema existing, return value description is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters fully (100% coverage). The description does not add any parameter-specific details beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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, explains the effect (returns to pool, reverts to watermark), and specifies the admin requirement. This distinguishes it from sibling 'assign_license'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool over alternatives like 'assign_license' or 'allocate_licenses', but the action and effects are straightforward. The admin scope requirement provides some guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_displayUnlock DisplayAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| display_id | Yes | The 8-character alphanumeric display profile ID to unlock, e.g. 'ABCD1234'. | |
| access_token | No | Optional bearer credential. Prefer passing session_request_id (from create_auth_session) instead; every tool accepts it and the server resolves it to your identity server-side. Use access_token only when you hold an OAuth bearer token and your MCP client cannot send it as an Authorization: Bearer HTTP header automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| locked | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true, destructiveHint=false), the description adds that the tool requires admin scope and returns 'id' and 'locked (boolean false)'. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—three sentences delivering action, usage context, requirement, return info, and alternative. No fluff, front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 presence of an output schema, the description covers all necessary aspects: what it does, when to use it, required scope, return values, and a pointer to the reverse operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both parameters have clear descriptions. The tool description does not add additional meaning beyond what is already in the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('unlocks a previously locked display') and the resource ('display'). It distinguishes from the sibling 'lock_display' by explicitly mentioning the alternative, and from content-modifying tools like 'send_html' by explaining that unlocking enables them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance ('Use this when the user wants to resume managing a locked display') and mentions the prerequisite ('Requires admin scope'). It does not explicitly state when not to use it, 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.
update_assetUpdate AssetADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New filename for the asset. | |
| asset_id | Yes | The asset ID to update. | |
| description | No | New description for the asset. | |
| access_token | No | Optional JWT access token for authentication. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | |
| name | No | |
| assetId | No | |
| description | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: 'The URL does not change' and scope requirement. Annotations indicate destructiveHint=true and idempotentHint=true, which are consistent. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. Front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, no enums, and an output schema, the description adequately covers constraints and side effects for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds the constraint that at least one of name or description must be provided, which is not in the schema (only asset_id required).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it updates name/description of an asset, specifies that URL doesn't change, and requires at least one of name/description. Distinct from create/delete/upload siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'At least one of name or description must be provided' and 'Requires authentication with at least content_only scope.' Does not explicitly compare to alternatives, 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_member_roleUpdate Member RoleADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | The new role. Valid roles depend on organization type (e.g. 'admin', 'manager', 'viewer'). | |
| org_id | Yes | The organization ID. | |
| access_token | No | Optional JWT access token for authentication. | |
| target_user_id | Yes | The user ID of the member whose role to change. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orgId | No | |
| newRole | No | |
| previousRole | No | |
| targetUserId | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral constraints beyond annotations: it states that the operation cannot change your own role or the owner's role. Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description adds useful context about specific limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the primary action. Every sentence adds value: the first states the operation, the second adds critical constraints. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (so return values are not needed) and the completeness of the description in covering purpose, constraints, and authorization, the description provides sufficient context for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters, so the description does not need to add parameter details. The description does not elaborate on parameter meanings beyond what is in the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Changes a member's role') and the resource ('within an organization'). It also includes specific constraints (cannot change own role or owner's role) that distinguish this tool from sibling operations 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.
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 (to change a role) and when not to (cannot change own role or owner's role). It also provides prerequisites: requires admin scope and admin or owner role, giving clear guidance on authorization requirements.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Array of file objects, each with 'name' (filename with extension) and 'data' (base64-encoded content). | |
| group_id | No | Optional group ID to associate the assets with. | |
| access_token | No | Optional JWT access token for authentication. | |
| descriptions | Yes | JSON object mapping each filename to a human-readable description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| assets | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: assets are cached on displays, files must be base64-encoded, and authentication requires content_only scope. No contradictions with annotations (all false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each purposeful. No repetition or fluff. Front-loaded with the main action and result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers purpose, usage, encoding, caching, and auth. No major gaps for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds value by explaining encoding requirement and authentication scope, which goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool uploads files as assets and provides stable URLs for use in HTML. It distinguishes from sibling tools like delete, update, or list by focusing on the upload action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage guidance (e.g., use URLs in HTML, base64 encoding, authentication scope). Does not explicitly compare to alternatives like update_asset, but 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.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!