srgplus-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@srgplus-mcplist all hubs in my workspace"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
srgplus-mcp
mcp-name: io.github.srgplus/srgplus-mcp
MCP server for SRG+ — lets Claude (and any MCP-aware agent) manage hubs, channels, content, assets, users, and workspaces through the SRG+ API.
Two ways to run it:
Hosted HTTP (recommended for production / claude.ai web / Cursor / Cline) — single endpoint, header-based auth, multi-tenant
Local stdio (for desktop dev / offline) — single user, env-var auth, runs as a child process of the agent
Both modes share the same tools and the same SDK underneath — you pick the transport that fits your client.
Hosted HTTP
Run the server
pip install 'srgplus-mcp[server]'
srgplus-mcp-serve # listens on $PORT (default 8090)Or in Docker:
docker build -t srgplus-mcp .
docker run -p 8090:8090 srgplus-mcpHealth check:
curl http://localhost:8090/healthConnect from Claude / Cursor / any MCP client
{
"mcpServers": {
"srgplus": {
"url": "http://localhost:8090/mcp",
"headers": { "X-API-Key": "srgplus_your_key_here" }
}
}
}Or use Authorization: Bearer srgplus_... instead of X-API-Key — both work.
For a hosted public endpoint pointed at your SRG+ workspace, the URL becomes
https://mcp.srgplus.com/mcp (rolling out — see SRGDEV-8 follow-ups for the
deploy plan).
Related MCP server: Notion MCP Server
OAuth (claude.ai web, Connectors Gallery, ChatGPT Apps)
For browser-based clients that require OAuth 2.1 (DCR + PKCE):
In claude.ai → Settings → Connectors → Add custom connector
URL:
https://mcp.srgplus.com/mcpLeave OAuth fields empty — the wizard will discover, DCR-register, and redirect to a consent page
On the consent page: paste your SRG+ workspace API key
Tools appear in claude.ai
Endpoints exposed (all under the same hostname as /mcp):
Endpoint | Purpose |
| RFC 8414 metadata |
| RFC 9728 metadata |
| RFC 7591 Dynamic Client Registration |
| Authorization endpoint with consent page |
| Token endpoint (PKCE S256 required) |
| RFC 7009 revocation |
Backwards compatibility: the X-API-Key header and Authorization: Bearer srgplus_... flows from above still work. OAuth tokens (RFC-shaped
JWTs) are detected automatically when the bearer value doesn't start with
srgplus_.
Multiple workspaces
Each SRG+ workspace API key is scoped to a single workspace, so one OAuth session today connects one workspace.
To connect Claude to several workspaces at once, add the SRG+ connector multiple times in claude.ai → Settings → Connectors. Each instance goes through its own OAuth flow with the API key for that workspace:
SRG+ (Acme) → https://mcp.srgplus.com/mcp → API key for Acme workspace
SRG+ (Personal) → https://mcp.srgplus.com/mcp → API key for Personal workspace
SRG+ (Studios) → https://mcp.srgplus.com/mcp → API key for Studios workspaceTools from each connector show up in claude.ai under their connector name, so you can scope a request to a specific workspace by mentioning the connector ("use SRG+ Acme to find content X").
A single-OAuth multi-workspace flow (Airtable-style: pick multiple workspaces in one consent screen, server provisions scoped keys automatically) is tracked in SRGDEV-27 and will land in a future release. Until then, the multi-connector approach above covers the same use case with no extra code.
Production secrets
In production, set these via GCP Secret Manager so token state survives process restarts:
Env var | Purpose |
| Canonical issuer URL (e.g. |
| HMAC key for DCR |
| HMAC key for codes/access/refresh tokens |
| 32-byte AES-GCM key (base64url) for wrapping the SRG+ workspace api_key inside JWTs |
If any are unset the server generates an ephemeral random key per process — fine for local development, but every process restart invalidates all in-flight authorizations.
How auth works
Each request must carry the workspace API key in either header:
X-API-Key: srgplus_...Authorization: Bearer srgplus_...
The server doesn't pre-validate the key — it binds it to the SDK's
per-request contextvar via SRGClient.use_api_key(...) and lets the SRG+
SDK make the actual call. Bad keys surface as 401 from the upstream API on
the first tool invocation.
A single shared SRGClient (and therefore a single httpx connection pool)
serves every request, so the per-request overhead is just a contextvar
set/reset — no per-key client construction or cache.
Local stdio (developer mode)
Use this when you're building locally against SRG+ and want a child-process MCP without running an HTTP server.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"srgplus": {
"command": "uvx",
"args": ["srgplus-mcp"],
"env": {
"SRG_API_KEY": "srgplus_your_key_here"
}
}
}
}Restart Claude Desktop. The uvx command downloads and runs the package
automatically — no separate install step needed.
Claude Code
claude mcp add srgplus -- uvx srgplus-mcp
export SRG_API_KEY=srgplus_your_key_hereGetting an API key
Log in to SRG+ → Settings → Workspaces → Select Workspace → API Keys →
create a new key. Use the same key for both stdio (SRG_API_KEY env var) and
hosted HTTP (X-API-Key header).
Available tools
Hub Profiles
list_hub_profiles · list_managed_hub_profiles · get_hub_profile · get_hub_profile_by_username · filter_hub_profiles · create_hub_profile · update_hub_profile · archive_hub_profile · restore_hub_profile · delete_hub_profile · join_hub_profile · invite_to_hub_profile · list_invitations · update_invitation · delete_invitation · get_invitation_link · move_hub_profile_to_workspace · turn_on_hub_profile_community
Channels
list_channels · get_channel · get_channel_by_name · create_channel · update_channel · archive_channel · delete_channel · create_category · update_category · archive_category · delete_category · get_category_by_slugs · create_section · update_section · delete_section
Contents
list_contents · get_content · get_content_v2 · create_content · update_content · move_content · search_contents · add_content_to_category · add_content_to_categories · remove_content_from_categories · get_category_references · create_content_section · update_content_section · delete_content_section · add_subcontent · get_subcontent · move_subcontent · delete_subcontent · patch_content_progression · get_progression_stats
Assets
upload_asset · list_assets · get_asset · search_assets · create_embed_asset · update_asset · patch_media_progression
upload_assetcreates an asset and uploads its bytes in one call (from asource_urlorbase64_content) — use it for any file, image, or video. The oldercreate_image_asset/create_video_asset/create_file_asset/create_media_assettools only register an empty record and are deprecated.
Users & Permissions
get_user · check_user_exists_by_email · check_user_exists_by_phone · get_workspace_users · give_permission · delete_permission · can_read · can_edit · can_archive · can_create_child · can_manage_permissions · is_member · get_permission_targets · list_permission_groups · get_permission_group · create_permission_group · update_permission_group · delete_permission_group · add_users_to_permission_group · remove_user_from_permission_group
Workspace
get_workspace · update_workspace · get_workspace_hub_profiles · list_workspace_actions · get_workspace_action · create_workspace_action · update_workspace_action · delete_workspace_action · invite_to_workspace · get_workspace_invitation_link · list_workspace_invitations · update_workspace_invitation · delete_workspace_invitation
Available Tools
103 toolsadd_content_to_categoriesAInspect
Add a content item to one or more channel categories.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the content item
channel_id: ID of the channel
category_ids: IDs of the categories inside that channel to add the content to
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| content_id | Yes | ||
| category_ids | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=false, but the description adds no side-effect, permission, idempotency, or error behavior details. Transparency is limited to the basic mutation stated in the action.
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?
One-sentence purpose followed by a clean parameter list. No filler, redundancy, or unnecessary detail.
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 action and all parameters are sufficiently covered. Since an output schema is present, return-value details are not required, and no critical context is missing.
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 four required parameters are explained in the description, including a source hint for workspace_id and clarification that category_ids are scoped to the given channel. This adds substantial meaning beyond the bare 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?
States a specific action: 'Add a content item to one or more channel categories', clearly identifying the resource and target. The plural 'one or more' distinguishes it from the sibling add_content_to_category 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?
The description implies use for multi-category assignment via 'one or more', but it does not explicitly contrast with add_content_to_category or state when to prefer this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_content_to_categoryCInspect
Add one or more content items to a section inside a channel category.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| section_id | Yes | ||
| category_id | Yes | ||
| content_ids | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the description is not required to repeat those. It does specify the additive nature ('Add one or more content items'), which aligns with the annotations. However, it does not describe side effects, such as whether existing associations are preserved or replaced, so it adds limited behavioral detail beyond the annotation.
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 very brief and to the point, with no unnecessary fluff. It consists of two short sentences and includes a parameter hint inline. However, the structure is minimal and does not cover other parameters, which slightly detracts from its overall usefulness.
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 is incomplete for a tool with 5 required parameters. It does not explain how to obtain channel_id, section_id, or category_id, nor the relationship between sections and categories. It also fails to mention that content_ids is an array and how multiple items are added. The guidance only covers workspace_id, leaving the tool largely undocumented in 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?
The schema has no descriptions for any parameters. The description only explains workspace_id, leaving channel_id, section_id, category_id, and content_ids undefined. With only 1 of 5 parameters covered (20%), it fails to provide necessary semantic meaning for the majority of the input fields.
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: adding content items to a section inside a channel category. It uses a specific verb and resource, and the mention of 'section inside a channel category' differentiates it from the sibling add_content_to_categories. However, it does not explicitly name the alternative, which slightly reduces clarity.
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?
Only workspace_id is given guidance, with a hint to retrieve it from list_workspaces(). There is no explanation of when to use this tool versus add_content_to_categories or section-related operations. The description lacks contextual instructions for selecting this specific operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_subcontentAInspect
Link existing content items as subcontent inside a collection section.
Subcontent is the nested content that lives inside a Collection — think
lessons inside a course, or chapters inside a module. A Content item
automatically becomes a Collection once it has at least one subcontent item.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the collection (the parent content item)
category_name: "Content" for nested content items, "Asset" for nested assets
section_id: ID of the section to add the subcontent into
(create a section first with create_content_section if needed)
subcontent_ids: list of content IDs to link as subcontent (one or more)
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| section_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes | ||
| subcontent_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, which the description does not contradict. The description transparently explains the side effect: a Content item automatically becomes a Collection once it has at least one subcontent item. It does not mention permission requirements or whether existing subcontent is replaced, but the annotations carry the basic safety profile and the description adds meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a short summary followed by a clear bullet-style parameter list. Each line is purposeful and directly aids invocation. No fluff or redundancy is present.
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 operation, parameter meanings, and key behavioral rule (automatic Collection promotion). It does not mention the output schema contents, but the output schema is present and self-explanatory. Given the tool's moderate complexity, the description is complete enough for correct usage without being overlong.
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?
Although the JSON schema provides no descriptions, the tool description manually explains every parameter: workspace_id, content_id, category_name, section_id, and subcontent_ids. It even clarifies the allowed values for category_name ('Content' vs 'Asset') and tells users where to find workspace IDs. This fully compensates for the schema's lack of 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: linking existing content items as subcontent inside a collection section. It elaborates with a concrete analogy ('lessons inside a course, chapters inside a module') and clarifies the automatic Collection promotion rule, making the purpose specific and distinguishable from sibling tools like add_content_to_category or move_subcontent.
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 the tool by defining subcontent and when an item becomes a Collection. It also provides helper pointers for obtaining workspace IDs and creating sections via sibling tools. It does not explicitly say when NOT to use this tool versus alternatives like move_subcontent, but the context and parameter guidance are sufficient for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_users_to_permission_groupBInspect
Add one or more users to a permission group.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | ||
| user_ids | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint=false, destructiveHint=false) are minimal and do not convey side effects. The description does not disclose whether it is idempotent, what happens if a user is already a member, or any impact on existing permissions. The burden falls on the description, and it is largely silent.
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 and to the point. The single sentence plus the workspace_id hint contains no fluff and every sentence contributes useful 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 simple nature of the operation, the description omits crucial context such as expected format of user_ids (array of strings? email addresses?), behavior on duplicate membership, and whether the operation is idempotent. It is not complete enough for an agent to call without additional assumptions.
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 workspace_id is explained (with a pointer to list_workspaces()). group_id and user_ids are left entirely to the schema, which provides no descriptions. With 0% schema coverage, the description adds little value for these 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 action: adding users to a permission group. It differentiates from the sibling tool 'remove_user_from_permission_group' and is unambiguous about the core operation.
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 a helpful hint for obtaining workspace IDs via list_workspaces(), but it does not explicitly contrast with alternatives (e.g., when to use this vs. invite_to_workspace or giving permissions) or mention any conditions or caveats for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_categoryCDestructiveInspect
Archive a category inside a channel.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint: true and readOnlyHint: false, so the agent already knows this is a destructive operation. However, the description adds no details about side effects, reversibility (e.g., whether restore_category can undo it), or permissions required, missing an opportunity to enrich the 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 extremely concise, using a single sentence plus a parameter hint with no fluff. It leads with the action, so it is front-loaded and easy to parse, though the brevity sacrifices essential details.
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 only one of three parameters and omits any context about the operation's outcome, side effects, or relationship to sibling tools (e.g., restore_category, delete_category). While the workspace_id hint is useful, the overall picture is incomplete for an agent to confidently use the 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 input schema lists three parameters (channel_id, category_id, workspace_id), but the description only explains workspace_id, leaving channel_id and category_id completely undocumented. With schema description coverage at 0%, the lack of parameter explanations is a significant gap for correct invocation.
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 ('Archive') and the resource ('a category inside a channel'), which is specific and distinct from sibling tools like delete_category or restore_category. However, it doesn't elaborate on the meaning of archiving in this context, so it's clear but not fully descriptive.
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 a single hint for workspace_id (referencing list_workspaces()) but gives no guidance on when to use this tool versus alternatives, how to obtain channel_id or category_id, or any prerequisites or consequences. This leaves the agent to infer usage from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_channelADestructiveInspect
Archive a channel (hidden from members, content preserved).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context by noting the channel is hidden and content is preserved, which goes beyond the raw annotations. Although destructiveHint is true, the description does not explicitly state whether the archive can be undone, but the presence of restore_channel in sibling tools mitigates this gap.
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, using a single sentence with a helpful parenthetical. It avoids unnecessary detail while conveying the essential purpose and a key parameter source.
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 is present, the description does not need to explain return values. It provides enough context for when to use the tool, though it could mention how to obtain channel_id or the relationship between channel and workspace.
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 workspace_id is described with a source for valid values; channel_id is left to inference from its name. The schema provides no descriptions, so the description covers only half of the parameters and lacks details on constraints or possible 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 states the specific action (archive a channel) and its effect (hidden from members, content preserved), making the tool's purpose immediately clear. It also naturally distinguishes this from sibling tools like delete_channel and restore_channel.
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 where to get workspace_id and implies the non-destructive nature of archiving by noting content is preserved. It does not explicitly compare this tool to alternatives such as delete_channel, but the sibling names and the parenthetical make appropriate usage inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_contentADestructiveInspect
Archive a content item (hidden from listings, fully reversible).
The platform has no hard delete for content — archiving is how you remove
a content item from view; use restore_content to bring it back.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: the content becomes hidden, the action is reversible, and it contrasts with the lack of hard delete. It also confirms the destructive nature through the annotation and explains how to revert. It does not mention potential side effects or permission requirements, but the core behavior is transparent.
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 no unnecessary repetition. It uses two short sentences for the main explanation and a separate note for workspace_id, making it easy to read and understand. The structure is efficient and well-organized.
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 gives enough context for the agent to know when to use this tool (for reversible content removal) and how to get necessary parameters. It does not mention output expectations or permissions, but within the context of sibling tools, it is sufficiently complete for making an informed choice.
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 description explains workspace_id in detail, including how to get valid values from list_workspaces(). However, content_id is not described beyond the parameter name, leaving the agent to infer its meaning. This partial coverage is adequate but not comprehensive.
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 function: to archive a content item, and explains that archiving hides it from listings and is fully reversible. It also distinguishes it from restoration with a direct reference to restore_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 useful guidance by explaining the reversible nature and pointing to restore_content for undoing the action. It also tells users how to obtain the workspace_id via list_workspaces(). However, it does not explicitly compare with delete_content, which could confuse users given the claim that 'no hard delete' exists despite a delete_content sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_hub_profileADestructiveInspect
Archive a hub profile (hidden from listings, content preserved).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint: true and readOnlyHint: false, but the description adds valuable context: it hides the profile while preserving content. This clarifies the nature of the operation beyond the raw annotation flags, though it doesn't mention reversibility (restore_hub_profile exists as a sibling).
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 zero filler. The core action and effect are front-loaded, and the parameter hint is tucked into the second sentence. Every word 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?
For a simple mutation with an output schema present, the description covers the essential semantics and gives one parameter source. It doesn't mention error cases or the restore option, but given the sibling list and the concise nature, it is sufficiently complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides a useful hint for workspace_id, pointing to list_workspaces() as a source. However, hub_profile_id is left entirely unexplained, relying on the parameter name alone. Partial compensation for a two-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?
States the action 'Archive a hub profile' with a clear resource, and clarifies the outcome with 'hidden from listings, content preserved'. This distinguishes it from destructive siblings like delete_hub_profile and reversible restore_hub_profile, though it doesn't name them explicitly.
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 when to use it by noting content preservation, which hints at alternatives like delete, but it never explicitly says 'use this when you want to retain content' or mentions when not to use it. The guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_archiveBRead-onlyInspect
Check whether the current user can archive a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says it checks permission, which aligns with the readOnlyHint=true and destructiveHint=false annotations. However, it does not elaborate on the return type or any potential side effects beyond what the annotations already indicate.
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 a single clear sentence. It wastes no words and is easy to parse.
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 is minimal but sufficient for a permission check. It does not mention the output format or error conditions, but these are likely standard for permission tools in this API. Still, the lack of any detail about the response makes it slightly less 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?
The description only provides a partial explanation for workspace_id, noting that available IDs come from list_workspaces(). It fails to explain the meaning or allowed values for target_id and target_type, leaving them as generic 'Target Id' and 'Target Type' from the schema without additional 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?
The description clearly states the tool's purpose: to check whether the current user can archive a target. This is specific and distinguishable from sibling tools like 'can_read' or 'can_edit', which check other permissions.
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 gives no explicit guidance on when to use this tool versus alternatives. It does not mention that it should be called before performing an archive operation or how it differs from the various 'archive_*' commands.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_create_childARead-onlyInspect
Check whether the current user can create a child resource inside a parent.
workspace_id: target workspace ID — get available IDs from list_workspaces()
Example: can the user create a "Channel" inside a "HubProfile"?
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| parent_target_id | Yes | ||
| child_target_type | Yes | ||
| parent_target_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited extra value. It implies a non-mutating check but doesn't explicitly state that no creation occurs or disclose any side effects. The example adds contextual insight but not additional behavioral details 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?
The description is concise, front-loading the purpose, and includes a helpful example. It is not verbose, but the example could be more explicit about parameter usage. Overall, it is efficient and well-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?
Given the low schema coverage and missing parameter details, the description is incomplete for correct invocation. It does not specify valid values for parent_target_type and child_target_type, nor does it define how to obtain parent_target_id. While an output schema exists, the input semantics are not fully covered, leaving an agent to guess or explore.
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 0%, so the description must compensate. It explains workspace_id via a pointer to list_workspaces() but does not clarify parent_target_type, child_target_type, or parent_target_id beyond the example. The example gives a concrete case but leaves allowed values and formats ambiguous, especially without enums.
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 purpose: checking if the current user can create a child resource inside a parent. It uses a specific verb ('check') and resource (permission for child creation), and the example ('Channel' inside 'HubProfile') makes it concrete and distinct from sibling permission tools like can_read or can_edit.
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 checks create-child permission, and the example clarifies the scenario. However, it does not explicitly name alternatives or conditions for when not to use it, though the sibling set includes other permission checks that are clearly different. It provides context but no explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_editCRead-onlyInspect
Check whether the current user has edit access to a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile", "Workspace", "Channel", "Content", etc.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with the readOnlyHint and destructiveHint=false annotations by saying 'Check' with no implied side effects. It adds little beyond the annotations, but there is 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 short and mostly to the point, but the parameter documentation is incomplete and out of order relative to the schema. The missing target_id makes it feel less structured than it should be.
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 is too sparse to be complete. It does not clarify the relationship between target_id, target_type, and workspace_id, and it leaves the core target_id parameter undefined. Return-value details are not required because an output schema exists, but the input ambiguity is significant.
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 0%, so the description must compensate. It explains workspace_id and target_type with useful context, but it completely omits target_id, which is a required parameter and central to the operation. The parameter listing is also unordered relative to 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 ('Check whether the current user has edit access') and the resource is a generic 'target'. This distinguishes it from sibling read/archive/permission tools, though 'target' is somewhat vague and the specific target_id parameter is not described.
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?
No explicit guidance is given on when to use this tool versus sibling permission-checking tools like can_read, can_manage_permissions, or can_archive. The only usage hint is that workspace IDs can be obtained from list_workspaces(), which helps parameter selection but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_manage_permissionsCRead-onlyInspect
Check whether the current user can grant/revoke roles on a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already indicates a read-only, non-destructive operation, and the description does not add meaningful behavioral details beyond that. It does not disclose what the tool returns (e.g., boolean) or how it behaves when permissions are missing, so the agent cannot anticipate outcomes beyond the basic read-only hint.
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 brief and to the point, using only two sentences without superfluous text. The inclusion of workspace_id guidance is helpful, but the brevity comes at the cost of omitting important information about other parameters, which slightly reduces effectiveness.
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 availability of sibling tools and the presence of an output schema (not shown), the description lacks essential context such as return format and target type variations. It does not explain what target_type values are valid or how to obtain target IDs, leaving the agent with insufficient information to use the tool reliably 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?
Only workspace_id is described (with a hint to retrieve from list_workspaces), while target_id and target_type are left completely unexplained. The schema provides no additional details (no enums or descriptions), so most parameters remain ambiguous, making it difficult to construct a valid request.
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 checks whether the current user can grant/revoke roles, which is a specific and actionable purpose. However, it does not elaborate on what constitutes a 'target' or how this differs from other permission-checking tools like can_read or can_edit, slightly reducing clarity in a broader toolset.
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 no guidance on when to use this tool over sibling permission tools such as can_read, give_permission, or get_permission_targets. It does not mention any prerequisites or typical scenarios, leaving the agent to infer the selection context without sufficient direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
can_readARead-onlyInspect
Check whether the current user has read access to a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile", "Workspace", "Channel", "Content", etc.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint: true and destructiveHint: false, and the description is consistent with these (no side effects mentioned). However, the description adds no extra behavioral context beyond what the annotations provide, such as whether the check counts against any quotas or triggers logging.
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 and to the point, with no unnecessary verbiage. It conveys the essential information in one sentence, making it easy for an agent to parse quickly.
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 does not mention the return value or output format. Given that an output schema exists (though not shown here), an agent might infer the result is a boolean, but this is not explicitly stated. For a simple permission check, this is a minor gap, but it would be improved by noting the expected response (e.g., 'returns true if access is granted').
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 description provides useful context for workspace_id (pointing to list_workspaces) and target_type (listing possible values), but leaves target_id entirely unexplained. Since schema descriptions are absent (0% coverage), the partial explanation is somewhat helpful but incomplete, especially for the target_id parameter.
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 ('Check'), the resource ('read access to a target'), and the scope ('current user'). It is unambiguous and directly distinguishes this tool from sibling permission checks like can_edit or can_archive.
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?
No guidance is given for when to use this tool versus alternatives. While the purpose is clear, the description does not mention any conditions, exclusions, or comparisons with similar permission-check functions, leaving the agent to infer appropriate usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_user_exists_by_emailARead-onlyInspect
Check whether a user account with the given email address exists.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and the description's phrasing ("Check whether... exists") implies a read-only operation without contradicting annotations. It adds no additional behavioral details like return format or error conditions, which is acceptable given the annotation coverage.
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 concise sentences with no redundant wording. It front-loads the primary purpose and adds the workspace_id clarification without unnecessary detail.
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 existence-check tool, the description is complete: it states what the tool does and which parameter is needed. The return format is not mentioned, but since an output schema exists, that omission is mitigated.
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 coverage is 0%, but the description explains workspace_id as the target workspace ID with a pointer to list_workspaces(), and the 'email' parameter is explicitly referenced as the given email address. Both parameters receive sufficient semantic context, though email could be slightly more detailed.
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: checking whether a user account exists for a given email address. It uses a specific verb ('check') and resource ('user account'), distinguishing it from sibling tools like check_user_exists_by_phone or get_user.
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 includes a usage hint by explaining that workspace_id is the target workspace ID and directing users to list_workspaces() for obtaining valid IDs. It does not explicitly compare with alternative tools, but the name and description make the primary use case obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_user_exists_by_phoneARead-onlyInspect
Check whether a user account with the given phone number exists (e.g. "+1234567890").
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds no additional behavioral details such as side effects, permissions, or return format. The note about workspace_id is parameter guidance, not behavioral transparency. It does not contradict annotations, but does not enrich them beyond the obvious read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and efficient, leading with the primary purpose and following with a parameter hint. It avoids unnecessary words and front-loads the essential information, making it easy for an agent to parse quickly.
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 but indicated), the description does not need to explain return values. Annotations cover the read-only and non-destructive nature. The description adequately covers how to obtain workspace_id and clarifies the tool's purpose. It lacks explicit alternative guidance, but for a simple existence check it is sufficiently 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 0%, so the description must compensate. It explains workspace_id by telling the agent to get available IDs from list_workspaces(), and provides an example format for phone_number (e.g. "+1234567890"). This gives meaningful context for both parameters, though it doesn't detail validation rules or accepted formats beyond the example.
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 function: 'Check whether a user account with the given phone number exists' with a concrete example. It identifies the exact resource (user account) and the specific attribute (phone number), making it distinguishable from the sibling tool check_user_exists_by_email.
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 state when to use this tool versus alternatives like check_user_exists_by_email. It does provide a helpful hint for the workspace_id parameter (get IDs from list_workspaces()), but no guidance on selection criteria between related tools. The purpose is clear, but usage context is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryAInspect
Create a new category inside a channel. Returns the new category ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
view_type: display view type (e.g. "Grid", "List")
progression_enabled: track user completion progress
cover_show: show cover images in this category
expandable: allow the category to be collapsed
sections: list of {"name": "...", "type": "...", "reference_ids": [...]} for initial sections
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sections | No | ||
| is_pinned | No | ||
| view_type | No | ||
| channel_id | Yes | ||
| cover_show | No | ||
| expandable | No | ||
| workspace_id | Yes | ||
| progression_enabled | No | ||
| notifications_enabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states a write operation ('create') and mentions the return of a category ID, but does not disclose side effects, failure modes, or idempotency. Annotations indicate non-destructive but create operations inherently modify state; this is not contradicted but also not elaborated.
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 terse and mostly well-organized as a parameter list, but it is presented in a single paragraph without line breaks. It avoids irrelevant details but could be more structured 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 the tool's complexity (10 params, multiple required), the description provides partial context: it mentions workspace_id retrieval but not how to find channel_id or the full output schema. It covers the essential purpose but leaves some operational 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 description explains six of ten parameters (workspace_id, view_type, progression_enabled, cover_show, expandable, sections) with examples for view_type and sections. It omits channel_id, name, is_pinned, and notifications_enabled, leaving some ambiguity for required fields like channel_id.
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 new category inside a channel and returns the new category ID. This is an unambiguous purpose, and the name 'create_category' aligns perfectly.
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 parameter hints (e.g., where to get workspace_id) but does not explicitly differentiate this tool from alternatives like update_category or archive_category. It is clear what the tool does, but not when to prefer it over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_channelAInspect
Create a new channel in a hub profile. Returns the new channel ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
privacy: "Private" (default) or "Public"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| privacy | No | Private | |
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutation (readOnlyHint false) and not destructive. The description adds that it returns the new channel ID, which is useful. However, it does not mention any side effects, permissions, or error behavior. The description 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?
The description is two sentences with additional parameter hints, all front-loaded. It has no unnecessary words and efficiently conveys the core purpose and key parameter guidance.
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 4 parameters, an output schema, and a clear purpose. The description covers the main function and return value, and gives guidance for two parameters. However, it omits guidance for hub_profile_id, which is required. It also doesn't mention how to obtain hub_profile_id, though sibling tools like list_hub_profiles exist. This makes it slightly incomplete for a new 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 description coverage is 0%, so the description must explain parameters. It explains workspace_id (with a pointer to list_workspaces) and privacy (with allowed values), but it does not explain name (self-explanatory) or hub_profile_id, which is a required parameter with no guidance. This is a significant gap.
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 states 'Create a new channel in a hub profile' with a specific verb and resource, clearly distinguishing it from sibling tools like update_channel or delete_channel. It also notes the return value, which adds clarity.
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 state when to use this tool versus alternatives, but the context of creating a new channel is clear from the name and purpose. It does not mention exclusions or alternative tools, but the pointer to list_workspaces() provides some usage guidance. Overall, it's implied usage, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_contentAInspect
Create a new content item in a hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
privacy: "Preview" (default), "Private", or "Public"
channels: list of channel IDs. NOTE: a channel placement needs a category,
so passing channels alone here often does NOT stick (saved channels:[]).
To reliably place content, call add_content_to_categories(content_id,
channel_id, category_ids=[...]) after create.
main_asset_id: ID of the primary playable asset
url: optional external URL to associate with the content
cover_image: http(s):// URL (or local path) of the cover; the URL PATH must
end in an image extension (.jpg/.png/...). Query strings are fine (signed
URLs work); an extension-less URL (e.g. placehold.co/600x400) returns 400.
categories: category assignment objects
context: the body — an ordered list of widget objects. Each widget MUST
carry a "$type" discriminator (literal key, with the dollar sign). Keys are
camelCase: the backend rejects snake_case for multi-word fields (assetId,
hubProfileIds, referenceIds) as a silent 400, so never send asset_id etc.
Shapes:
• Text (markdown body):
{"$type": "Text", "content": "<markdown, required>", "title": "<optional>"}
• LinkList:
{"$type": "LinkList", "title": "<optional>", "links": [
{"$type": "CustomLink", "title": "<required, unique in list>", "url": "https://...", "extension": "<optional image ext>"},
{"$type": "KnownLink", "title": "<required>", "url": "https://..."}
]}
(both link types use "title" + "url"; NOT "label"/"type". Max 20 links.)
• Media: {"$type": "Media", "assetId": "<existing PLAYABLE/video asset id>", "autoplay": false, "title": "<optional>"}
(assetId must be an EXISTING playable/video asset of the hub; an image or
a just-uploaded asset is NOT playable media and returns 404. No image-body
widget exists — use the cover, a CustomLink, or markdown in a Text widget.)
• HubProfile: {"$type": "HubProfile", "hubProfileIds": ["<hub id>", ...], "title": "<optional>"}
(hubProfileIds is a REQUIRED array, even for a single hub)
• ContentWidget: {"$type": "ContentWidget", "referenceType": "Content",
"referenceIds": [{"$type": "Content", "id": "<content id>"}], "title": "<optional>"}
(each reference is {"$type": "Content"|"Asset", "id": "..."}; referenceType matches the kind)
A single bad widget rejects the WHOLE call with 400 (the error now names the
rejected field). Widget title (when set) is 1-150 chars.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | Yes | ||
| context | No | ||
| details | No | ||
| privacy | No | Preview | |
| channels | No | ||
| categories | No | ||
| cover_image | No | ||
| workspace_id | Yes | ||
| main_asset_id | No | ||
| hub_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond annotations, disclosing failure modes such as silent 400s for snake_case, 400 for extension-less cover URLs, whole-call rejection on a bad widget, the playable-asset requirement, and the channel/category caveat. This richly documents actual behavior.
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 long but well organized with line-per-parameter explanations and bulleted widget shapes. Every section carries necessary constraint information, and the opening sentence immediately states the tool's 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?
For a complex creation tool, the description covers required input semantics, per-field formats, widget schemas, error behavior, and post-create follow-up guidance. It is complete enough for an agent to construct a valid request without additional external knowledge.
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 0% schema coverage, the description compensates substantially by explaining workspace_id, privacy, channels, main_asset_id, url, cover_image, categories, and especially the context widget structures. It adds critical constraints like the required '$type' discriminator, camelCase keys, and max link counts.
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 opens with 'Create a new content item in a hub profile,' which states a specific verb and resource. This clearly distinguishes the tool from siblings such as update_content, archive_content, and get_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?
It gives clear context about creating content and explicitly advises using add_content_to_categories after create for reliable channel placement. It does not explicitly contrast create with update_content or archive_content, but the intent is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_content_sectionBInspect
Create a section inside a collection content item's category.
workspace_id: target workspace ID — get available IDs from list_workspaces()
category_name: the name slug of the category (e.g. "week-1")
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| content_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the intended action without disclosing side effects, required permissions, error behavior, or idempotency. The annotations indicate readOnlyHint=false and destructiveHint=false, but the description does not elaborate on what happens when a section is created, such as whether it modifies the parent content item or category. Minimal behavioral detail is provided.
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 succinct and well-structured: a single purpose sentence followed by parameter clarifications. It avoids unnecessary detail and is easy to parse, making it efficient for an agent to understand the tool's core function.
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 basic operation but lacks context about how the parameters interrelate (e.g., the relationship between content_id, workspace_id, and category_name) and what the expected output or return value is. Given the tool's moderate complexity, this is a notable gap, though the simple action type makes it somewhat acceptable.
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 description includes explanations for workspace_id and category_name (e.g., 'target workspace ID', 'the name slug of the category'), but leaves name and content_id undefined. The parameter names are somewhat self-explanatory, but full semantic clarity is missing for half of the parameters. This provides partial compensation for the schema's lack of 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 action: 'Create a section inside a collection content item's category.' It is specific about the resource (a section) and the context (inside a content item's category), which distinguishes it from sibling tools like create_section or update_content_section.
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 gives no guidance on when to use this tool versus alternatives. It does not mention conditions like 'use this instead of create_section' or explain the difference from other section-related operations. The only hint is the phrase 'inside a collection content item's category', but this is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_embed_assetBInspect
Create an embed asset (external URL embed) in a hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| name | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| duration_in_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive, open-world operation, so the description adds little behavioral context beyond confirming it creates an embed asset. It does not mention side effects, validation behavior, permissions, or what happens on success. 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 two short, purposeful sentences. The core purpose is front-loaded, and the workspace_id guidance earns its place by addressing a likely lookup need without padding.
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 five parameters and no output schema, the description leaves too much unstated: it never explains how to obtain hub_profile_id, what url should point to, how duration_in_seconds behaves, or what the tool returns. The provided workspace_id hint helps but is not enough for reliable standalone 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 description coverage is 0%, so the description must compensate, but it only explains workspace_id and how to obtain valid values. hub_profile_id, name, url, and duration_in_seconds receive no semantic explanation beyond their raw schema titles and types.
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 names a specific verb and resource: 'Create an embed asset (external URL embed) in a hub profile.' The parenthetical clarifies exactly what kind of asset this is, and the location scopes it, distinguishing it from related tools like create_media_asset or create_file_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?
The 'external URL embed' wording implies when this tool is appropriate, and the workspace_id line tells the agent where to get a needed ID. However, it does not explicitly contrast with sibling asset-creation tools or state when to choose one of them instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_file_assetAInspect
Create a file asset record in a hub profile.
DEPRECATED: registers a record only and does not upload bytes; the
current backend requires a multipart upload init, so this call fails.
Use `upload_asset` to create and upload in one step.
workspace_id: target workspace ID — get available IDs from list_workspaces()
extension: without dot, e.g. "pdf"
Returns a signed URL for uploading the actual file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| extension | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| memory_size_in_bytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and destructiveHint=false; the description carries the critical behavioral disclosure that this call FAILS against the current backend. It explains why (missing multipart upload init) and notes the return is a signed URL for uploading. This is precisely the context an agent needs to avoid calling a broken tool.
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 structured: deprecation warning front-loaded, failure reason given, alternative named, then parameter notes. Every sentence earns its place; slightly long given the tool should never be used, but the detail is justified by the need to prevent misuse.
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 deprecated tool that fails, the essential context is the deprecation, the failure mode, and the correct alternative — all present. The description also notes the return value (signed URL), which compensates for the absent output schema.
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 0%, so the description must compensate. It documents two of five parameters: workspace_id (get from list_workspaces) and extension (no dot, with example 'pdf'). The remaining three — name, hub_profile_id, memory_size_in_bytes — are reasonably self-evident from the schema titles, but the description does not add format or source details for 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?
States the action clearly (create a file asset record) and immediately flags the DEPRECATED status with a concrete failure reason. Distinguishes itself from upload_asset by explaining the backend now requires multipart init, so an agent can tell why it must not be selected.
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 the agent to use `upload_asset` to create and upload in one step, naming the exact alternative and the condition that selects it. This is exactly the routing guidance a deprecated tool needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_hub_profileAInspect
Create a new hub profile in a workspace.
workspace_id: target workspace ID — get available IDs from list_workspaces()
availability_level: "Public" (default) or "Private"
primary_url: optional external URL shown on the profile
app_clip_on: enable iOS App Clip
widgets: profile widget configuration objects
buttons: action buttons, each
{"title": "...", "logic": {"type": "...", "url": "..."}}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| buttons | No | ||
| widgets | No | ||
| sub_name | No | ||
| user_name | Yes | ||
| app_clip_on | No | ||
| description | No | ||
| primary_url | No | ||
| workspace_id | Yes | ||
| availability_level | No | Public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive behavior; the description adds no side-effect or permission details but also does not contradict 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 well-organized as a compact parameter list with a useful example for buttons; it is concise but somewhat redundant with the schema's titles.
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?
Critical required parameters like name and user_name are not semantically explained, and the loose widget/button object structures are only partially described, making correct invocation uncertain.
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 description clarifies workspace_id, availability_level, primary_url, app_clip_on, widgets, and buttons, but leaves required fields name and user_name, plus sub_name and description, unexplained.
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 states a specific action ('Create a new hub profile in a workspace') with a clear resource, and the verb 'create' distinguishes it from sibling update/get/delete/archive 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?
The description implies usage for creating new hub profiles, but it does not explicitly contrast with alternatives like update_hub_profile or mention 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.
create_image_assetAInspect
Create an image asset record in a hub profile.
DEPRECATED: registers a record only and does not upload bytes; the
current backend requires a multipart upload init, so this call fails.
Use `upload_asset` to create and upload in one step.
workspace_id: target workspace ID — get available IDs from list_workspaces()
extension: without dot, e.g. "png"
Returns a signed URL for uploading the actual image.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| width | Yes | ||
| height | Yes | ||
| extension | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| memory_size_in_bytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it only registers a record, does not upload bytes, and currently fails due to backend requirements, going well beyond the sparse 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 and well-structured with deprecation, alternative, and parameter notes, with no redundant 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?
Effectively communicates deprecation, failure mode, and the preferred replacement. Minor gaps remain around unspecified parameter meanings, but these are less critical for a deprecated failing stub.
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 workspace_id and extension are explained; hub_profile_id, name, width, height, and memory_size_in_bytes receive no semantic description, leaving most parameters under-documented.
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 an image asset record in a hub profile, and explicitly distinguishes itself from upload_asset by marking itself deprecated and directing users to the preferred alternative.
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 the call fails on the current backend and tells users to use upload_asset instead, giving unambiguous 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.
create_media_assetAInspect
Create a media (video) asset record in a hub profile.
DEPRECATED: registers a record only and does not upload bytes; the
current backend requires a multipart upload init, so this call fails.
Use `upload_asset` to create and upload in one step.
workspace_id: target workspace ID — get available IDs from list_workspaces()
Returns a signed URL for uploading the actual video file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| duration_in_seconds | No | ||
| memory_size_in_bytes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool is deprecated and will fail, and explains the reason (multipart upload init requirement). It also notes it registers a record only and does not upload bytes, and that it returns a signed URL (though the failure statement makes this slightly confusing). This goes beyond annotations (readOnlyHint false, destructiveHint false) by explaining the failure mode and the historical behavior.
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 compact and front-loaded with the primary purpose, followed by the critical deprecation warning and alternative. It includes a targeted hint for `workspace_id` and mentions the return value. While it contains several sentences, each earns its place, and the structure is logical.
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 deprecated tool, the description is quite complete: it tells the agent the call will fail, why, and what to use instead. It also provides a hint for one parameter and mentions the return. Given the tool is deprecated, the description fully serves its purpose of steering agents away, even though it does not detail all parameters. The presence of an output schema is false, but the description covers the essential behavioral 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?
The schema has 0% description coverage, so the description must compensate. It explains `workspace_id` with a hint to `list_workspaces()`, but does not describe `hub_profile_id`, `name`, `duration_in_seconds`, or `memory_size_in_bytes`. Since it is a deprecated tool, the lack of full parameter explanations is somewhat mitigated, but the description still only partially compensates for the missing schema semantics.
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?
States a clear verb and resource: 'Create a media (video) asset record in a hub profile.' It also explicitly differentiates from the alternative `upload_asset` by noting the deprecated behavior and pointing to the one-step tool. The purpose is unambiguous and distinct from sibling asset creation 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 provides when-not-to-use guidance: 'DEPRECATED: registers a record only and does not upload bytes; the current backend requires a multipart upload init, so this call fails.' It names the alternative `upload_asset` and directs agents to use it instead. This is exactly the kind of routing an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_permission_groupBInspect
Create a new permission group on a target. Returns the new group ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile" or "Workspace"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) already establish this as a non-destructive write, and the description adds the behavioral detail 'Returns the new group ID.' No contradictions exist, but error behavior (invalid target_type, duplicate name) and idempotency are not disclosed — acceptable for a create, yet not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus two one-line parameter hints. The purpose is front-loaded, and every sentence carries information — no filler, no redundancy with the schema or annotations.
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 output schema presence plus the return-value note ('Returns the new group ID') covers the outcome, and target types are specified. However, the undocumented name and target_id parameters leave a real gap in what a caller must supply, and no error/edge-case behavior is mentioned.
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 0% — none of the 4 parameters have schema-level descriptions. The description text explains workspace_id and target_type, but name and target_id are entirely unexplained; target_id's meaning (the hub profile or workspace being targeted) is ambiguous without cross-referencing. Less than half of the required parameters receive meaningful documentation.
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?
'Create a new permission group on a target' uses a specific verb and resource, and the 'on a target' qualifier distinguishes it from the sibling create_* tools. It clearly separates from get/update/delete_permission_group siblings, leaving little ambiguity about the operation.
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 gives useful context — target_type values ('HubProfile' or 'Workspace') and a pointer to list_workspaces() for workspace IDs — but never states when to use this vs. alternatives like give_permission (direct grant) or add_users_to_permission_group (populating a group after creation). The when-not-to-use guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sectionAInspect
Create a new section inside a channel category. Returns the new section ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| channel_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false and destructive=false; description adds only the return value detail and the workspace_id source, but no additional side effects, permissions, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise, two sentences, with the main action first and the parameter hint second. No 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 four required parameters and no schema descriptions, the description is too sparse. It lacks guidance on how to find channel_id/category_id, or any prerequisites or 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?
The input schema has no property descriptions; the description only clarifies workspace_id with a hint to list_workspaces(). It leaves name, channel_id, and category_id unexplained, including how to obtain the category_id.
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 action (create a section) and location (inside a channel category), and mentions the return value (new section ID). It differentiates from sibling tools like create_content_section by specifying the container.
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?
Implies usage when needing a section within a category, but does not explicitly contrast with alternatives like create_category or create_content_section, nor states when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_video_assetAInspect
Create a video file asset record in a hub profile.
DEPRECATED: registers a record only and does not upload bytes; the
current backend requires a multipart upload init, so this call fails.
Use `upload_asset` to create and upload in one step.
workspace_id: target workspace ID — get available IDs from list_workspaces()
extension: without dot, e.g. "mp4"
Returns a signed URL for uploading the actual video file.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| extension | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| memory_size_in_bytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is fully transparent about the tool's behavior: it creates a record only, does not upload bytes, and will fail against the current backend. It also notes that it returns a signed URL for uploading, which clarifies the expected output. No contradictions with the annotations (readOnlyHint false, destructiveHint false) exist.
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, using only a few sentences to convey purpose, deprecation warning, usage alternative, and parameter hints. The structure is clear and front-loaded with the most important information (deprecation and alternative) in the second sentence.
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 this is a deprecated, non-functional tool, the description is contextually complete: it explains why the tool fails, what alternative to use, and provides the essential parameter hints. No additional context is needed for an agent to correctly avoid this tool and choose the recommended one.
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 description provides meaningful context for only two of five parameters: workspace_id (with a hint to get IDs from list_workspaces()) and extension (with an example like 'mp4'). The remaining parameters (name, hub_profile_id, memory_size_in_bytes) have no description, and the schema provides zero coverage, so the description only partially compensates for the lack of parameter documentation.
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: to create a video file asset record. It explicitly labels itself as DEPRECATED and explains that it only registers a record without uploading bytes, which is a precise, unambiguous 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 gives direct usage guidance: it warns that the tool is deprecated, that the current backend requires a multipart upload init so the call fails, and explicitly directs users to 'use upload_asset' instead. This is actionable and leaves no ambiguity about 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.
create_workspace_actionBInspect
Create a workspace automation action. Returns the new action ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
metadata example for a webhook trigger:
{"$type": "ProgressionUpdatedMetadata", "webhookUrl": "https://..."}
hub_profile_ids: profiles this action applies to (default: all)
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| details | No | ||
| metadata | Yes | ||
| workspace_id | Yes | ||
| hub_profile_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint false and openWorldHint true, indicating a write operation with potential external effects. The description only mentions that it returns an ID and provides a metadata example for a webhook trigger, hinting at external integration but not explicitly disclosing the behavior. It does not elaborate on the openWorldHint implications, such as possibly sending webhooks or affecting external systems.
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, front-loaded with the purpose and return value, and uses a clear bullet-like format for parameter details. Every sentence adds value, with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, a nested metadata object, and no schema descriptions, the description covers some key aspects but omits title and details. It also does not fully describe the metadata structure beyond an example. However, the output schema exists, so return format is covered. Overall, it is partially 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?
The input schema has no descriptions (coverage 0%), so the description must compensate. It explains workspace_id, metadata (with example), and hub_profile_ids (default all). However, it does not explain title or details, which are required or have defaults. Thus it adds meaning for 3 out of 5 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 action: 'Create a workspace automation action' and notes the return of the new action ID. This distinguishes it from sibling tools like update_workspace_action and delete_workspace_action by its creation purpose. However, it does not explicitly name alternatives, but the resource specificity is sufficient.
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 obtaining workspace_id from list_workspaces() and explains hub_profile_ids default. It does not explicitly mention when to use this tool over alternatives like update_workspace_action, but the creation intent is implied. It also gives a metadata example, offering usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_categoryADestructiveInspect
Permanently delete a category from a channel. Irreversible.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false; the description adds the important detail that the action is irreversible, going beyond the annotation metadata without contradicting it.
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 brief, direct, and well-structured, front-loading the core action and consequence before the parameter note.
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 is adequate for a destructive operation: it states permanence and identifies workspace_id sourcing. It does not explain cascading effects or return values, but an output schema exists and the operation is straightforward.
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 provides only titles with no descriptions. The description explains workspace_id but omits guidance for channel_id and category_id, so parameter coverage is insufficient given the low schema documentation.
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 action (permanently delete) and resource (category from a channel), and distinguishes it from related tools like archive_category, update_category, and restore_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?
The description emphasizes that deletion is permanent and irreversible, which implies destructive usage and contrasts with softer alternatives like archiving. It does not explicitly name alternative tools, 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.
delete_channelADestructiveInspect
Permanently delete a channel and all its categories/sections. Irreversible.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds valuable context: it deletes categories/sections, is irreversible, and hints that workspace IDs come from list_workspaces. 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?
The description is extremely concise and front-loaded with the core purpose and irreversibility. The parameter hint is separate and clear. 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?
The description covers the scope of deletion (categories/sections) and irreversibility, which is good for a destructive tool. However, it lacks an explanation for channel_id and does not mention any prerequisites or permissions, though the output schema may cover return values.
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 0%, so the description must explain parameters. It only explains workspace_id (with a source hint) but omits any explanation for channel_id, leaving one of two required parameters undocumented.
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 permanently deletes a channel and all its categories/sections, which is specific and differentiates it from archive_channel (reversible) and delete_category/delete_section (which target sub-elements). The irreversibility is emphasized.
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 irreversibility implies a distinction from archive_channel, but the description does not explicitly name alternatives or state when to choose this over archiving. It only provides a hint for obtaining workspace IDs, not usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_content_sectionCDestructiveInspect
Delete a section from a collection content item's category. Irreversible.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| section_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Irreversible', which adds a clear behavioral warning beyond the destructiveHint annotation. However, it does not disclose potential side effects (e.g., impact on associated data, cascading deletions) or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of a single functional statement and a brief parameter note. It is well-structured and free of unnecessary detail, though it could integrate parameter explanations more evenly without becoming 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 four required parameters and an output schema, the description lacks essential context such as the meaning of 'collection content item', the role of category_name, and any preconditions or effects. It does not explain when this operation is appropriate compared to related tools, leaving the overall context incomplete.
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 0%, and the description only explains 'workspace_id' with a hint to list_workspaces(). It fails to describe the purpose or relationships of content_id, category_name, and section_id, leaving most parameters semantically opaque.
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 (delete) and the resource (section from a collection content item's category), making its purpose understandable. It distinguishes from the sibling 'delete_section' by specifying the context of a content item's category, though it could be more explicit about the difference.
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 no guidance on when to use this tool versus alternatives like 'delete_section', 'update_content_section', or other delete operations. It offers no conditions or examples, leaving the decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_hub_profileADestructiveInspect
Permanently delete a hub profile and all its data. Irreversible.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the destructiveHint annotation by explicitly warning that the deletion is permanent and removes all associated data. This is clear and accurate.
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 short, front-loaded with the primary purpose, and includes a practical parameter hint without unnecessary filler.
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 is missing essential context for one required parameter (hub_profile_id), and does not mention any confirmation or result behavior. This leaves the agent underinformed for a destructive action.
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 workspace_id is explained, and its source is given. hub_profile_id is required but not described at all, leaving a significant gap for the agent to infer its meaning and origin.
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 ('permanently delete a hub profile and all its data') and emphasizes irreversibility, which distinguishes it from reversible alternatives like archive_hub_profile or restore_hub_profile.
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 limited guidance by telling the agent to get workspace IDs from list_workspaces(), but it does not explicitly explain when to choose deletion over archiving or what conditions should lead to permanent deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_invitationBDestructiveInspect
Cancel and permanently delete a pending invitation.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| invitation_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'permanently delete', which conveys irreversibility and aligns with the destructiveHint annotation. It also specifies the target is a 'pending invitation', giving clear behavioral expectations. It does not mention potential errors or required permissions, but the core behavior is well described.
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 two short sentences with no redundant wording. The workspace_id hint is integrated efficiently.
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 action and one parameter hint but omits information about return values, error conditions, or relationship to sibling invitation-deletion tools. Given the output schema exists, some context is still missing for a fully self-contained 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?
Only workspace_id receives any explanation; the purpose of hub_profile_id and invitation_id is not described. Since all three parameters are required, the lack of descriptions for two of them leaves significant semantic gaps.
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 identifies the action as canceling and permanently deleting a pending invitation, which is specific and unambiguous. However, it does not distinguish this from the sibling 'delete_workspace_invitation' tool, leaving a slight ambiguity about invitation 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?
No guidance is provided on when to use this tool versus alternatives, nor does it mention prerequisites or side effects. The only hint is pointing to list_workspaces() for workspace_id, which is useful but insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_permissionADestructiveInspect
Revoke all permissions a user has on a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile", "Workspace", or "Channel"
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description's 'Revoke' aligns with the destructiveHint annotation, and the parameter hints (e.g., target_type values) provide useful context. It doesn't mention reversibility or side effects, but given the annotations already convey destructiveness, the description is sufficiently transparent. 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: a single clear action sentence followed by a compact parameter hint block. Every word adds value, and there is no redundant or verbose phrasing.
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 essential action and provides enough parameter context for an agent to invoke the tool correctly. An output schema is noted in context signals, so return values are presumably specified elsewhere. The lack of examples or edge-case notes is acceptable given the tool's simplicity.
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 0%, and the description compensates for two of four parameters (workspace_id and target_type) by giving explicit guidance. However, user_id and target_id are left undefined, though their names and the action phrase 'a user has on a target' make them inferable. This partial coverage meets the baseline but not fully.
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 states a specific verb ('Revoke') and resource ('all permissions a user has on a target'), making the tool's purpose immediately clear. It also naturally distinguishes itself from sibling tools like `give_permission` and the `can_*` check operations.
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 compare with alternatives or state when to choose this tool over others (e.g., `give_permission` to reverse an assignment). It does provide some parameter guidance (workspace_id and target_type), but no direct 'use this when' instruction. The context signals show no usage directives in annotations, so this is a moderate gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_permission_groupADestructiveInspect
Permanently delete a permission group. Members lose inherited permissions.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true, but the description adds the permanent nature and the effect on members' inherited permissions. This goes beyond the structured annotation, providing important context that the deletion is irreversible and cascades to members.
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 waste. The purpose and effect are front-loaded, followed by a practical hint for one parameter. 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?
The tool has two required parameters and an output schema, so return format is covered. However, the description omits explanation for group_id and does not mention error conditions or prerequisites beyond workspace_id. It is minimally adequate but incomplete for a destructive 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 0%, so the description must compensate. It explains workspace_id with a source hint (list_workspaces()), but group_id is left entirely undocumented. With two required parameters, only one is explained, leaving a significant gap.
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 'Permanently delete a permission group' with a specific verb and resource, distinguishing it from siblings like update_permission_group or delete_permission. It also notes the consequence that members lose inherited permissions, clarifying the tool's impact.
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 a practical hint to get workspace IDs from list_workspaces(), but it does not explicitly state when to use this tool versus alternatives like delete_permission or update_permission_group. The purpose implies usage, but there is no explicit exclusion or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sectionADestructiveInspect
Permanently delete a section from a channel category. Irreversible.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| section_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark destructiveHint true and readOnlyHint false. The description adds the stronger 'Irreversible' warning, which is valuable behavioral context. It also hints at workspace_id sourcing. 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 two sentences long, with the purpose and irreversibility front-loaded. The second sentence provides a useful parameter hint. No fluff or redundant 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?
For a 4-parameter tool with no schema descriptions, the description explains only one parameter. It does not clarify the relationship between channel_id, category_id, and section_id, nor what the operation returns. This is insufficient for an agent to invoke the tool correctly without additional inference.
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 has zero description coverage for all four parameters. The description only explains workspace_id, leaving channel_id, category_id, and section_id completely undocumented. The hierarchical relationship among IDs is implied but never stated.
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: 'Permanently delete a section from a channel category.' It names the specific verb and resource, and the reference to 'channel category' distinguishes it from sibling delete tools for channels or 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?
No guidance is provided on when to use this tool versus alternatives. The only hint is about obtaining workspace_id from list_workspaces(), which is a parameter sourcing tip rather than usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_subcontentADestructiveInspect
Unlink a subcontent item from a collection section.
Removes the link between the collection and the subcontent item. The
subcontent item itself is NOT deleted — it continues to exist as a
standalone content item.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the collection (the parent content item)
category_name: "Content" or "Asset"
section_id: ID of the section that currently contains the subcontent item
subcontent_id: ID of the subcontent item to unlink
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| section_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes | ||
| subcontent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, which the description supports by stating the link is removed but the subcontent item is not deleted. The description adds clarity about the non-destructive nature to the subcontent itself, which is valuable beyond the annotations. No contradiction present.
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 and well-structured. The main statement is one sentence, followed by a clarifying sentence about what is not deleted. The parameter list is clear and aligned with the schema. No fluff or redundant 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?
The description is self-contained and sufficient for an agent to invoke the tool correctly given the parameter documentation. It explains the operation's effect and non-effects clearly. There is no explicit mention of the return value or potential errors, but that is not critical for this straightforward operation and the annotations cover the destructive nature.
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 five parameters are documented in the description. workspace_id includes guidance to get available IDs from list_workspaces(). content_id, category_name, section_id, and subcontent_id are each explained with their role (parent collection, type, containing section, and item to unlink). The schema coverage is 100% and the descriptions add meaning beyond the bare 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 'Unlink' and the specific resource 'a subcontent item from a collection section'. It explicitly clarifies that the subcontent item is not deleted, distinguishing it from destructive operations. This unambiguously differentiates it from sibling tools like delete_content_section or remove_content_from_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 clearly explains what the operation does and explicitly states what it does NOT do (does not delete the subcontent item). It provides context for when this operation is appropriate, though it does not explicitly contrast it with related tools like add_subcontent or move_subcontent. The negative clarification is strong enough to guide correct usage in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workspace_actionADestructiveInspect
Permanently delete a workspace automation action.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Permanently delete', which aligns with and reinforces the destructiveHint annotation. No contradictions exist, and the permanence is a useful behavioral detail beyond the generic annotation.
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 brief and to the point, with no unnecessary words. The workspace_id hint is front-loaded and useful, though the omission of action_id is a content issue rather than a conciseness issue.
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 is not complete for a two-parameter delete operation: it explains only one parameter and lacks any note about return value, side effects, or error conditions. The missing action_id explanation is a critical gap.
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 workspace_id is described (as target workspace with a source). The required action_id parameter is completely undocumented, leaving a significant gap in 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 the tool's purpose: permanently delete a workspace automation action. This distinguishes it from other delete tools for different resource types (e.g., delete_hub_profile, delete_channel).
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 guidance for obtaining workspace_id via list_workspaces(), but omits any guidance for the required action_id parameter. It also does not specify when to use this tool versus alternatives, though the resource type is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_workspace_invitationADestructiveInspect
Cancel and permanently delete a pending workspace invitation.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| invitation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description correctly aligns with them. It adds valuable context beyond annotations by specifying 'permanently delete' and 'pending' — clarifying that only pending invitations are affected, which is a meaningful behavioral constraint an agent must know before calling.
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 concise sentences, with the primary purpose front-loaded in the first sentence and a targeted parameter hint in the second. There is no filler, and every word contributes to operational clarity, making it highly efficient for an agent to parse quickly.
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 operation with annotations covering the safety profile and a likely simple output, the description is mostly sufficient. However, the missing explanation for invitation_id is a notable gap that could hinder correct invocation, and there is no mention of error behavior or idempotency. Given the tool's simplicity, the definition is adequate but not 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 description coverage is 0%, so the description must compensate for both parameters. It explains workspace_id with a helpful reference to list_workspaces(), but invitation_id is left completely unexplained — no guidance on how to obtain it, its format, or its role. With only one of two parameters covered, the description fails to fully compensate for the schema's lack of detail.
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 ('Cancel and permanently delete') and the resource ('a pending workspace invitation'), which distinguishes it from sibling tools like delete_invitation that target general invitations. The verb+resource combination is specific and unambiguous, making the tool's purpose immediately obvious to an agent.
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 versus alternatives such as delete_invitation or update_workspace_invitation. It does provide a hint on how to obtain workspace_id via list_workspaces(), which is useful for invocation, but lacks any explicit when-to-use or when-not-to-use guidance, leaving the selection partially to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
filter_hub_profilesARead-onlyInspect
Batch-fetch lightweight hub profile data for a list of IDs.
workspace_id: target workspace ID — get available IDs from list_workspaces()
availability_level: "Public" or "Private" to filter by visibility
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| workspace_id | Yes | ||
| availability_level | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly indicates a read-only fetch operation, and annotations already declare readOnlyHint=true and destructiveHint=false, so no additional side-effect disclosure is needed. It adds no extra behavioral detail beyond the fetch semantics.
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 compact and focused: two sentences plus brief inline parameter notes. No filler or redundant 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?
An output schema exists, so return values do not need to be described. The description gives enough context for a straightforward batch fetch with filtering, though it does not mention limits, pagination, or ordering (which are not essential for basic 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?
The schema has 0% formal description coverage, but the description manually explains workspace_id, availability_level, and implicitly covers ids via 'a list of IDs', adding meaningful meaning beyond the bare 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?
States a specific verb and resource: batch-fetching lightweight hub profile data for a list of IDs. This clearly distinguishes it from single-get or list-all hub profile 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 clear context for the workspace_id and availability_level parameters, and the phrase 'Batch-fetch ... for a list of IDs' implies when to use it versus list/get alternatives, though it does not explicitly name sibling tools or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetARead-onlyInspect
Get full asset details by ID (Media, File, Image, Embed, or Video).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| asset_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it retrieves 'full asset details' without side effects, which aligns with the readOnlyHint annotation. It does not contradict the annotation and adds reasonable context about the return type, though it does not enumerate specific errors or limits.
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 remarkably concise—two sentences—with no redundant information. It front-loads the core action and adds a single, relevant parameter note, making it easy to parse.
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 lack of output schema, the description sufficiently covers what an agent needs to know: what it does, the supported asset types, and how to get one of the required IDs. It does not mention pagination or error handling, but these are less relevant for a get-by-id 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?
Only workspace_id is explicitly described in the description, with a useful pointer to list_workspaces(). asset_id is only implied by the tool purpose, not explained as a parameter. Since the schema provides no descriptions, coverage is only partial.
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: 'Get full asset details by ID' and even lists the supported asset types. This distinguishes it from sibling tools like list_assets (listing) and search_assets (searching).
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 concrete guidance on obtaining a required parameter: 'workspace_id: target workspace ID — get available IDs from list_workspaces()'. It does not explicitly contrast with alternatives, but the purpose is clear enough that an agent can infer when 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_category_by_slugsARead-onlyInspect
Get category details by hub profile username, channel name, and category name slugs.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_name | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes | ||
| hub_profile_username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=true and destructive=false, and the description consistently presents this as a read operation. It adds useful context about slug-based identification and workspace_id sourcing without contradicting 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: two sentences, no fluff, with the core purpose stated first and the parameter guidance immediately following. 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?
For a straightforward read operation with no output schema, the description gives enough context to understand what the tool returns ('category details') and how to find the required workspace_id. It does not discuss error cases or return shape, but given the simple get-style operation this is acceptable.
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 itself only provides names and types, but the description explains all four parameters: hub_profile_username, channel_name, and category_name are slugs, and workspace_id is the target workspace ID with a source hint. This adds meaning beyond the schema, though individual parameter details could be richer.
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 operation ('Get category details'), the target resource ('category'), and the exact identifying fields (hub_profile_username, channel_name, category_name slugs, workspace_id). This differentiates it from category mutation tools and from other retrieval tools by specifying the slug-based lookup.
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 for retrieving category details and provides a helpful hint that workspace_id can be obtained from list_workspaces(), but it does not explicitly explain when to prefer this tool over siblings like get_category_references 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_category_referencesCRead-onlyInspect
List content references in a category with cursor-based pagination.
workspace_id: target workspace ID — get available IDs from list_workspaces()
Returns items and a cursor for the next page (null if no more pages).
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | ||
| page_size | No | ||
| channel_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive. The description adds that it returns items and a cursor for pagination, but does not discuss rate limits, ordering, or any side effects. Given annotations, this is adequate though minimal.
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 short sentences with no redundant fluff. The parameter hints are included but 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?
No output schema exists, and the description only says 'items and a cursor' without detailing what an item contains or how pagination works. Also missing parameter explanations for half the fields, so not 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?
The description explains workspace_id and cursor (implicitly), but leaves channel_id, category_id, and page_size undefined. Since the schema provides no descriptions, this is insufficient for users to correctly set all 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 a specific action (list) and resource (content references in a category), and mentions cursor-based pagination. It does not explicitly contrast with sibling list tools, but the name and wording are 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?
No guidance on when to use this tool versus alternatives like list_contents or search_contents. The description only states what it does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channelARead-onlyInspect
Get full channel details by ID (includes categories and heading content).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and non-destructive behavior. The description adds useful transparency by noting the response includes categories and heading content, which is beyond the schema.
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 brief, well-organized, and free of unnecessary detail. The parenthetical about included content and the workspace_id guidance are both valuable and 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?
For a simple read operation with no output schema or enums, the description provides enough context: it names the resource, the ID-based lookup, and the source for workspace_id. Minor missing detail about obtaining channel_id is not critical.
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 description explicitly explains workspace_id and how to obtain it, and 'by ID' conveys the role of channel_id, though channel_id itself gets no dedicated explanation or format details.
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 ('Get full channel details by ID') and the resource ('channel'), and distinguishes this tool from get_channel_by_name and list_channels by emphasizing retrieval by ID.
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 use when you have a channel ID and provides guidance for obtaining workspace_id from list_workspaces(), but it does not explicitly mention when to prefer this over get_channel_by_name or list_channels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_by_nameBRead-onlyInspect
Get channel details by hub profile username slug and channel name slug.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_name | Yes | ||
| workspace_id | Yes | ||
| hub_profile_username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint: true and destructiveHint: false, so the read-only nature is covered. The description does not add further behavioral details such as side effects, access requirements, or error conditions 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, using two short sentences. It gets straight to the point with no fluff or redundant 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?
With no output schema, the description does not mention what 'details' are returned or any additional context like pagination or response format. For a simple get operation, this might be acceptable, but it lacks a fuller picture.
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?
workspace_id is explained clearly with a pointer to list_workspaces(). However, channel_name and hub_profile_username are only described by their names and required status, with no additional context or expected format.
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 ('Get channel details') and the specific identifiers used (hub profile username slug and channel name slug). It is specific and unambiguous, but does not explicitly distinguish it from sibling tools like get_channel or list_channels.
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?
No explicit guidance on when to use this tool versus alternatives. The only hint is the workspace_id explanation showing how to obtain the ID, but no comparison with sibling tools like get_channel or list_channels is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contentBRead-onlyInspect
Get content item details by ID (v1 schema).
workspace_id: target workspace ID — get available IDs from list_workspaces()
hub_profile_id: optional, used to resolve access context
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and non-destructive behavior. The description adds no further behavioral details (e.g., error conditions, partial responses) and does not contradict the annotations. Credit given for consistency, but no extra insight.
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, with no redundant words or irrelevant details. It gets straight to the point and includes the necessary version qualifier.
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?
No output schema or return format is mentioned, and the description does not address how this tool differs from get_content_v2. Combined with the missing content_id description, the tool is under-specified 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?
The description explains workspace_id and hub_profile_id, but fails to describe content_id, a required parameter. This is a significant omission that could lead to misuse. Schema coverage is incomplete.
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 retrieves content item details by ID, and the '(v1 schema)' qualifier distinguishes it from get_content_v2. The verb and resource 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?
No guidance is given on when to use this tool versus the sibling get_content_v2, nor any mention of the relationship between the two. An agent is left to infer selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_content_v2ARead-onlyInspect
Get content item by ID (v2 schema).
workspace_id: target workspace ID — get available IDs from list_workspaces()
Includes main asset, user progression, and extended metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, so the description correctly aligns with those. It adds useful context by listing the returned components (main asset, user progression, extended metadata), which goes beyond the annotation info and helps the agent understand what to expect without an output schema.
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 short lines: the primary purpose is first, then the workspace_id hint, then the return summary. No filler words, and all sentences add value. It is efficient and well-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 get-by-ID tool with two parameters and read-only annotations, the description covers the core usage, the return contents, and the prerequisite for obtaining workspace_id. It lacks an explicit contrast with the sibling get_content, but the 'v2 schema' label and the richer return summary partially fill that gap. Overall, it is sufficiently complete for an agent to invoke it 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?
With 0% schema description coverage, the description must compensate. It explains workspace_id thoroughly by indicating it is the target workspace and how to obtain it, but content_id is left to its name and title only. This partial compensation is helpful but not fully adequate for both 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 verb 'Get' with a specific resource 'content item by ID' and indicates the v2 schema. It also mentions what is included (main asset, user progression, extended metadata), which distinguishes it from simpler get operations and gives a complete picture of the 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?
It provides context that this is the v2 schema, implying it is the updated version compared to get_content, and tells the agent to get workspace IDs from list_workspaces(). However, it does not explicitly state when to prefer this over get_content or other content-related tools, so it stops short of a full when/not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hub_profileARead-onlyInspect
Get full hub profile details by ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is consistent with 'Get full hub profile details', so no side-effect disclosure is needed. The description adds useful context that workspace_id is a target workspace identifier, but does not mention error behavior or missing-profile 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?
The description is concise, front-loaded with the main purpose, and uses a second sentence only for the less obvious parameter. No filler or redundant wording is present.
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?
There is no output schema, but the promise of 'full hub profile details' gives the agent a reasonable expectation of the result. Combined with the two clearly identified input parameters, the description is sufficiently complete for this simple read 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?
The workspace_id parameter is explicitly explained with a hint to list_workspaces(). The hub_profile_id parameter is not described in detail, but the phrase 'by ID' and the parameter name make its meaning clear enough.
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 fetches full hub profile details by ID, using the verb 'get' and a specific resource. This distinguishes it from sibling tools like get_hub_profile_by_username or list_hub_profiles.
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 when a hub profile ID is known and explicitly tells users how to obtain the required workspace_id via list_workspaces(). It could be more explicit about when to prefer this over get_hub_profile_by_username, but the by-ID phrasing provides sufficient guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hub_profile_by_usernameBRead-onlyInspect
Get hub profile details by its URL username/slug.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is neutral and consistent with the readOnlyHint annotation. It does not contradict the read-only nature, but adds no additional behavioral detail (e.g., return format, error cases, or side effects) beyond what annotations already imply.
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 short sentences that convey the core purpose and a parameter hint. 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?
While the description clarifies the input parameters, it does not specify what 'hub profile details' include, nor does it mention output structure or possible error scenarios. Given the tool's simplicity and the read-only annotation, this is adequate but not fully detailed.
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 workspace_id parameter is explained with a specific retrieval hint, and the username parameter's role is implied by the main description ('by its URL username/slug'). However, neither parameter has a formal schema description, and the username explanation is indirect.
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 it fetches hub profile details using a username/slug, and identifies the resource type. However, it does not explicitly differentiate from sibling tools like get_hub_profile or list_hub_profiles, though the mention of 'by username' provides some distinction.
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 hint for the workspace_id parameter (where to get it) but offers no guidance on when to choose this tool over alternatives such as get_hub_profile (by ID) or filter_hub_profiles. No situational context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invitation_linkCRead-onlyInspect
Generate a shareable invitation link for a single email address.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
Returns the invitation ID and access link URL.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| role_id | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true, implying the tool does not modify state. However, the description says it 'Generates' an invitation link and 'Returns the invitation ID', which strongly suggests it creates a persistent invitation record—a write operation. This contradicts the readOnlyHint. Therefore, the description contradicts the annotation.
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 the main purpose front-loaded and additional parameter details in a compact list. It avoids fluff and is easy to scan, though it could be slightly better structured (e.g., separating parameter explanations from return info). Overall, it is 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 required parameters and no output schema, the description should provide a complete picture. It omits email and hub_profile_id entirely, does not explain how to obtain hub_profile_id, and gives only a vague return description ('invitation ID and access link URL') without structure. It also lacks any note on permissions or side effects, making it incomplete for safe and 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?
Schema description coverage is 0%, so the description must explain all parameters. It only clarifies role_id (with numeric mapping) and workspace_id (via list_workspaces()), but leaves email and hub_profile_id unexplained. Since half the required parameters are not described, the description fails to compensate for the schema gap.
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 function: generating a shareable invitation link for a single email address. It names the primary resource (invitation link) and the scope (single email). It does not explicitly distinguish it from the sibling tool get_workspace_invitation_link, though the mention of 'single email address' hints at a difference, but that differentiation is not made explicit.
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 some context on how to obtain workspace_id (from list_workspaces()) and defines role_id values, which helps usage. However, it does not state when to use this tool versus alternatives like get_workspace_invitation_link or invite_to_workspace, nor any exclusions or prerequisites (e.g., permission requirements). Guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_permission_groupARead-onlyInspect
Get a permission group by ID, including its members.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds 'including its members' which describes the return content rather than a behavioral trait. It does not contradict annotations and adds a small amount of context, but beyond that there is no mention of authentication, rate limits, or side effects. With annotations carrying the main burden, this is adequate but not rich.
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 concise sentence stating the core purpose, followed by a parameter hint. It is front-loaded with the main action and resource, and every element is useful. 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?
The tool is simple (two parameters, no output schema, annotations cover safety), and the description is mostly adequate. However, it lacks guidance on where to obtain group_id (e.g., from list_permission_groups) and does not mention any potential errors or return format. Given the zero-coverage schema, the description should provide more context for both parameters to be 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 description coverage is 0%, so the description must compensate for both parameters. It explains workspace_id by pointing to list_workspaces(), but leaves group_id completely unexplained. An agent would need to infer its meaning from the tool name. This is only partial compensation for the lack of schema documentation.
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 ('Get') and resource ('permission group by ID') and adds 'including its members' which specifies the scope of the result. It is distinct from list_permission_groups which would retrieve multiple groups, so an agent can differentiate it from siblings without 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?
The description gives a clear purpose but does not explicitly contrast with alternatives like list_permission_groups or provide when-not-to-use guidance. It does offer a useful hint for obtaining workspace_id from list_workspaces(), but this is about parameter sourcing, not usage selection. The context is clear enough for an agent to infer when to use it, but explicit exclusion guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_permission_targetsARead-onlyInspect
Get all targets of a given type accessible to the current user.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile", "Workspace", "Channel", etc.
child_target_type: filter to targets that have a child of this type
parent_target_id: filter to targets belonging to this parent
Returns each target with its permission flags (can_edit, can_archive, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| target_type | Yes | ||
| workspace_id | Yes | ||
| parent_target_id | No | ||
| child_target_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior. The description adds relevant context about user accessibility and returned permission flags, but does not disclose potential side effects, auth requirements, or open-world implications beyond the annotation.
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 and well-structured: a one-sentence purpose followed by clear per-parameter explanations. No redundant or vague phrasing.
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, the description appropriately avoids detailing the return structure but still mentions permission flags. It is complete enough for the tool's simple purpose, though it lacks notes on pagination, ordering, or edge-case 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?
All four parameters are explained in plain language, including examples for target_type and the filtering semantics of child_target_type and parent_target_id. This adds substantial meaning beyond the bare 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 verb ('Get'), the resource ('targets'), and the scope ('accessible to current user'). The description distinguishes it from sibling permission-checking tools (e.g., can_read, can_edit) by focusing on enumeration of targets.
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 useful parameter guidance and implies its use for listing accessible targets, but does not explicitly contrast it with alternatives or state when not to use it. Sibling tools like can_read and give_permission exist, but no direct comparison is made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_progression_statsARead-onlyInspect
Get completion statistics for the current user.
workspace_id: target workspace ID — get available IDs from list_workspaces()
Pass collection_id to scope to a specific collection.
Returns total content count and how many the user has completed.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| collection_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate read-only and non-destructive behavior. The description adds that it returns total content count and completed count, which is useful but not extensive. It does not describe any side effects, which is consistent with the readOnlyHint.
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 compact and well-structured, with three short sentences. It front-loads the purpose and then explains parameters and returns, avoiding any redundant or vague filler.
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 simple read-only nature and absence of an output schema, the description provides sufficient context: it states the return values and parameter usage. It omits edge cases or precise definitions of 'completed', but these are not critical for a straightforward 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 0%, so the description carries the full burden. It explains workspace_id as the target workspace ID and points to list_workspaces() for available IDs, and clarifies collection_id as an optional scoping filter. This adequately covers both parameters despite lacking detailed schema annotations.
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 gets completion statistics for the current user, specifying a concrete verb ('Get') and resource ('completion statistics'). It is distinct from sibling tools, which focus on other actions like progression patching or content management.
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 required workspace_id and how to obtain it via list_workspaces(), and notes the optional collection_id scoping. It lacks explicit 'when to use vs. alternatives' guidance, but given the unique purpose, the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_srgplus_guideARead-onlyInspect
Return the full SRG+ how-to guide: navigation, content creation, the
exact widget shapes for the context body, safe-update rules, asset upload,
archive/restore, and common pitfalls.
Call this once before authoring or editing content if you are unsure of the
workflow or a widget's shape — it is the authoritative reference and ships
with the connector (no separate skill install needed).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only behavior is already indicated by annotations, and the description adds context that the tool is an authoritative reference shipped with the connector. No side effects are mentioned, but none are expected; the description accurately represents the operation.
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 and well-organized, presenting the tool's purpose and usage guidance in two sentences. It lists the guide's topics without unnecessary detail.
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 fully covers the tool's purpose, content, when to use it, and its availability. For a simple guide retrieval tool, no additional context or caveats are 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?
The tool has no parameters, and the schema reflects that. The description requires no parameter explanations, so full marks apply.
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 'Return[s] the full SRG+ how-to guide' and enumerates its contents. It distinguishes itself by being an authoritative reference, a purpose not shared by any sibling 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?
The description explicitly tells when to use it: 'Call this once before authoring or editing content if you are unsure of the workflow or a widget's shape.' It also clarifies that no separate skill install is needed, removing a potential barrier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subcontentARead-onlyInspect
List the subcontent items nested inside a collection, page by page.
Returns the content items linked as subcontent inside the given collection's
category. Each item includes its id, name, cover, privacy, progression,
and the section it belongs to.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the collection (the parent content item)
category_name: "Content" (nested content items) or "Asset" (nested assets)
page_size: items per page (default 50)
cursor: opaque cursor from a previous response; omit for first page
order: "Asc" (default) or "Desc"
Returns {"items": [...], "cursor": "..." | null}
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Asc | |
| cursor | No | ||
| page_size | No | ||
| content_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it returns a list of items, which aligns with the readOnlyHint annotation. It does not mention side effects or side-effect-free behavior explicitly, but the read-only nature is clear from 'List' and the annotation. The description adds context about pagination (cursor, page_size) and the structure of the response, which goes beyond the annotation.
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 and well-structured. It provides a brief introductory sentence, followed by a clear parameter list with inline explanations, and ends with the return format. There is no redundant or extraneous 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?
The description includes the return format ('Returns {"items": [...], "cursor": ...}') and explains the purpose of the cursor for pagination. These details are not in the schema or annotations, making the description complete for an agent to understand the tool's output and usage without additional 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?
All six parameters are explained in the description, either directly in the parameter list (workspace_id, content_id, category_name, page_size, cursor, order) or through context (e.g., the default values for page_size and order). The description covers the schema fully, with no parameter left undocumented.
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: 'List the subcontent items nested inside a collection, page by page.' It uses a specific verb ('List') and identifies the resource ('subcontent items') and scope ('nested inside a collection'), distinguishing it from other content-related tools like list_contents or get_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 explains exactly what the tool does, including pagination behavior and the return format. While it does not explicitly contrast with sibling tools, the purpose is self-evident from the name and description, and the parameter explanations (e.g., category_name for 'Content' vs 'Asset') provide sufficient guidance for when 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_userCRead-onlyInspect
Get a user's full profile by ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds that it returns a 'full profile' and requires a workspace_id, which provides some context beyond the annotations. However, it does not disclose response format, error behavior, or any side effects, though given the read-only hint, the bar is lower.
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 very concise, with two sentences and no filler. The purpose is front-loaded, and the workspace_id tip is a useful addition. However, it could be slightly better structured if user_id were also addressed, but overall it is appropriately brief.
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 (get by ID) and the presence of annotations for read-only safety, the description covers the basics. However, it lacks differentiation from sibling user-fetching tools, omits user_id semantics, and does not describe the return value structure since there is no output schema. More guidance on when to choose this tool over similar ones 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 description coverage is 0%, so the description must compensate. It explains workspace_id by suggesting a source for valid values (list_workspaces()), but it does not mention user_id at all, despite the description implying 'by ID'. The user_id parameter remains entirely undocumented in the description, and the schema only provides type and title, which is minimal. The description adds some value for workspace_id but not for user_id.
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 a specific verb and resource: 'Get a user's full profile by ID.' It distinguishes from sibling tools by focusing on a single user fetch by ID, though it doesn't explicitly name alternatives. The phrase 'full profile' adds specificity.
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 no explicit guidance on when to use this tool versus alternatives like get_workspace_users or check_user_exists_by_email. It does offer a helpful tip for obtaining workspace_id via list_workspaces(), but that is about parameter sourcing, not usage context. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspaceARead-onlyInspect
Get full details of a workspace (name, seats, subscription, hub profiles).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, covering the read-only nature. The description adds no extra side-effect or permission context, but since the annotations exist, the bar is lower and no contradiction occurs.
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 short sentences with no redundancy. It packs the resource, purpose, and parameter guidance efficiently, making it easy for an agent to parse quickly.
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 tool with a single parameter, the description fully covers what the tool does, what data it returns (name, seats, subscription, hub profiles), and how to populate the required parameter. Nothing essential is missing.
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 provides only a title and type for workspace_id with no description. However, the description compensates by explaining where to obtain valid IDs (from list_workspaces()), giving meaningful context to the parameter that would otherwise be purely nominal.
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 'Get' and the resource 'workspace', and enumerates specific details (name, seats, subscription, hub profiles). This distinguishes it from sibling tools like list_workspaces (which lists workspaces) and get_workspace_hub_profiles (which focuses only on hub profiles).
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 a direct usage hint for the workspace_id parameter by stating 'get available IDs from list_workspaces()', implying this tool is for fetching full details of a single workspace after obtaining its ID. It does not explicitly contrast with other siblings, but the 'full details' phrasing and ID sourcing guidance give sufficient directional cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_actionARead-onlyInspect
Get full details of a workspace automation action by ID.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the bar is lower. The description's 'Get' wording is consistent with a read-only operation but adds no extra behavioral context beyond the annotations, such as whether the action is active or archived.
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 with the core purpose front-loaded. No redundant phrases; the workspace_id hint is a useful inline addition without bloating the description.
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 getter with two parameters and no output schema, the description covers the basic purpose and workspace_id source. However, it omits how to obtain action_id, which is a critical input for the tool, and gives no hint about the returned 'full details' structure.
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 0%, so the description must compensate. It explains workspace_id well ('target workspace ID — get available IDs from list_workspaces()'), but action_id is only imprecisely described via 'by ID' with no indication of where to obtain valid action IDs.
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?
States a specific verb ('Get'), resource ('workspace automation action'), and scope ('full details') with an explicit 'by ID' qualifier. This clearly distinguishes it from sibling tools like list_workspace_actions, which lists, and create/update/delete, which mutate.
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 for retrieving a single action's details ('by ID') but does not explicitly state when to choose this over list_workspace_actions or other siblings. It does provide a useful hint for workspace_id (get from list_workspaces()), but no exclusions or direct comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_hub_profilesBRead-onlyInspect
List all hub profiles in a workspace (minimal representation).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds 'minimal representation' indicating a limited response format and the workspace_id sourcing note, but does not disclose pagination or ordering behavior. It adds modest 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?
Two concise sentences with no filler. The main action is front-loaded, and the parameter note is efficient. Every word 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?
With an output schema present, return values need not be explained. The description covers the core operation and parameter sourcing, but lacks explicit differentiation from similar hub-profile listing tools. For a simple read tool with one parameter, it is mostly complete, though a note on scope differences would improve 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?
Schema has 0% coverage, so the description carries the burden. It explains workspace_id as 'target workspace ID' and directs to list_workspaces() for valid IDs, which is meaningful guidance beyond the schema's plain 'string' type.
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?
States a specific verb ('list') and resource ('hub profiles') with a scope qualifier ('in a workspace') and a representation qualifier ('minimal representation'). It distinguishes from global listing tools by scope but does not explicitly name alternatives, so it is clear yet not fully differentiated.
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 only a pointer for obtaining workspace_id via list_workspaces(), but does not explain when to choose this tool over siblings like list_hub_profiles or get_hub_profile. No explicit when/when-not conditions, so agents must infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_invitation_linkARead-onlyInspect
Generate a shareable invitation link for a workspace for a single email.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
Returns the invitation ID and access link URL.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | |||
| role_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description says 'Generate' which might imply a side effect, but does not explicitly clarify that no invitation record is created. It also doesn't mention permissions or rate limits. The description adds minimal 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 concise, with two short sentences and a clean parameter breakdown. It avoids unnecessary detail and front-loads the primary purpose. No redundant 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 simple read-only operation with three parameters, the description adequately covers the action, returns the invitation ID and link, and provides a cross-reference for workspace_id. It lacks information on edge cases (e.g., invalid email) but that is not critical for a straightforward link generator.
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 0%, so the description is the sole source of parameter meaning. It explicitly explains workspace_id (with a reference to list_workspaces) and role_id (with enum-like values 1/2/3). The email parameter is only implied by 'for a single email' rather than explicitly described, but the intent is clear.
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 ('Generate a shareable invitation link') and the scope ('for a workspace for a single email'). It distinguishes from sibling tools by specifying 'workspace' and 'single email'. However, the verb 'generate' slightly conflicts with the tool name 'get', which could introduce 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?
The description gives no explicit guidance on when to use this tool over alternatives like invite_to_workspace or get_invitation_link. It does provide a helpful hint to use list_workspaces() for workspace_id, but does not explain the selection criteria or trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workspace_usersARead-onlyInspect
List all users in a workspace with their roles.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds minimal behavioral context beyond the core action; it does not mention pagination, filters, or any side effects, but for a read-only list operation that may be acceptable.
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, with the primary purpose front-loaded and the parameter hint placed as a single line. No superfluous text, making it easy to parse.
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 operation with one parameter and an output schema, the description covers the essential: what is returned, the parameter meaning, and how to source it. It does not address edge cases like pagination or filters, but these are not critical given the tool's simplicity.
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 description compensates for zero schema description coverage by explicitly defining workspace_id as the target workspace ID and providing a cross-reference to list_workspaces() for obtaining valid IDs. This is precise and actionable.
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 states a clear verb ('List') and resource ('users in a workspace') and specifies the output includes roles. It distinguishes from sibling user-listing tools like list_hub_profiles by focusing on workspace-scoped users, though it does not explicitly name an alternative.
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 offers no guidance on when to prefer this tool over related ones (e.g., get_workspace_hub_profiles). It only hints at obtaining workspace IDs from list_workspaces(), which is useful but not a usage criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
give_permissionAInspect
Grant a user a role on a target (hub profile, workspace, channel, etc.).
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile", "Workspace", or "Channel"
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | ||
| user_id | Yes | ||
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the core effect of granting a role, and annotations confirm it is not read-only or destructive. However, it does not mention whether the operation replaces an existing role, whether admin rights are required, or any other 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 brief, direct, and free of unnecessary words. The parameter explanations are compact and easy to scan, with clear formatting.
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 permission-granting action, the description provides enough context to understand the target types and role values. Since an output schema is available, return values need not be described, though potential errors or prerequisites are not mentioned.
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 description explains role_id mapping and target_type values, and points to list_workspaces() for workspace_id. However, user_id and target_id are only implicitly described; the relationship between target_id and target_type is not fully explicit, and no parameter descriptions exist 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 action ('Grant a user a role on a target') and specifies the valid target types (hub profile, workspace, channel). It is immediately distinct from sibling tools like delete_permission or can_manage_permissions.
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 when to use the tool (when granting a role) but does not explicitly contrast it with alternatives such as delete_permission or permission group tools. It provides useful cross-references for workspace IDs but not explicit 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.
invite_to_hub_profileCInspect
Send email invitations to join a hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | ||
| role_id | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions that email invitations are sent, implying side effects, but it does not disclose permission requirements, whether invitations are created or stored, or any other consequences. The annotations provide only minimal read-only and destructive hints and are not contradicted.
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 short and front-loaded with the main purpose. The parameter notes are compact and directly useful, though the lack of formatting makes the parameter explanations a bit cramped.
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 does not explain what a hub profile is, how it relates to the workspace_id, or what the expected result of the invitation is. With no output schema and missing parameter details, an agent would struggle to use this tool correctly in 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?
The description explains workspace_id and role_id, including role values, but leaves hub_profile_id and emails undefined. With four required parameters, only half receive meaningful explanation, leaving critical ambiguity about the invitation target and recipient format.
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 primary action: sending email invitations to join a hub profile. It distinguishes this tool from workspace-level invitations by naming the hub profile resource, although the meaning of 'hub profile' is not fully elaborated.
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 useful details for workspace_id and role_id, but it does not explain when to use this tool versus related tools like invite_to_workspace or join_hub_profile. No decision criteria or contextual triggers are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_to_workspaceAInspect
Send email invitations to join a workspace.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | ||
| role_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false. The description adds that emails are sent and maps role_id values, but it does not disclose side effects like invitation record creation, email delivery failures, or authorization requirements, which are not covered by 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, using two sentences and a clear parameter breakdown. No redundant or filler content is present.
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 basic invocation details but omits expected output, error conditions, permissions, or distinctions from similar invitation tools. Given the lack of an output schema, more context would be helpful for an agent to use this tool confidently.
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 description explains workspace_id (target workspace from list_workspaces) and role_id (1=Admin, 2=Editor, 3=Viewer), adding meaning absent from the schema. However, the 'emails' parameter is not described, leaving its purpose implied by the tool name.
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: 'Send email invitations to a workspace.' It specifies the resource (workspace) and action (invite via email), distinguishing it from similar tools like invite_to_hub_profile.
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 identifying the target resource (workspace) and providing context for workspace_id via list_workspaces(), but it does not explicitly contrast with sibling tools such as invite_to_hub_profile or mention 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.
is_memberCRead-onlyInspect
Check whether the current user is a member of a target (any role).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds the 'any role' clarification but does not disclose output format or edge cases (e.g., what happens for non-members). 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 two short sentences with no fluff. The purpose is front-loaded, and the workspace_id hint is useful, though it sacrifices completeness for brevity.
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 3-param tool with no schema descriptions, the description is inadequate. It omits target_type semantics, does not state the return value (boolean), and fails to clarify what 'target' refers to (workspace, channel, content?). The output schema exists but does not excuse the lack of parameter documentation.
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 0%, so the description must compensate. It only explains workspace_id, leaving target_id and especially target_type (which likely accepts specific enum values) undocumented. The agent has to guess valid inputs.
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 states a clear verb ('check') and resource ('membership of a target'), and clarifies it covers any role. It implicitly distinguishes from permission-specific siblings like can_read/can_edit, though it does not 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?
No guidance is given on when to use this tool versus permission checks (can_read, can_edit, etc.) or other membership-related tools. The only hint is a parameter pointer to list_workspaces, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
join_hub_profileAInspect
Join a public hub profile as the current API key user.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is not read-only and not destructive, which the description aligns with. The description itself does not add extra detail about side effects, permissions, or failure modes, but annotations lower the bar and no contradiction exists.
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, using two short sentences with no redundant phrasing. Every part contributes directly to understanding the tool's purpose and a key parameter.
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 join action, the description covers the essential purpose and provides a helpful pointer for one parameter. It lacks a mention of any prerequisites (e.g., the hub profile must be public), but the overall tool is straightforward and the description is sufficient for an agent to invoke it 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 schema provides no parameter descriptions, so the description's note about workspace_id (target workspace and how to get IDs) adds meaningful value. However, hub_profile_id is left without any additional explanation, leaving half the parameters underexplained.
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 ('Join') and the resource ('a public hub profile'), making it unambiguous. It also specifies the actor ('current API key user'), which distinguishes it from invite-related 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?
The description provides practical usage guidance by noting that workspace_id refers to the target workspace and suggests using list_workspaces() to obtain valid IDs. It also implies that this tool is for joining a public hub profile, giving context for when to use it, though it doesn't explicitly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_assetsARead-onlyInspect
List assets in a hub profile with cursor-based pagination.
workspace_id: target workspace ID — get available IDs from list_workspaces()
types: e.g. ["Media", "File", "Image", "Embed", "Video"] or None for all
Returns {"items": [...], "cursor": "..." | null}
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | ||
| cursor | No | ||
| page_size | No | ||
| workspace_id | Yes | ||
| only_archived | No | ||
| exclude_assets | No | ||
| hub_profile_id | Yes | ||
| exclude_collections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior; the description adds the response shape and pagination mechanism, which is useful 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?
Two sentences plus a return format line, with no redundancy or fluff. 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?
Provides core listing semantics and return shape, but omits explanations of filter parameters (only_archived, exclude_assets, exclude_collections) and pagination controls (cursor, page_size). No output schema exists to fill 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 has zero property descriptions, so the description must compensate. It explains workspace_id and types, but leaves 6 of 8 parameters undocumented (cursor, page_size, only_archived, exclude_assets, exclude_collections, hub_profile_id), which is insufficient for a 0% coverage 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?
States it lists assets in a hub profile with cursor-based pagination, clearly distinguishing from single-get (get_asset) and search (search_assets) operations. The verb and resource 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?
Provides no explicit guidance on when to choose this over search_assets or get_asset. Only hints at sourcing workspace_id via list_workspaces(), but no alternative comparisons or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channelsBRead-onlyInspect
List all channels for a hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| include_archived | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint and destructiveHint annotations, but adds no additional behavioral context beyond the basic action. It does not mention side effects, permissions, or the default exclusion of archived channels (though that is inferable from the schema).
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 and well-structured: a clear one-sentence purpose followed by a focused parameter hint. 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?
For a simple list operation with an output schema, the description is mostly complete. It could clarify why both hub_profile_id and workspace_id are required and the exact scope (e.g., channels within a workspace for a specific hub profile), but it is adequate for basic 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?
The description adds semantic value for workspace_id by explaining it is the target workspace and how to get valid IDs. However, it does not explain hub_profile_id or include_archived, leaving most parameter meaning to 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 ('List all channels') and the resource scope ('for a hub profile'). It is distinguished from channel-specific tools like get_channel_by_name by using 'list all', but does not explicitly differentiate from other list-like channel tools or mention the workspace context.
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 no guidance on when to use this tool versus other channel-related tools. It only includes a parameter sourcing tip (use list_workspaces() for workspace_id), which helps with parameter values but not with tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contentsARead-onlyInspect
List content items in a hub profile with cursor-based pagination.
workspace_id: target workspace ID — get available IDs from list_workspaces()
types: ["Content"], ["Collection"], or None for both (default)
Returns {"items": [...], "cursor": "..." | null}
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | ||
| cursor | No | ||
| page_size | No | ||
| workspace_id | Yes | ||
| only_archived | No | ||
| hub_profile_id | Yes | ||
| exclude_contents | No | ||
| exclude_categories | No | ||
| exclude_collections | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive. Description adds context about cursor-based pagination and return shape, which is useful. 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?
Description is short, direct, and well-organized. It lists parameters and return shape without unnecessary detail.
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 (9 parameters) and no output schema, the description is incomplete. It covers only two parameters and omits details on filters, pagination behavior, and error handling.
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 0%, and description only explains workspace_id and types out of 9 parameters. Many parameters like only_archived, exclude_contents are left undocumented, so description does not compensate for lack of 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?
Clearly states the action (list) and resource (content items) within a scope (hub profile) and mentions pagination. Differentiates from sibling tools like search_contents and get_content by the nature of listing all items.
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?
No explicit guidance on when to use this tool versus alternatives like search_contents or get_content. It provides some parameter hints but lacks specific use-case direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hub_profilesARead-onlyInspect
List all hub profiles in a workspace.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint and destructiveHint. The description adds that it lists all hub profiles, which is useful, but does not mention pagination, ordering, or response format. Consistent with annotations, 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 extremely concise and front-loaded, with the key action in the first sentence and a helpful follow-up for the parameter. 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?
For a simple list operation with a single parameter and read-only annotations, the description is complete. It explains how to obtain the needed input and what operation is performed. Additional details about pagination or result shape would be nice but are not critical for basic 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?
The only parameter, workspace_id, is described as 'target workspace ID' and a cross-reference to list_workspaces() is provided. This gives clear semantic meaning, though it does not elaborate on the expected format or possible restrictions.
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 ('List'), resource ('hub profiles'), and scope ('in a workspace'). It is unambiguous, though it does not explicitly differentiate from sibling tools like list_managed_hub_profiles or filter_hub_profiles.
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 guidance on how to obtain workspace_id (via list_workspaces()), but does not discuss when to prefer this tool over alternatives, such as filter_hub_profiles or list_managed_hub_profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_invitationsCRead-onlyInspect
List all pending invitations for a hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to restate safety behavior. The description does not contradict these 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 short and front-loaded with the core purpose. However, the missing hub_profile_id explanation reduces its completeness despite its 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 the large number of invitation-related sibling tools, the description is not complete enough to disambiguate usage. It omits hub_profile_id semantics and does not clarify the relationship between the workspace and hub profile parameters.
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 workspace_id is explained, with a helpful pointer to list_workspaces(). The required hub_profile_id parameter is not described at all, leaving a significant gap in 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 states a specific action and resource: listing pending invitations for a hub profile. This helps distinguish it from workspace-level invitation tools, though it does not explicitly call out the sibling list_workspace_invitations.
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?
No guidance is given about when to use this tool versus alternatives such as list_workspace_invitations, get_invitation_link, or invite_to_hub_profile. The only usage-related hint is how to obtain a workspace_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_managed_hub_profilesARead-onlyInspect
List hub profiles where the current API key user has Admin or Editor role.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description accurately reflects the read-only nature (list operation) consistent with annotations (readOnlyHint=true, destructiveHint=false). It adds clarity about the role filter, which is a behavioral aspect, and 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?
The description is extremely concise, consisting of two short sentences. It delivers all necessary information without any unnecessary words or 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 large number of similar sibling tools, the description effectively differentiates this tool by specifying the role constraint. It also provides essential guidance for the parameter. Minor omission: it doesn't describe the return format, but this is not critical for a list 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?
The single parameter workspace_id is fully explained in the description, including how to retrieve valid values. This adds meaningful context beyond the schema's basic type and title, making parameter usage clear.
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: listing hub profiles where the current user has Admin or Editor role. This specific scope distinguishes it from similar sibling tools like list_hub_profiles or filter_hub_profiles.
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 a direct instruction for the required parameter (workspace_id) and tells the user to obtain it from list_workspaces(). While it doesn't explicitly contrast with all alternative listing tools, the role-filter context implies when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_permission_groupsARead-onlyInspect
List all permission groups for a target.
workspace_id: target workspace ID — get available IDs from list_workspaces()
target_type: "HubProfile" or "Workspace"
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes | ||
| target_type | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true, and the description is consistent with that by only listing groups with no side effects mentioned. The description adds context about the target types but does not discuss return format or edge cases; however, the read-only nature is clear.
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 only two short sentences. It front-loads the core action and then gives essential parameter context without any redundant or verbose wording.
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 provides sufficient context for calling the tool: it states the purpose, the required target_type values, and how to obtain workspace_id. However, it does not explicitly define target_id, which is a required parameter. The output schema is present, so return values are not needed in the description. Overall, the description is mostly complete but has a minor gap regarding target_id.
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 provides no parameter descriptions, so the description must compensate. It explains workspace_id (source of IDs) and target_type (allowed values), but does not explicitly define target_id. It is implied that target_id is the identifier of the target of the given type, but this is not stated directly, leaving one of three parameters under-specified.
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 ('List all permission groups') and the target ('for a target'), which is a specific verb and resource. It also clarifies the two possible target types, making the purpose unmistakable even among many sibling 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?
The description provides some parameter guidance (how to get workspace_id, allowed values for target_type) but does not explicitly say when to use this tool over alternatives like get_permission_group or other permission-related tools. The distinction is implicit through the 'list all' phrasing, but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspace_actionsARead-onlyInspect
List all automation actions configured on a workspace.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds no further behavioral context (e.g., pagination, return shape), but it does not contradict the annotations. With annotations present, this is acceptable but minimal.
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: the first states the purpose, the second explains the parameter. No fluff, and the key information is 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?
For a simple list operation with one parameter and an existing output schema, the description is complete. It tells the agent what the tool does and how to source the parameter. No further details are 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?
The schema provides only type and required flag for workspace_id with no description (0% coverage). The description explicitly explains the parameter's meaning and directs the agent to list_workspaces() for valid IDs, which is essential and fully compensates for the schema gap.
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 states 'List all automation actions configured on a workspace' with a clear verb, resource, and scope. It distinguishes itself from sibling tools like get_workspace_action (single action) and create/update/delete actions, so an agent can infer this is the bulk listing operation.
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?
No guidance is given on when to use this tool versus alternatives such as get_workspace_action or other list tools. The only hint is about obtaining workspace_id, not about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspace_invitationsARead-onlyInspect
List all pending invitations for a workspace.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to repeat safety. It adds the 'pending' filter, which is useful. However, it doesn't describe pagination, error handling, or return format details beyond the output schema. With annotations covering safety, this is acceptable but not rich.
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 fluff. The main action is front-loaded, and the parameter guidance is direct. Every word 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?
For a simple read-only list operation with one parameter and an output schema, the description covers the essential aspects: what it does, how to get the workspace ID. It doesn't detail edge cases like empty results or authorization, but that's minor given the annotations and output schema.
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 0%, so the description must compensate. It does by explaining workspace_id's purpose and referencing list_workspaces() for valid values. This adds meaningful context beyond the raw schema, though it could mention the expected format (e.g., UUID) if applicable.
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 (list), the resource (pending invitations for a workspace), and the scope (workspace-specific). It distinguishes this from sibling tools like list_invitations by explicitly targeting workspace invitations, so an agent can easily differentiate it.
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 this to list pending invitations for a workspace, and it even tells the agent how to get valid workspace IDs via list_workspaces(). It does not explicitly exclude alternatives like list_invitations, but the workspace scope is implicit, so usage guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workspacesARead-onlyInspect
List all workspaces accessible with the current API key(s).
Returns a SLIM row per workspace — id and name — which is all you need to
pick a workspace_id for other tools. For full details (seats, subscription,
hub profiles) call get_workspace(workspace_id); for a workspace's brands
call list_hub_profiles(workspace_id).
A user-level key (srgplus_u_) returns every workspace it can reach; multiple
keys are merged. The list comes from the single bulk call made when the key
was resolved, so it is one response, not one request per workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive, but the description adds transparency by specifying the response format ('SLIM row' with id and name), the bulk-call nature, and behavior with user-level keys and merging multiple keys. This 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?
The description is well-structured and not overly long, but it includes some redundancy in the final sentence about the bulk call (already implied earlier). Still, it is front-loaded and concise enough for a tool with no parameters.
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 no parameters and an output schema present, the description fully covers what an agent needs: it explains the purpose, the minimal return fields, and the relationship to other tools. Nothing critical is missing.
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 in the schema, and the description does not need to explain any. Per the rubric, with 100% schema coverage, baseline is 3. The description adds no parameter-specific information because there are none.
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?
Clear statement: 'List all workspaces accessible with the current API key(s).' It uses the specific verb 'List' with a clear resource and scope, and differentiates from sibling tools like get_workspace and list_hub_profiles.
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: 'to pick a workspace_id for other tools', and contrasts with get_workspace for full details and list_hub_profiles for brands. The bulk-call behavior is also explained, providing clear context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_contentAInspect
Move a content item to a different category section within a channel.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the content item to move
channel_id: ID of the channel containing the target category
category_id: ID of the destination category
section_id: ID of the destination section within that category
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| content_id | Yes | ||
| section_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose behavioral details beyond the move action itself, such as whether the content is removed from its previous category/section or any side effects. Annotations cover readOnly and destructive hints, but the text adds no further behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single clear action sentence followed by a short parameter list. There is no redundant or extraneous 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?
The description covers the action and all parameters, and an output schema exists, so return value details are not required. It is slightly limited by not explaining source/destination relationships or usage conditions, but it is otherwise complete for the 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?
All five parameters are individually described in the description, including their roles and source hints such as 'get available IDs from list_workspaces().' Since the schema itself has no parameter descriptions, this fully compensates and adds clear 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 states a specific action: 'Move a content item to a different category section within a channel.' This clearly distinguishes it from sibling tools like move_subcontent or add_content_to_category by specifying the resource type and destination.
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 gives parameter guidance but does not explicitly state when to use this tool versus alternatives such as add_content_to_category or remove_content_from_categories. It lacks direct 'use when' or 'not for' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_hub_profile_to_workspaceAInspect
Transfer a hub profile to a different workspace (preserves content).
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false and destructiveHint=false, which align with the description's 'Transfer' and 'preserves content'. The description adds clarity about the non-destructive nature of the move, going beyond the annotations by explicitly stating a behavioral guarantee.
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, concise sentence with no redundant words. It front-loads the primary action and includes a useful qualifier about content preservation without unnecessary detail.
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 straightforward move operation with two parameters, the description provides sufficient context—what is moved, to where, and the preservation of content. It does not discuss return values or error conditions, but given the simplicity, this is not a significant gap.
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 two parameters (workspace_id and hub_profile_id) are self-explanatory from their names, and the description implies their roles (destination workspace and the hub profile to move). However, the description does not explicitly define them or their relationship, leaving some reliance on common sense.
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: 'Transfer a hub profile to a different workspace' with the added note '(preserves content)' which specifies a key attribute. This distinguishes it from related hub profile operations like create, update, archive, or delete, and there is no other move operation among 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?
The description implies the use case (moving a hub profile between workspaces) but does not explicitly state when to choose this tool over alternatives or provide exclusions. It lacks contrast with sibling operations, though the uniqueness of the action partially compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_subcontentAInspect
Reorder a subcontent item within a collection section.
Moves the item to the position immediately AFTER previous_subcontent_id.
Pass previous_subcontent_id=None to move the item to the very first
position in the section.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the collection (the parent content item)
category_name: "Content" or "Asset"
section_id: ID of the section containing the subcontent item
subcontent_id: ID of the subcontent item to reorder
previous_subcontent_id: ID of the item that should come directly before the
moved item; None places it first in the section
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| section_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes | ||
| subcontent_id | Yes | ||
| previous_subcontent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutating operation (readOnlyHint false) that is not destructive (destructiveHint false) and an open world (openWorldHint true). The description adds the ordering mechanism but does not disclose potential side effects, permission requirements, or effects on other items. It does not contradict annotations, but given the open world hint, more transparency could be expected.
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 with a clear first sentence and a structured parameter block. Each sentence adds value, and the core behavior is front-loaded. It is well-organized without excessive verbosity.
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 6 parameters and the existence of an output schema, the description covers the behavior and parameters adequately. It does not address error handling or prerequisites, but the information needed to call the tool correctly is present.
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 has zero parameter descriptions, so the description is the sole source of meaning. It explains each parameter's role, provides guidance on obtaining workspace IDs from list_workspaces(), and clarifies the behavior of previous_subcontent_id. This fully compensates for the 0% 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 action 'Reorder a subcontent item within a collection section,' specifying the verb, resource, and context. This distinctly separates it from sibling tools like add_subcontent, delete_subcontent, and get_subcontent, which operate on different aspects of subcontent.
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 how to use the tool, including the special case of previous_subcontent_id=None to place the item first. It provides clear operational context but does not explicitly contrast with alternatives like move_content, though the scope is evident from the naming and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_content_progressionAInspect
Update the current user's progression status for a content item.
workspace_id: target workspace ID — get available IDs from list_workspaces()
status: "NotStarted", "Incomplete", or "Completed"
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| content_id | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description adds little beyond that. It clarifies the scope ('current user's progression') but does not disclose behaviors like whether the update overwrites existing status or has side effects (though openWorldHint=true is present in annotations). The description 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?
The description is concise: two sentences plus two parameter lines. It front-loads the purpose and keeps parameter notes inline. No fluff, 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?
For a simple 3-parameter update with no output schema, the description is mostly complete but misses explaining content_id. It also doesn't mention any return value or error conditions, but given the simplicity and annotations, a 3 is appropriate.
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 0%, so the description must compensate. It covers workspace_id (with how to obtain it) and status (listing allowed values), but content_id is completely undocumented. This partial coverage adds value but leaves a gap.
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: 'Update the current user's progression status for a content item.' The verb 'Update' and the specific resource (progression status for a content item) are explicit. It distinguishes from siblings like patch_media_progression (media-specific) and get_progression_stats (read-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?
The description implies usage when updating progression status but does not explicitly state when to use it over alternatives (e.g., patch_media_progression) or provide exclusion criteria. It does give guidance for obtaining workspace_id via list_workspaces(), which is helpful, but no clear 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.
patch_media_progressionAInspect
Update the current user's last watched position in a media asset (seconds).
workspace_id: target workspace ID — get available IDs from list_workspaces()
Call periodically during playback to enable resume functionality.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| workspace_id | Yes | ||
| last_watched_time | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds important behavioral context by specifying the scope ('current user's') and the purpose (resume functionality), going beyond the annotation basics.
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 concise sentences, front-loaded with the core purpose, and includes a practical tip for one parameter without any 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?
For a simple update operation, it covers what, when, and one key parameter. With an output schema present and no complex edge cases, the missing details (return value, error handling) are not critical, though a note on overwrite semantics could have pushed it higher.
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 provides no parameter descriptions (0% coverage). The description explicitly explains workspace_id and gives context for last_watched_time ('seconds'), but media_id is not explicitly described, leaving it to inference.
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 ('Update the current user's last watched position in a media asset') with a specific resource (media asset) and units (seconds), distinguishing it from related tools like patch_content_progression.
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 when to use it ('Call periodically during playback to enable resume functionality') and gives a concrete instruction for one parameter (get workspace_id from list_workspaces()). This leaves no ambiguity about invocation timing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_content_from_categoriesADestructiveInspect
Remove a content item from one or more channel categories.
The content item itself is not deleted.
workspace_id: target workspace ID — get available IDs from list_workspaces()
content_id: ID of the content item
channel_id: ID of the channel
category_ids: IDs of the categories to remove the content from
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| content_id | Yes | ||
| category_ids | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful behavioral context beyond the annotations, notably that the content item itself is not deleted. The destructiveHint annotation already signals mutation, and the description clarifies the scope of the destruction without contradicting 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, well-structured, and front-loaded with the core purpose. The important non-deletion clarification is included immediately, and the parameter list is clean and easy to scan.
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 relatively simple operation, the description covers the essential context: the action, the affected resource, and a key side-effect clarification. Since an output schema is present, the lack of return-value explanation is acceptable. It does not mention error conditions or relationship constraints, but these are not critical for this straightforward 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?
All four required parameters are mentioned and given at least basic semantic meaning. The workspace_id parameter includes a helpful source hint (list_workspaces()). The other parameter explanations are simple but adequate, adding mild value over the raw schema names.
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 ('Remove') and the resource ('a content item from one or more channel categories'). It is unambiguous and immediately distinguishes this operation from deleting the content itself, which is reinforced by the follow-up sentence.
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 useful context by clarifying that the content item is not deleted, helping the agent understand when this operation is appropriate versus a destructive content removal. However, it does not explicitly name alternatives such as archive/delete or the add-content-to-category counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_user_from_permission_groupCDestructiveInspect
Remove a user from a permission group.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | ||
| group_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, covering the mutation and destructive nature. The description adds no additional behavioral context, such as side effects, reversibility, or permission requirements. It neither contradicts annotations nor enriches 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?
The description is extremely concise and front-loaded with the core action. Every sentence serves a purpose, and the workspace_id hint is placed at the end without clutter. It is appropriately sized for a simple tool, though it borders on under-specification.
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 mutation with three required parameters and no parameter descriptions, the description is incomplete. It lacks usage context, alternatives, and sufficient parameter semantics for group_id and user_id. Even with an output schema present, an agent cannot reliably invoke this tool without additional 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 description coverage is 0%, so the description must compensate. It only provides guidance for workspace_id (pointing to list_workspaces()), leaving group_id and user_id completely undocumented in both schema and description. This is a significant gap for two of the three required 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 action: 'Remove a user from a permission group.' It names the specific verb and resource, making the purpose obvious. However, it does not explicitly distinguish this from the sibling add_users_to_permission_group, so it falls short of a 5.
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?
No guidance is given on when to use this tool versus alternatives. There is no mention of related permission-group operations or any conditions that would favor this tool. The only hint about workspace_id is parameter-related, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_categoryAInspect
Restore a previously archived category inside a channel.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's 'Restore' is consistent with a non-destructive write. The description adds a useful precondition (the category must have been archived) but does not disclose side effects, error behavior, or what happens to associated content. With annotations covering the safety profile, this is adequate but not rich.
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 one sentence plus a hint, front-loading the core action. It includes a practical pointer for workspace_id without any fluff or repetition. Every word 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?
For a mutation tool with three required parameters and zero schema coverage, the description is too thin. It fails to explain how to get channel_id and category_id, what the tool returns (though an output schema exists, its content is unknown), or what error conditions might arise (e.g., category not archived, insufficient permissions). An agent would have to guess or consult other tools to use it 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 0%, so the description must compensate. It explains workspace_id and points to list_workspaces() for valid IDs, but gives no guidance on channel_id or category_id—neither their format nor how to obtain them (e.g., via list_channels or list_categories). Two of three parameters remain effectively undocumented.
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 ('Restore'), the resource ('a previously archived category'), and the location ('inside a channel'). It is distinct from sibling tools like archive_category, delete_category, and restore_channel, making its purpose 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 implies the tool is used to undo an archiving action, but it does not explicitly state when to use it versus alternatives (e.g., restore_content, restore_channel). It gives no exclusions or conditions beyond the category being previously archived, and does not mention prerequisites like permission requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_channelBInspect
Restore a previously archived channel.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral details such as side effects, required permissions, or that the restore operation changes the channel's state from archived to active. The annotations indicate readOnlyHint=false and destructiveHint=false, which imply a non-read-only but non-destructive operation, but the description itself adds no additional transparency beyond the annotation.
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 and well-structured. It opens with a single-sentence purpose, followed by a clear parameter breakdown for workspace_id. There is no redundant information or unnecessary elaboration, making it easy to parse quickly.
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 low complexity of the tool (two simple string parameters and a straightforward action), the description is mostly adequate. However, the missing explanation for channel_id and the lack of any mention of the return value or expected outcome slightly reduce completeness. The provided workspace_id hint is helpful but insufficient to make the tool fully self-contained.
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 workspace_id is explained in the description, with guidance to obtain IDs from list_workspaces(). The channel_id parameter is completely undefined; its role as the target channel identifier is not explicitly stated. This leaves one of two parameters semantically incomplete, reducing overall clarity for parameter usage.
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 function: restoring a previously archived channel. It is concise and distinguishes the action from other channel operations like create, update, archive, or delete. The sibling list includes archive_channel and restore_channel, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a helpful hint for the workspace_id parameter, directing users to list_workspaces() to find valid IDs. However, it does not explicitly state when to use this tool versus other restore methods (e.g., restore_category, restore_hub_profile) or conditions like 'only works for archived, not deleted channels'. This leaves some ambiguity for users to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_contentAInspect
Restore a previously archived content item.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| content_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a state change from archived to active but does not detail side effects, permissions, or limitations. Annotations provide no additional transparency (readOnlyHint false, destructiveHint false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: one sentence for purpose and one for a parameter hint. No unnecessary wording.
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 simplicity of the operation (two required parameters), the description is sufficient, though it could mention potential effects on related items or the return value (though an output schema exists).
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 workspace_id is explained in the description; content_id is not described, and the schema lacks descriptions. The description partially compensates for the low schema 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 action ('Restore a previously archived content item') with a specific verb and object, and distinguishes it from sibling tools like archive_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?
It indicates the target state ('previously archived') and provides a helpful hint for workspace_id via list_workspaces(), but does not explicitly mention when not to use it or compare with alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_hub_profileAInspect
Restore a previously archived hub profile.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the action but does not detail side effects such as whether related content or memberships are also restored. Annotations indicate readOnly=false and destructive=false, which are consistent, but the description alone provides limited behavioral detail.
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 no filler. The workspace_id hint is placed efficiently and directly supports the caller.
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 restoration action, the description provides enough context to understand the core operation and the workspace_id parameter. Output schema presence reduces the need to explain return values, though error conditions or prerequisites are not mentioned.
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 workspace_id is given meaningful guidance ('get available IDs from list_workspaces()'), while hub_profile_id is left without description. Since schema descriptions cover 0% of parameters, the description only partially compensates for the missing parameter 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?
The description clearly states the action: restoring a previously archived hub profile, which distinguishes it from restore_content, restore_channel, and restore_category. The resource and verb 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 phrase 'previously archived' implies this tool is for archived hub profiles, giving basic usage context. It does not explicitly contrast with alternatives like archive_hub_profile or restore_content, but the sibling names and the purpose make the intended use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_assetsARead-onlyInspect
Search assets in a hub profile by keyword.
workspace_id: target workspace ID — get available IDs from list_workspaces()
types: e.g. ["Media", "File"] or None for all types
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | ||
| search | Yes | ||
| workspace_id | Yes | ||
| exclude_medias | No | ||
| hub_profile_id | Yes | ||
| exclude_categories | No | ||
| exclude_collections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the tool's side-effect profile is covered. The description does not contradict these annotations and adds no misleading behavioral claims.
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 short, front-loaded with the core purpose, and uses a clean two-line format for parameter notes. There is no redundant or irrelevant 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?
The core search behavior is clear, and an output schema exists, so return values need no explanation. However, the relationship between workspace_id and hub_profile_id is not clarified, and the valid values for types/exclude_* are not specified, leaving some contextual gaps for a 7-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?
The description covers workspace_id and types with practical guidance, but leaves hub_profile_id, search, and the three exclude_* parameters unexplained beyond their names. The schema provides no descriptions, so the description only partially compensates for the low schema 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 operation ('Search'), the resource ('assets'), and the scope ('in a hub profile by keyword'). It distinguishes itself from siblings like list_assets and search_contents by explicitly focusing on keyword-based asset search.
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 useful guidance for workspace_id (how to obtain it) and types (with an example), but does not explicitly explain when to prefer this tool over alternatives like list_assets or search_contents. It also does not mention the exclude_* parameters, which may require clarification for full usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contentsARead-onlyInspect
Search content items in a hub profile by keyword.
workspace_id: target workspace ID — get available IDs from list_workspaces()
search: REQUIRED non-empty keyword. An empty/blank string is rejected (400);
there is no "list all" via search — to browse, walk channels/categories.
types: ["Content"], ["Collection"], or None for both (default)
| Name | Required | Description | Default |
|---|---|---|---|
| types | No | ||
| search | Yes | ||
| workspace_id | Yes | ||
| only_archived | No | ||
| hub_profile_id | Yes | ||
| exclude_contents | No | ||
| exclude_categories | No | ||
| exclude_collections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only and non-destructive behavior is already declared in annotations, and the description adds useful behavioral details like empty-search rejection, default types, and the absence of a list-all mode. It does not describe result ordering, pagination, or whether archived items are included, but these are less critical given the annotation coverage.
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 compact and well-structured, with each parameter explained on its own line. The warning about empty strings and the browse alternative are included without unnecessary verbosity.
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?
While the available output schema may cover return values, the description does not address several important filtering parameters, especially hub_profile_id and only_archived, which are directly relevant to the search scope. This leaves the tool incomplete for an agent trying to use it effectively with all its capabilities.
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 three of eight parameters are described: workspace_id, search, and types. The required hub_profile_id is not explained at all, and only_archived and all exclude_* parameters are omitted, leaving a substantial portion of the input schema undocumented.
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 content items within a hub profile by keyword, making the operation and resource explicit. It also distinguishes itself from a pure browse action by noting that search cannot list all items, which helps set it apart from sibling tools like list_contents.
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 gives concrete usage direction: workspace_id should come from list_workspaces(), search must be non-empty or the request is rejected with 400, and types can be restricted to Content, Collection, or both. The note that browsing should be done via channels/categories is actionable guidance for 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.
turn_on_hub_profile_communityBInspect
Enable community features for a hub profile (posts, comments, reactions).
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutating but non-destructive operation. The description adds that it enables posts, comments, and reactions, but does not disclose any side effects, prerequisites, or reversibility. It provides modest context beyond annotations but lacks deeper behavioral detail.
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 one sentence plus a parameter hint, with the core purpose front-loaded. No redundant information, and the hint for workspace_id is placed after the main action, which is efficient and clear.
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 specificity and that an output schema exists, the description covers the core action but misses explaining hub_profile_id and any conditions or effects of enabling community features. For a mutation tool, more context on what changes occur would improve completeness, but it is minimally 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 0%, so the description must compensate. It explains workspace_id with a helpful lookup hint, but completely omits hub_profile_id, leaving its meaning and source undocumented. This is a significant gap for a required parameter.
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 enables community features (posts, comments, reactions) for a hub profile, specifying a distinct action from other hub profile tools. However, it does not explicitly contrast with siblings like update_hub_profile, so a slight deduction for not differentiating the exact scope of enabling.
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?
There is no guidance on when to use this tool versus alternatives. The only hint is about obtaining workspace_id from list_workspaces(), which is a parameter lookup rather than usage direction. The agent is left to infer when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_assetAInspect
Update an asset's display name, read-only flag, and optionally its cover image.
workspace_id: target workspace ID — get available IDs from list_workspaces()
cover_image: local file path or http(s):// URL — SDK uploads automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| asset_id | Yes | ||
| read_only | No | ||
| cover_image | No | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description confirms the mutation (update) and notes that cover_image is automatically uploaded by the SDK. It does not disclose side effects or edge cases, but the annotations already cover read-only and destructive hints. Some additional context is added, but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-organized, with parameter explanations embedded directly. No redundant or unnecessary information is present.
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 provides enough context to invoke the tool correctly, including parameter semantics and the SDK behavior for cover_image. It does not mention output or errors, but no output schema is expected, and the tool's action is straightforward.
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 description explains two key parameters (workspace_id and cover_image) with actionable guidance. The remaining parameters (name, asset_id, read_only) are self-explanatory from their names and the tool's purpose. Since schema description coverage is 0%, the description partially compensates by clarifying complex inputs.
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 updates an asset's display name, read-only flag, and optionally its cover image. It is specific and distinct from sibling tools that update other resources (e.g., update_workspace, update_channel).
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 the tool is for updating assets and provides helpful guidance on the workspace_id and cover_image parameters, including how to obtain workspace IDs. It does not explicitly contrast with alternatives, but the purpose is clear enough for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryAInspect
Update a category's name, pin status, notification settings, and display options.
workspace_id: target workspace ID — get available IDs from list_workspaces()
view_type: display view type (e.g. "Grid", "List")
progression_enabled: track user completion progress
cover_show: show cover images in this category
expandable: allow the category to be collapsed
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| is_pinned | No | ||
| view_type | No | ||
| channel_id | Yes | ||
| cover_show | No | ||
| expandable | No | ||
| category_id | Yes | ||
| workspace_id | Yes | ||
| progression_enabled | No | ||
| notifications_enabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the write nature is known. However, the description does not disclose whether the update is partial or full (e.g., whether omitted optional fields are reset to defaults), nor does it mention any side effects, permissions, or rate limits. It adds no 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 concise and well-structured: a clear one-sentence purpose followed by a bullet-like list of parameter clarifications. It is front-loaded with the main intent and does not contain redundant 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?
The tool has 10 parameters and an output schema (not shown). The description does not explain the return value or any update semantics (partial vs. full replacement). While the required IDs are discernible from the parameter list, the description lacks context about how this update interacts with other category operations or what happens to omitted fields. This leaves some 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?
The input schema has no per-property descriptions (0% coverage), so the description compensates by explaining five of the ten parameters (workspace_id, view_type, progression_enabled, cover_show, expandable) with meaningful details and an example for view_type. The remaining parameters have self-explanatory titles (e.g., name, channel_id, category_id), so the overall parameter understanding is adequate.
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 ('Update') and the resource ('a category'), listing the specific attributes (name, pin status, notification settings, display options) that can be modified. This distinguishes it from sibling tools like create_category or delete_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?
The description implies usage for modifying existing category attributes but does not explicitly state when to prefer this tool over alternatives like create_category or archive_category, nor does it mention any exclusions. It does provide a helpful hint for obtaining workspace_id from list_workspaces(), but not for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_channelBInspect
Update a channel's name, privacy, and category order.
workspace_id: target workspace ID — get available IDs from list_workspaces()
privacy: "Public" or "Private"
categories: list of {"id": "...", "order": 0} to reorder categories
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| privacy | No | ||
| categories | No | ||
| channel_id | Yes | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, non-read-only behavior. The description adds no further context on side effects (e.g., whether category order replaces entirely, or any auth/rate-limit considerations). The update nature is implied but not elaborated.
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, front-loaded with the main purpose, and uses a clear format for parameter definitions without unnecessary verbosity.
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?
While the description covers the core functionality, it lacks explanation for required parameters (channel_id, hub_profile_id) and does not mention return values or error conditions, leaving some gaps for a complete understanding.
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 description explains workspace_id, privacy, and categories, but omits channel_id and hub_profile_id, both of which are required. It also does not clarify that name is required even when updating only other fields, leaving gaps in the parameter 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 updates a channel's name, privacy, and category order, with a specific verb and resource, and is readily distinguishable from sibling tools like create_channel or archive_channel.
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 some parameter guidance (e.g., workspace_id from list_workspaces, privacy values, categories format) but does not explicitly state conditions for when to use this tool versus alternatives, nor clarify that name is required even when updating only other fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contentAInspect
Update a content item's metadata. Only provided fields are changed.
workspace_id: target workspace ID — get available IDs from list_workspaces()
privacy: "Preview", "Private", or "Public"
channels: list of channel IDs (replaces existing placement)
main_asset_id: ID of the primary playable asset
url: external URL to associate with the content
hub_profile_id: the owning hub profile. Optional — when omitted it is
resolved automatically from the content, so you normally do not pass it.
cover_image: http(s):// URL (or local path) of the cover; the URL PATH must
end in an image extension (.jpg/.png/...). Query strings are fine (signed
URLs work); an extension-less URL (e.g. placehold.co/600x400) returns 400.
categories: category assignment objects (REPLACES existing — to append,
read the content first and send the full list back)
context: the body — REPLACES the existing widget list. Same widget shapes
as create_content, camelCase keys: "Text"{content}; "LinkList"{links:[{$type,
title,url}]}; "Media"{assetId,autoplay}; "HubProfile"{hubProfileIds:[...]};
"ContentWidget"{referenceType,referenceIds:[{$type,id}]}. To append to the
current body, read it first (get_content_v2) and send the existing widgets
plus the new ones.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | No | ||
| context | No | ||
| details | No | ||
| privacy | No | ||
| channels | No | ||
| categories | No | ||
| content_id | Yes | ||
| cover_image | No | ||
| workspace_id | Yes | ||
| main_asset_id | No | ||
| hub_profile_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly discloses replace semantics for channels, categories, and context, and calls out the cover_image 400 edge case. Annotations already indicate readOnlyHint=false and destructiveHint=false, and the description adds useful side-effect details 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?
The description is long but well-structured with line breaks and focused details for complex replace behaviors. It front-loads the core update statement and only then adds necessary caveats and widget-shape examples.
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—replace semantics, nested widget shapes, and read-before-append workflows—the description is quite complete. It lacks explicit error handling beyond cover_image and does not describe return values, but no output schema is provided and the update semantics are covered well.
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 JSON Schema has no per-field descriptions, but the description text explains most parameters: workspace_id, privacy, channels, main_asset_id, url, hub_profile_id, cover_image, categories, and context. content_id, name, and details are not explicitly described, though their roles are largely inferable from the update 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?
The description opens with a specific verb and resource: 'Update a content item's metadata.' It clearly distinguishes this from creating, archiving, or moving content, especially given sibling tools like create_content and archive_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?
It explains partial updates with 'Only provided fields are changed' and gives explicit guidance for append behavior ('read it first (get_content_v2)'). It does not explicitly contrast with every alternative like move_content or patch_content_progression, but the metadata-update scope is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_content_sectionBInspect
Rename a section inside a collection content item's category.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| content_id | Yes | ||
| section_id | Yes | ||
| workspace_id | Yes | ||
| category_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false, and 'rename' aligns with those. The description adds no detail about side effects, permissions, or whether renaming affects references.
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 concise sentences and front-loads the action. It wastes no words and the workspace_id helper note is useful.
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 five required parameters and no parameter descriptions, the description is somewhat thin. An output schema exists, so return values need not be described, but more context on how the identifiers relate 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 0%, and only workspace_id gets a hint. The other parameters (content_id, section_id, category_name, name) rely on their names; 'name' especially is ambiguous (new name vs current name).
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 identifies the action ('rename') and resource ('section inside a collection content item's category'). It is distinguishable from many siblings, though it doesn't explicitly contrast with update_section or create_content_section.
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?
No guidance is given about when to choose this tool over alternatives like update_section or delete_content_section. The description only states what it does, not the conditions or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_hub_profileAInspect
Update an existing hub profile's metadata.
All fields are overwritten — provide the full desired state.
workspace_id: target workspace ID — get available IDs from list_workspaces()
availability_level: "Public" or "Private"
primary_url: optional external URL shown on the profile
app_clip_on: enable iOS App Clip
widgets: profile widget configuration objects (replaces existing)
buttons: action buttons (replaces existing), each
{"title": "...", "logic": {"type": "...", "url": "..."}}
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| buttons | No | ||
| widgets | No | ||
| sub_name | No | ||
| user_name | Yes | ||
| app_clip_on | No | ||
| description | No | ||
| primary_url | No | ||
| workspace_id | Yes | ||
| hub_profile_id | Yes | ||
| availability_level | No | Public |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate it is not read-only and not destructive, which aligns with the update verb. The description adds the overwrite behavior, which is a non-obvious side effect not captured in 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 and well-organized, using a bullet-like list for parameters. No redundant sentences 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?
Since there is no output schema, the description does not need to explain return values. It covers the main update semantics, though it could clarify whether the update is partial or full (it does state full overwrite) and any constraints like allowed values for availability_level beyond 'Public'/'Private'.
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 description explains about half of the parameters (workspace_id, availability_level, primary_url, app_clip_on, widgets, buttons) but leaves core ones like hub_profile_id, name, user_name, sub_name, and description unexplained. The widget and button structures are only vaguely described as 'configuration objects', without defining their 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 'Update an existing hub profile's metadata', specifying the action and resource. It distinguishes itself from sibling tools like create, archive, and delete by focusing on update semantics.
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 warns that 'All fields are overwritten — provide the full desired state', which is a crucial usage note. However, it does not explicitly mention when to use this versus alternatives (e.g., create for new profiles) or any preconditions like requiring existing profile IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_invitationBInspect
Update the role assigned to a pending invitation.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | ||
| workspace_id | Yes | ||
| invitation_id | Yes | ||
| hub_profile_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly=false and destructive=false, and the description matches by stating it updates a role. No additional side effects, permissions, or consequences are disclosed, but the annotation coverage keeps this 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?
The description is brief and well organized, with param guidance in a bullet-like second line. No redundant or filler content appears.
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?
Since an output schema exists, return details are not necessary. However, the description omits key contextual guidance such as the distinction between hub-profile and workspace invitations and the effect of changing a role on an existing invitation.
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 0%, and the description compensates only for workspace_id and role_id, including role value mapping. hub_profile_id and invitation_id are left unexplained, leaving half the required parameters without added 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 states a specific action ('Update the role assigned to a pending invitation') and identifies the target resource clearly. It does not explicitly differentiate from the sibling 'update_workspace_invitation', but the invitation resource is obvious from the tool name and context.
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 gives param sourcing guidance for workspace_id and role_id values, but does not explain when to use this tool versus update_workspace_invitation or other invitation-related tools. It lacks explicit conditions or exclusions to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_permission_groupBInspect
Rename a permission group.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| group_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides no behavioral context beyond the verb 'rename.' It does not disclose whether renaming affects group members, permissions, or existing references, nor any required permissions or side effects. Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false, but the description adds no further detail, so the burden falls on the agent to infer behavior.
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—two sentences with no filler. The primary purpose is stated first, and the only parameter hint (workspace_id) is directly relevant. Every word 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 that this is a required-parameter write operation with no schema descriptions, the description is incomplete. It omits meaning for name and group_id, does not clarify the scope of 'update' (whether it only renames or allows other changes), and lacks any context about return values or side effects. An output schema exists, but parameter and behavioral information are still insufficient.
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 has zero parameter descriptions, so the description must compensate. It only explains workspace_id, noting it can be obtained from list_workspaces(), but provides no meaning or constraints for name or group_id. This leaves two of three required parameters unexplained, forcing the agent to guess their purpose.
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 states a clear verb and resource: 'Rename a permission group.' This is specific and distinguishes it from sibling tools like create_permission_group, delete_permission_group, and get_permission_group. It unambiguously conveys the tool's core 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?
The description gives no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or which other permission-group tools might be more appropriate in different scenarios. The only hint is about workspace_id, which is parameter help, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_sectionBInspect
Rename a section inside a channel category.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| channel_id | Yes | ||
| section_id | Yes | ||
| category_id | Yes | ||
| workspace_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint false and destructiveHint false, and the description confirms it is a renaming operation. However, it does not disclose any potential side effects, permission requirements, or failure conditions beyond what the annotations imply.
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, with no unnecessary words. It states the purpose and provides a helpful tip for one parameter in a single short sentence.
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 is minimal but sufficient given the sibling tools (create_section, delete_section, etc.) provide context for the resource hierarchy. It does not mention return values or error cases, though an output schema is noted as present elsewhere.
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 has zero description coverage and the description only explains workspace_id. The meanings of channel_id, category_id, section_id, and name are not described, leaving the agent to infer them from 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?
The description clearly states the action ('Rename') and the resource ('a section inside a channel category'), which distinguishes it from other update tools. It could be slightly more specific about the hierarchical context, but it is effective.
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 guidance for the workspace_id parameter by pointing to list_workspaces(), but does not mention when to use this tool over alternatives like create_section or delete_section, nor does it explain the overall rename workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workspaceAInspect
Update a workspace's display name.
workspace_id: target workspace ID — get available IDs from list_workspaces()
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| workspace_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description does not need to restate those. It adds no additional behavioral context such as permission requirements, side effects, or reversibility beyond the basic update action, offering minimal 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?
The description is two concise sentences with no redundant wording. The core purpose is front-loaded, and the parameter hint is efficiently included. 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?
For a simple two-parameter update tool with annotations covering safety, the description covers the essential: what it does, how to get the required ID, and implicitly what 'name' refers to. It does not describe the return value or any validation rules, but these are minor given the tool's simplicity and the presence of 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?
With schema description coverage at 0%, the description is the primary source for parameter meaning. It explicitly explains workspace_id as 'target workspace ID' and suggests how to obtain it, and name is implicitly understood as the display name. However, it does not elaborate on constraints (e.g., length limits, uniqueness) or the exact format expected, so it partially compensates for the schema gap.
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 states a specific action ('Update a workspace's display name') with a clear verb and resource. It is unambiguous and distinguishes this tool from other workspace-related updates (e.g., update_workspace_invitation, update_workspace_action) by focusing on the display name field.
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 a usage hint by pointing to list_workspaces() for obtaining valid workspace IDs, which is helpful. However, it does not explicitly state when to use this tool versus alternatives or when not to use it, leaving usage to be implied from the clear purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workspace_actionAInspect
Update a workspace automation action. All fields are overwritten.
workspace_id: target workspace ID — get available IDs from list_workspaces()
metadata example: {"$type": "ProgressionUpdatedMetadata", "webhookUrl": "https://..."}
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| details | No | ||
| metadata | Yes | ||
| action_id | Yes | ||
| workspace_id | Yes | ||
| hub_profile_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the write nature is known, but the description adds the crucial behavioral trait that all fields are overwritten, meaning omitted fields reset to defaults/null. It also provides a concrete metadata example. These go beyond the annotations and help the agent understand 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 extremely concise: a two-sentence purpose and overwrite warning, a one-line workspace_id hint, and a metadata example. All content is front-loaded and earns its place, with zero fluff. The structure makes it easy to scan.
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 an update tool with six parameters and a nested metadata object, the description covers the overwrite behavior and gives a metadata format example, but omits how to obtain action_id (presumably from list_workspace_actions) and the semantics of optional fields like details and hub_profile_ids. The output schema exists, so return values are not needed. It is adequate but not comprehensive for a mutation 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 0%, so the description must compensate. It explains workspace_id (target workspace, get from list_workspaces) and gives a metadata example, but does not clarify action_id, title, details, or hub_profile_ids beyond their schema titles. It adds partial meaning but leaves several parameters under-explained, especially the required action_id and title.
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 states a clear verb-resource pair ('Update a workspace automation action') and adds a critical behavioral note ('All fields are overwritten'). It does not explicitly distinguish from siblings like create_workspace_action, but the verb 'update' combined with the overwrite warning makes the intent unambiguous, and the sibling set includes obvious create/delete counterparts.
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?
There is no guidance on when to use this tool versus alternatives (e.g., create_workspace_action for new actions, delete_workspace_action for removal). It only hints at fetching workspace IDs from list_workspaces(), but does not mention prerequisites like obtaining an action_id or when not to use it. The overwrite warning is useful but not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_workspace_invitationAInspect
Update the role assigned to a pending workspace invitation.
workspace_id: target workspace ID — get available IDs from list_workspaces()
role_id: 1 = Admin, 2 = Editor, 3 = Viewer
| Name | Required | Description | Default |
|---|---|---|---|
| role_id | Yes | ||
| workspace_id | Yes | ||
| invitation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'update the role', which implies a state-modifying operation, and the annotations confirm it is not read-only (readOnlyHint=false) nor destructive (destructiveHint=false). However, it does not disclose any side effects, permissions required, or whether the invitation must be in a specific state (e.g., pending). No contradictions with annotations, but little additional transparency beyond what is obvious from the verb 'update'.
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 and well-structured. It uses a short introductory sentence and then a bullet-like list for parameter explanations. No fluff or redundant information. Every sentence contributes useful context, making it easy to scan and understand.
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 doesn't need to elaborate on return values. However, the lack of any mention of invitation_id and the absence of guidance on how to obtain it leaves a gap in the overall context. For a simple update operation, the description is mostly sufficient but incomplete in parameter coverage, preventing a higher score.
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 description covers workspace_id (with guidance to get from list_workspaces) and role_id (with enum mapping), but completely omits the invitation_id parameter, which is required. Schema coverage is only 2 out of 3 parameters, leaving the most critical parameter (which invitation to update) unexplained. The description adds some value for two parameters but fails to explain the third, so it does not fully compensate for the sparse 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's purpose: updating the role assigned to a pending workspace invitation. It specifies the action (update role) and the resource (workspace invitation). The role_id mapping adds helpful context. It is easily distinguishable from sibling tools like delete_workspace_invitation or list_workspace_invitations.
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 some guidance: it tells the user to get workspace IDs from list_workspaces() and explains role_id values. However, it does not mention where to obtain the invitation_id (e.g., list_workspace_invitations) or when to use this tool instead of alternatives like invite_to_workspace or update_invitation. The usage context is partially implicit, but lacks explicit direction on parameter sourcing and tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_assetAInspect
Create an asset AND upload its bytes in one call.
This is the real upload path: it runs the full multipart flow
(init -> PUT parts -> finalize) and returns a ready, downloadable asset.
Prefer this over the deprecated create_*_asset tools, which only
register an empty record and fail against the current backend.
Provide the file via exactly one of:
- source_url: an http(s):// URL the server downloads, or
- base64_content: base64-encoded bytes (best for small files).
workspace_id: target workspace ID — get available IDs from list_workspaces()
extension: file extension without the dot (e.g. "pdf", "png", "mp4").
Inferred from source_url or name when omitted.
asset_type: "Image", "Video", or "File". Auto-detected from the extension
when omitted.
width / height: image dimensions in pixels. Auto-detected from the file
header for common image formats; pass explicitly otherwise.
media_type: optional mediaType integer for Video uploads.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| width | No | ||
| height | No | ||
| extension | No | ||
| asset_type | No | ||
| media_type | No | ||
| source_url | No | ||
| workspace_id | Yes | ||
| base64_content | No | ||
| hub_profile_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the underlying multipart flow (init -> PUT -> finalize), explains that source URLs are downloaded by the server, and notes auto-detection for extension, asset_type, and dimensions. It accurately reflects a write operation without being destructive, matching 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 well-structured and efficient: a clear one-sentence purpose, a short contrast with deprecated alternatives, and bullet-like parameter notes. It conveys substantial detail without unnecessary verbosity.
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 10 parameters and no output schema, the description covers the essential workflow and most parameter semantics. It could be slightly more complete by explaining hub_profile_id and indicating the expected response shape, but it is sufficient for typical 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?
The description adds meaningful semantics for most parameters: source_url, base64_content, workspace_id, extension, asset_type, width/height, and media_type. It clarifies constraints and inference rules beyond the schema. However, hub_profile_id is a required parameter but is not explained in the description, leaving a minor gap.
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 and uploads an asset in one call, explicitly says it is the 'real upload path', and distinguishes it from deprecated create_*_asset tools that only register empty records. This makes the intent and scope 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?
It gives explicit guidance to prefer this over deprecated alternatives, explains the exact input requirements (exactly one of source_url or base64_content), and mentions auto-detection behavior. It also points to list_workspaces() for obtaining valid workspace IDs, giving actionable instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
103 tool updates
v0.4.18- First observed
add_content_to_categories - First observed
add_content_to_category - First observed
add_subcontent - First observed
add_users_to_permission_group - First observed
archive_category - First observed
archive_channel - First observed
archive_content - First observed
archive_hub_profile - First observed
can_archive - First observed
can_create_child - First observed
can_edit - First observed
can_manage_permissions - First observed
can_read - First observed
check_user_exists_by_email - First observed
check_user_exists_by_phone - First observed
create_category - First observed
create_channel - First observed
create_content - First observed
create_content_section - First observed
create_embed_asset - First observed
create_file_asset - First observed
create_hub_profile - First observed
create_image_asset - First observed
create_media_asset - First observed
create_permission_group - First observed
create_section - First observed
create_video_asset - First observed
create_workspace_action - First observed
delete_category - First observed
delete_channel - First observed
delete_content_section - First observed
delete_hub_profile - First observed
delete_invitation - First observed
delete_permission - First observed
delete_permission_group - First observed
delete_section - First observed
delete_subcontent - First observed
delete_workspace_action - First observed
delete_workspace_invitation - First observed
filter_hub_profiles - First observed
get_asset - First observed
get_category_by_slugs - First observed
get_category_references - First observed
get_channel - First observed
get_channel_by_name - First observed
get_content - First observed
get_content_v2 - First observed
get_hub_profile - First observed
get_hub_profile_by_username - First observed
get_invitation_link - First observed
get_permission_group - First observed
get_permission_targets - First observed
get_progression_stats - First observed
get_srgplus_guide - First observed
get_subcontent - First observed
get_user - First observed
get_workspace - First observed
get_workspace_action - First observed
get_workspace_hub_profiles - First observed
get_workspace_invitation_link - First observed
get_workspace_users - First observed
give_permission - First observed
invite_to_hub_profile - First observed
invite_to_workspace - First observed
is_member - First observed
join_hub_profile - First observed
list_assets - First observed
list_channels - First observed
list_contents - First observed
list_hub_profiles - First observed
list_invitations - First observed
list_managed_hub_profiles - First observed
list_permission_groups - First observed
list_workspace_actions - First observed
list_workspace_invitations - First observed
list_workspaces - First observed
move_content - First observed
move_hub_profile_to_workspace - First observed
move_subcontent - First observed
patch_content_progression - First observed
patch_media_progression - First observed
remove_content_from_categories - First observed
remove_user_from_permission_group - First observed
restore_category - First observed
restore_channel - First observed
restore_content - First observed
restore_hub_profile - First observed
search_assets - First observed
search_contents - First observed
turn_on_hub_profile_community - First observed
update_asset - First observed
update_category - First observed
update_channel - First observed
update_content - First observed
update_content_section - First observed
update_hub_profile - First observed
update_invitation - First observed
update_permission_group - First observed
update_section - First observed
update_workspace - First observed
update_workspace_action - First observed
update_workspace_invitation - First observed
upload_asset
TDQS
Scored across 103 tools
Most tools have distinct purposes, but the high number of similar CRUD operations (e.g., create_hub_profile vs create_channel vs create_category, get_channel_by_name vs get_channel) could cause confusion. The descriptions are detailed enough to differentiate, though some overlap exists between content/category/section operations.
The naming convention is mostly consistent with verb_noun patterns (list_, get_, create_, update_, delete_, etc.), but there are some deviations like `can_read`, `can_edit`, `is_member`, and `get_srgplus_guide` that don't fit the typical CRUD pattern. The mix of `list_*` and `get_*` for similar operations is slightly inconsistent.
With 103 tools, this is a very large surface area. While the domain is broad (workspaces, hub profiles, channels, categories, sections, content, assets, users, permissions, invitations, automation actions), the sheer number makes navigation difficult. Many tools are near-duplicates (e.g., multiple invitation link generators, multiple permission checkers), suggesting the count could be trimmed.
The tool set appears to cover the full lifecycle of the platform: workspace management, hub profile management, content hierarchy (channel→category→section→content), asset upload, user/permission management, invitations, automation actions, and permission groups. Missing features like content deletion are intentional (archiving instead), and the guide tool fills knowledge gaps.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the Slack API, enabling Claude to interact with Slack workspaces.70,822 npm90,399MIT
- AlicenseAqualityAmaintenanceMCP Server for the Notion API, enabling Claude to interact with Notion workspaces.31801 npm920MIT
- AlicenseAqualityBmaintenanceMCP Server for the Mattermost API, enabling Claude and other MCP clients to interact with Mattermost workspaces.919 npm3MIT
- AlicenseAqualityDmaintenanceA local stdio MCP server that gives Claude (or any MCP client) full programmatic control over a single YouTube channel, including video upload, channel management, comments, analytics, and more.4617 npmMIT