Skip to main content
Glama
vertracloud

@vertracloud/mcp

Official
by vertracloud

@vertracloud/mcp

Official MCP server for Vertra Cloud: gives your AI assistant (Claude, Cursor, VS Code, n8n) the tools to deploy applications, read logs, create databases and restore snapshots — on your own account, with your own API key.

Quick start · Connect from claude.ai · Tools · Prompt ideas · Common issues

Quick start

Prerequisite: Node 18 or newer.

  1. In the dashboard, go to Settings → API keys, create a key and check the scopes the assistant will need (start with the read-only ones).

  2. Copy the key — it's shown only once.

  3. Configure your client:

Claude Code

claude mcp add vertracloud -e VERTRA_API_KEY=your_key -- npx -y @vertracloud/mcp

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "vertracloud": {
      "command": "npx",
      "args": ["-y", "@vertracloud/mcp"],
      "env": { "VERTRA_API_KEY": "your_key" }
    }
  }
}

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "vertracloud": {
      "command": "npx",
      "args": ["-y", "@vertracloud/mcp"],
      "env": { "VERTRA_API_KEY": "your_key" }
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "vertracloud": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@vertracloud/mcp"],
      "env": { "VERTRA_API_KEY": "your_key" }
    }
  }
}

Restart the client and ask something like "list my apps on Vertra".

Related MCP server: Vercel MCP Relay Server

Connect from claude.ai

In the browser there's nothing to install:

  1. Open Settings → Connectors → Add custom connector.

  2. Enter the URL https://mcp.vertracloud.app/mcp.

  3. Click Connect and sign in to your Vertra account.

  4. Check the scopes you want to grant and confirm.

Tools marked "local only" in the table below don't show up here: they read and write files on your computer, which only makes sense in Claude Desktop, Claude Code or Cursor.

Tools

Folders and favorites are preferences persisted on the server: tools with personal change the account's own organization, and tools with workspace change only the user's organization within that workspace. They organize applications and databases, with no relation to Flow's groups, layout or local storage.

Documentation

tool

what it does

scope

local only

get_docs

Vertra Cloud's public knowledge base: plans, prices, limits, supported languages and error codes. Consult it before stating any number. section trims an excerpt by title.

—

Applications

tool

what it does

scope

local only

list_apps

Lists the account's applications with the current status of each.

apps:read

get_app

Details of an application: name, memory, runtime, main file, publication.

apps:read

get_app_status

Live status (CPU, RAM, uptime) of an application; without id, of all of them.

apps:read

get_logs

Last lines of the application's log (snapshot, not real time). tail trims the last N lines of what the API returned.

apps:read

get_metrics

History of CPU, RAM, storage and network usage of the application.

apps:read

list_runtimes

Languages and versions the platform accepts.

apps:read

start_app

Turns the application on.

apps:write

restart_app

Restarts the application. reinstall_dependencies reinstalls dependencies from scratch (ignoring the install cache); force_build runs the build command again even without a code change. Both count as a deploy against the plan's hourly limit.

apps:write

stop_app

Turns the application off.

apps:write

create_app

Creates an application from a folder on the computer: compresses the folder (ignoring node_modules, .git and whatever is in .vertraignore) and uploads it.

apps:write

yes

deploy_app

Uploads a folder from the computer to an existing application (new deploy), using the same compression criteria as create_app.

apps:files

yes

update_app_config

Changes the application's configuration: name, memory, main file, runtime version, start command.

apps:write

download_app

Downloads the application's files as a zip and writes it to the given path.

apps:read

yes

delete_app

Permanently deletes the application, along with its files and configuration.

apps:delete

Deploys

tool

what it does

scope

local only

list_deploys

The application's deploy history.

apps:read

get_deploy_webhook

The application's automatic-deploy webhook URL.

apps:read

create_deploy_webhook

Creates (or renews) the application's automatic-deploy webhook, from an already connected GitHub repository.

apps:write

delete_deploy_webhook

Removes the automatic-deploy webhook; whoever was using the URL stops being able to deploy.

apps:write

Environment variables

tool

what it does

scope

local only

list_envs

Lists the NAMES of the application's environment variables. The value is never returned — no tool reads a variable's value.

apps:envs

set_env

Creates or overwrites an application environment variable. The response confirms the key, without echoing the value.

apps:envs

delete_env

Deletes an environment variable. Use the variable id returned by list_envs.

apps:envs

Files

tool

what it does

scope

local only

list_files

Lists the files and folders of a directory in the application.

apps:files

get_file_tree

The application's full file tree.

apps:files

read_file

Reads a file from the application. Text comes back readable; binary comes back as base64 with encoding: "base64".

apps:files

write_file

Writes text content to a file in the application, creating it if it doesn't exist.

apps:files

move_file

Moves or renames a file inside the application.

apps:files

upload_files

Uploads files from the computer to a folder in the application.

apps:files

yes

delete_file

Deletes a file or folder from the application.

apps:files

Network and domains

tool

what it does

scope

local only

get_network

The application's custom domain and DNS records, in a single response.

apps:read

set_subdomain

Changes the application's public subdomain. Who is allowed to pick the name is determined by the plan.

apps:write

publish_app

Publishes the application on the web (public subdomain).

apps:write

unpublish_app

Takes the application off the web; the public address stops responding.

apps:write

set_custom_domain

Points a custom domain to the application.

apps:write

remove_custom_domain

Removes the application's custom domain; whoever accessed it through that domain stops reaching it.

apps:write

purge_cache

Clears the application's edge cache.

apps:write

Databases

tool

what it does

scope

local only

list_databases

Lists the account's databases with the status of each.

databases:read

get_database

Details of a database: engine, name, memory, address and port.

databases:read

get_database_status

Live status (CPU, RAM, disk, uptime) of a database; without id, of all of them.

databases:read

get_database_metrics

History of CPU, RAM, storage and network usage of the database.

databases:read

create_database

Creates a managed database.

databases:write

update_database

Changes the database's name, description or memory.

databases:write

start_database

Turns the database on.

databases:write

stop_database

Turns the database off.

databases:write

reset_database

DELETES ALL DATA in the database and leaves it empty. There is no way to undo this without a snapshot.

databases:write

delete_database

Permanently deletes the database, along with the data inside it.

databases:delete

get_connection_info

Data to connect to the database: address, port, engine, CA certificate in PEM and, when the account has one, a ready-made connection string. This server does not run queries — you're the one who connects.

databases:credentials

reset_credentials

Generates a new password for the database and returns it. Anyone connected with the old password gets disconnected.

databases:credentials

reset_certificate

Issues a new certificate for the database. Anyone using the old certificate stops being able to connect.

databases:credentials

Snapshots

tool

what it does

scope

local only

list_snapshots

Snapshots of a resource; without resource_id, snapshots of every resource of that type.

snapshots:read

create_snapshot

Takes a snapshot of the resource. Counts against the plan's snapshot quota.

snapshots:write

restore_snapshot

Restores a snapshot OVER the resource: the current content is replaced.

snapshots:write

download_snapshot

Downloads a snapshot and writes it to the given path on the computer.

snapshots:read

yes

Account

tool

what it does

scope

local only

get_profile

Account profile: plan, allocated memory, limits and usage.

account:read

update_profile

Changes the account's display name or language.

account:write

list_sessions

Open login sessions on the account (no IP or location).

account:read

create_personal_folder

Creates a personal folder to organize applications and databases.

account:write

update_personal_folder

Renames, recolors or reorders a personal folder.

account:write

delete_personal_folder

Deletes a personal folder; the resources inside it are not deleted.

account:write

add_personal_resource_to_folder

Puts an application or database into a personal folder.

account:write

remove_personal_resource_from_folder

Removes an application or database from a personal folder, without deleting the resource.

account:write

favorite_personal_resource

Adds an application or database to the personal favorites.

account:write

unfavorite_personal_resource

Removes an application or database from the personal favorites.

account:write

Workspaces

tool

what it does

scope

local only

create_workspace_folder

Creates a workspace folder to organize applications and databases.

workspaces:write

update_workspace_folder

Renames, recolors or reorders a workspace folder.

workspaces:write

delete_workspace_folder

Deletes a workspace folder; the resources inside it are not deleted.

workspaces:write

add_workspace_resource_to_folder

Puts an application or database into a workspace folder.

workspaces:write

remove_workspace_resource_from_folder

Removes an application or database from a workspace folder, without deleting the resource.

workspaces:write

favorite_workspace_resource

Adds an application or database to the workspace favorites.

workspaces:write

unfavorite_workspace_resource

Removes an application or database from the workspace favorites.

workspaces:write

list_workspaces

Workspaces the account is a member of.

workspaces:read

get_workspace

Details of a workspace.

workspaces:read

create_workspace

Creates a workspace.

workspaces:write

update_workspace

Changes the workspace's name or description.

workspaces:write

add_app_to_workspace

Moves an application into the workspace.

workspaces:write

remove_app_from_workspace

Takes an application out of the workspace and returns it to the owning account.

workspaces:write

add_database_to_workspace

Moves a database into the workspace.

workspaces:write

remove_database_from_workspace

Takes a database out of the workspace and returns it to the owning account.

workspaces:write

list_members

The workspace's members and each one's role.

workspaces:read

update_member

Changes a workspace member's role.

workspaces:write

remove_member

Removes a member from the workspace; they lose access immediately.

workspaces:write

list_roles

The workspace's roles and each one's permissions.

workspaces:read

create_role

Creates a role in the workspace.

workspaces:write

update_role

Changes a workspace role's name or permissions.

workspaces:write

delete_role

Deletes a role from the workspace; whoever had it loses those permissions.

workspaces:write

delete_workspace

Deletes the workspace (owner only). Members, roles, invites and links disappear; apps and databases go back to the owning account. This cannot be undone.

workspaces:delete

list_workspace_invites

The workspace's invites (pending and past). Creating an invite is dashboard-only.

workspaces:invites

revoke_workspace_invite

Revokes a pending workspace invite; the link or email stops working.

workspaces:invites

preview_workspace_invite

Shows which workspace and role an invite leads to, before accepting it.

workspaces:invites

accept_workspace_invite

Accepts an invite and joins the workspace with the account that owns the key. An invite sent by email only works for that account's email.

workspaces:invites

decline_workspace_invite

Declines an invite without joining the workspace; the invite stops being valid.

workspaces:invites

list_action_requests

The workspace's action requests (delete app/database, create/restore snapshot). Approving or rejecting is dashboard-only.

workspaces:read

create_action_request

Asks whoever has the permission to carry out an action the account can't do on its own. Nothing runs until a person approves it in the dashboard.

workspaces:write

Billing

tool

what it does

scope

local only

list_plans

Plans and prices, straight from the public knowledge base (not from a route).

—

create_order

Creates a plan subscription order and returns the final price (with coupon discount, if any) and the order_id.

billing:write

get_pix

Generates the order's PIX payment and returns the copy-and-paste code and the QR Code. THE PERSON PAYS, in their banking app — the agent never pays anything.

billing:write

get_order_status

Status of an order; poll it periodically until it turns paid.

billing:read

list_orders

The account's orders.

billing:read

redeem_code

Redeems a promotional code on the account.

redeem:write

Prompt ideas

  • "Deploy this folder as a Node app called support-bot, with 512 MB."

  • "Why did orders-api go down? Show me the last 200 lines of the log."

  • "Create a 1 GB Postgres and put its URL in orders-api's env."

  • "Restore yesterday's snapshot of support-bot."

  • "Buy 3 months of Pro with the coupon LAUNCH."

  • "Read orders-api's log, fix it in my checkout code, and deploy."

Security

Tools that read or write files on your computer only operate inside the folder the server was started in. If your client starts the server at the system root or your user folder, point it at the project folder with VERTRA_MCP_ROOT (alongside VERTRA_API_KEY, in the configuration's env) — files outside that folder, and credential folders like .ssh and .aws, are rejected even if the assistant asks for them.

This server only talks to the Vertra Cloud public API, always with your key — it has no permissions of its own. list_envs returns only the NAMES of environment variables: the value never leaves the server, because everything a tool returns enters the assistant's history. The key is the boundary of what the agent can do: grant only the scopes you need, and revoke the key in the dashboard when you're done.

Common issues

what shows up

what it means

what to do

NOT_AUTHENTICATED

key missing, wrong, or revoked

check VERTRA_API_KEY in your client's configuration

API_KEY_SCOPE_DENIED

the key doesn't have that tool's scope

create a new key with the scope the table indicates

RATE_LIMIT_EXCEEDED

the route's request limit was hit

wait the retry_after seconds and try again

the upload tool doesn't show up

you're on the browser connector

uploading files only works in local mode (Claude Desktop, Claude Code, Cursor)

PATH_OUTSIDE_ROOT or ROOT_TOO_BROAD

the file is outside the allowed folder

set VERTRA_MCP_ROOT to the project folder

DEST_EXISTS

a file already exists at that path

choose another name; nothing gets overwritten

the server won't start

Node below 18

update Node

Contributing and license

Contributions are welcome — see CONTRIBUTING.md. License MIT.

Available Tools

99 tools
accept_workspace_inviteA
Idempotent

Accepts an invite and joins the workspace with the account that owns the key. An invite sent by email only works for that account's email. (scope: workspaces:invites)

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesInvite token (the final part of the link)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate a mutating but idempotent, non-destructive operation. The description adds useful behavioral context: the inviting account must match the email, and the membership is tied to the account owning the key. This goes beyond what annotations and schema state.

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

Conciseness5/5

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

Two sentences plus a scope note, with no filler. The core action is stated first, and the email restriction is a valuable additional detail. Every sentence earns its place.

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

Completeness5/5

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

For a single-parameter, mutation tool with no output schema, the description and schema together are sufficient: the action, the account/email binding, the token source, and the idempotent/non-destructive nature are all covered.

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

Parameters3/5

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

The input schema already fully describes the token parameter as the final part of the link, with 100% coverage. The description does not add further parameter meaning, so baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Accepts an invite and joins the workspace.' This clearly separates it from sibling invite tools like preview_workspace_invite, decline_workspace_invite, and revoke_workspace_invite.

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

Usage Guidelines4/5

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

It provides clear context: accepting an invite joins the workspace with the account that owns the key, and email invites are restricted to that account's email. It does not explicitly name alternatives or state when not to use the tool, but the context is sufficiently clear for selection.

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

add_app_to_workspaceB
Idempotent

Moves an application into the workspace. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
app_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false) and the description does not contradict them, so no annotation contradiction. The description adds the scope requirement (workspaces:write) as behavioral context, but does not disclose what 'moving' does to the app's prior location, existing visibility, or workspace members — useful context an idempotent write tool could provide.

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

Conciseness5/5

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

One sentence plus a scope parenthetical; the verb and resource are front-loaded and every word earns its place. No redundant restatement of the tool name or schema fields.

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

Completeness3/5

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

For a simple 2-parameter tool with no output schema and no nested objects, the bar is modest, and the description covers the basic action. Still, it is missing key context: the 'move' semantics are ambiguous (the name implies add, the description implies relocation), and there is no pointer to the inverse operation (remove_app_from_workspace) or related publish/unpublish lifecycle tools.

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

Parameters2/5

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

Schema description coverage is 50%: the 'id' parameter is documented as 'Workspace ID', but 'app_id' has no description. The tool description does not compensate — it never mentions either parameter or clarifies the format/meaning of app_id beyond the vague 'application' noun. At 50% coverage the description should have stepped in, and it didn't.

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

Purpose4/5

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

The description uses a specific verb ('Moves') with a specific resource ('an application into the workspace'), which is understandable and distinguishable from siblings like remove_app_from_workspace and add_database_to_workspace. However, it doesn't explicitly name any sibling, and there is verb friction with the tool name — the tool is called 'add' but the description says 'moves' — without clarifying what 'moving' entails (from where, with what side effects).

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

Usage Guidelines2/5

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 publish_app, unpublish_app, or remove_app_from_workspace. The parenthetical '(scope: workspaces:write)' communicates a permission requirement but provides no selection context or exclusion criteria.

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

add_database_to_workspaceC
Idempotent

Moves a database into the workspace. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
database_idYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already disclose idempotency (idempotentHint=true) and non-destructiveness (destructiveHint=false). The description adds the permission scope (workspaces:write), which is valuable behavioral context beyond annotations. However, it doesn't mention side effects like whether the database becomes unavailable from its previous location or any constraints, so it's adequate but limited.

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

Conciseness4/5

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

The description is a single sentence plus a scope parenthetical, very efficient and front-loaded with purpose. It contains no fluff, though it may be too terse for the missing parameter context. The structure is clear and scannable.

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

Completeness2/5

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

For a two-parameter write operation with a missing database_id description and no output schema, the description is incomplete. It lacks usage context, prerequisites, side effects, and parameter semantics. Annotations cover safety but not the operational details an agent needs to confidently invoke the tool.

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

Parameters2/5

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

Schema description coverage is 50%: only 'id' has a description ('Workspace ID'), while 'database_id' is undocumented. The description 'Moves a database into the workspace' implies database_id is the database to move, but it doesn't compensate for the missing schema description, nor does it clarify the relationship or required format. This leaves the agent relying on inference.

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

Purpose4/5

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

The description 'Moves a database into the workspace' specifies a clear verb, resource, and destination, distinguishing it from siblings like remove_database_from_workspace and add_app_to_workspace. However, 'moves' could imply relocation from a specific source, which isn't clarified, so it's clear but slightly ambiguous.

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

Usage Guidelines1/5

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. It doesn't mention whether the database must not already be in another workspace, what happens if it is, or contrast with add_app_to_workspace. The only extra info is the scope note, which is a permission requirement, not usage guidance.

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

add_personal_resource_to_folderC
Idempotent

Puts an application or database into a personal folder. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
folder_idYesFolder ID
resource_idYes
resource_typeYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already signal mutation (readOnlyHint=false), non-destructiveness (destructiveHint=false), and idempotency (idempotentHint=true), so the bar is lower. The description adds the 'account:write' scope and confirms the put-into-folder action, which is consistent with the annotations and provides some extra context, but it does not explain what happens on duplicate adds or other behavioral nuances.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that communicates the core action without filler. The parenthetical scope note adds value, but the overall brevity leaves room for parameter detail without becoming bloated.

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

Completeness2/5

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

For a 4-parameter mutation tool with no output schema, the description is too thin. It does not clarify whether the folder_id must reference a personal folder, whether the resource must already exist, what happens on duplicate placement, or what the response will contain, leaving meaningful gaps for an agent to call it correctly.

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

Parameters2/5

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

Schema description coverage is only 25%, so the description should compensate, but it does not. It mentions application/database types, matching resource_type, but does not clarify resource_id semantics, folder_id ownership, or the meaning of the optional position parameter beyond what the schema already states.

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

Purpose4/5

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

The description uses a clear verb ('Puts') with a specific resource ('an application or database') and target context ('personal folder'), so an agent can tell what it does. It distinguishes reasonably from sibling add_workspace_resource_to_folder via the 'personal folder' wording, though it does not explicitly name that alternative.

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

Usage Guidelines2/5

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 sibling tools like add_workspace_resource_to_folder or remove_personal_resource_from_folder. It includes a scope note ('account:write') but lacks prerequisites, conditions, or exclusions, leaving the agent to infer when this route is appropriate.

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

add_workspace_resource_to_folderA
Idempotent

Puts an application or database into a workspace folder. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
folder_idYesFolder ID
resource_idYes
workspace_idYesWorkspace ID
resource_typeYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds the permission scope 'workspaces:write', which is useful. However, it does not explain behavior on edge cases (e.g., resource already in folder, nonexistent folder) or the effect of the position parameter. The description is consistent with annotations (no contradiction) but adds limited behavioral context beyond them.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core action. It includes the scope parenthetically without clutter. Every word earns its place; there is no filler.

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

Completeness2/5

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

For a mutation tool with 5 parameters, no output schema, and no details on return values or error handling, the description is too brief. It does not mention idempotency implications, what happens if the resource is already in the folder, or any prerequisites (beyond the scope note). An agent would lack critical information to call this tool confidently in varied scenarios.

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

Parameters2/5

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

Schema description coverage is only 40% (folder_id and workspace_id have descriptions; resource_type and resource_id do not). The description does not compensate for this gap—it only restates that resource_type can be 'application or database' (already in the enum) and provides no meaning for resource_id or position. Since the description fails to clarify undocumented parameters, it adds minimal value beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Puts') and the resource type ('application or database') into a workspace folder. It differentiates from siblings like add_personal_resource_to_folder by explicitly mentioning 'workspace folder', and from removal tools by the action verb. The scope note adds context.

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

Usage Guidelines3/5

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

The description implies usage for workspace resources via the name and phrase 'workspace folder', but it does not explicitly state when to use this tool versus alternatives like add_personal_resource_to_folder or remove_workspace_resource_from_folder. No exclusions or conditions are given, leaving the agent to infer from the name.

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

create_action_requestA

Asks whoever has the permission to carry out an action the account can't do on its own. Nothing runs until a person approves it in the dashboard. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
actionYes
resource_idYesApplication or database ID
snapshot_idNoRequired for snapshot_restore

TDQS

A4.4/5.0
Behavior5/5

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

The key behavioral trait that 'nothing runs until a person approves it in the dashboard' is disclosed, which is beyond what annotations provide (non-read-only, non-idempotent, non-destructive). The scope note '(scope: workspaces:write)' adds auth context. Together with annotations, the agent fully understands the request-approval lifecycle.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the core concept and gating behavior. No wasted words, and the scope is appended compactly.

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

Completeness4/5

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

For a 4-parameter tool with a clear schema and no output schema, the description explains the purpose, the approval flow, and scope adequately. It could mention how requests are tracked, but the sibling list_action_requests implies that mechanism, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 75%, with id, resource_id, and snapshot_id already documented. The description adds no parameter-level details, and the 'action' enum provides its own semantics. Baseline 3 is appropriate because the schema carries the parameter load.

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

Purpose5/5

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

The description clearly identifies the tool's role as creating an approval request, distinct from executing the action directly. It states a specific behavior ('asks whoever has the permission') and clarifies that the request itself is not the execution, which distinguishes it from every direct-action sibling like delete_app or snapshot_restore.

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

Usage Guidelines4/5

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

The phrase 'the account can't do on its own' gives clear context for when to use this tool: when the account lacks permission to perform the action directly. It also implies it is a fallback or escalation path, which differentiates it from direct-action siblings. It does not explicitly name an alternative or list exclusions, but the context is sufficiently explicit.

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

create_appB

Creates an application from a folder on the computer: compresses the folder (ignoring node_modules, .git and whatever is in .vertraignore) and uploads it. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
mainYesMain file (e.g. index.js)
nameYesApplication name
pathYesProject folder on the computer
startNoCustom start command
memoryYesRAM in MB
versionNoRuntime version; "recommended" by default
subdomainNo
descriptionNo
workspace_idNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds useful context about the compression and ignored folders (node_modules, .git, .vertraignore) and mentions the scope apps:write. However, it does not disclose side effects like whether an existing app is overwritten, the asynchronous nature, or what the return value indicates. It adds some value beyond annotations but not comprehensive.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and includes a parenthetical for clarity. Every phrase contributes value, and there is no wasted text. It is appropriately sized for a straightforward creation tool.

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

Completeness2/5

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

The tool has 9 parameters (4 required), no output schema, and many siblings. The description only provides a high-level summary without explaining expected outcomes, error conditions, or the creation flow after upload. An agent lacks information on how to verify success, what the response contains, or any prerequisites like folder existence. This is insufficient for a complex creation operation.

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

Parameters3/5

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

Schema description coverage is 67%, and the description does not elaborate on any parameter. It does not explain subdomain, description, or workspace_id, which lack schema descriptions. The description adds no parameter-specific semantics beyond what the schema provides, so it meets the baseline of 3 for high coverage but does not compensate for the gaps.

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

Purpose5/5

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

The description clearly states the action: 'Creates an application from a folder' and details the process (compress, ignore specific folders, upload). It is specific about the resource (application) and the source (folder). It distinguishes itself from siblings like start_app or deploy_app by focusing on creation.

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

Usage Guidelines2/5

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. It does not mention prerequisites, exclusions, or contrast with other app-related tools like update_app_config or deploy_app. The agent must infer that this is for new app creation from a folder, but there is no explicit instruction.

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

create_databaseC

Creates a managed database. (scope: databases:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
ramYesRAM in MB
nameYes
engineYes
descriptionNo
workspace_idNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already convey readOnly=false, idempotent=false, and destructive=false. The description adds a specific auth scope ('scope: databases:write') and the 'managed' qualifier, which provides a small amount of behavioral context. However, it does not disclose provisioning time, cost implications, or what happens when created.

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

Conciseness4/5

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

The description is a single concise sentence with a parenthetical scope note, front-loaded and free of fluff. It is appropriately brief, though the brevity contributes to content gaps captured in other dimensions.

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

Completeness1/5

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

This is a 5-parameter create operation with no output schema. The description omits return value behavior, required parameter semantics, workspace_id relevance, and any post-creation status or provisioning behavior. It is far from sufficient for an agent to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is only 20% (only 'ram' is described), and the description does not compensate at all. It fails to mention engine choices, name constraints, description, or workspace_id, leaving agents without semantic guidance for most parameters.

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

Purpose4/5

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

The description states a clear action and resource: 'Creates a managed database.' This distinguishes it from database lifecycle siblings like list_databases, update_database, and delete_database. However, it adds little beyond the tool name and does not explicitly differentiate from other create_* tools beyond the resource type.

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

Usage Guidelines2/5

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, no prerequisites are mentioned, and there is no context about workspace requirements or follow-up steps. The description simply states the operation without any situational or selection guidance.

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

create_deploy_webhookA

Creates (or renews) the application's automatic-deploy webhook, from an already connected GitHub repository. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
ownerYesLogin of the repository owner on GitHub
repo_idYesNumeric ID of the repository on GitHub
repo_nameYesRepository name
account_idYesNumeric ID of the GitHub App installation/account
workspace_idNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true. The description adds the scope requirement ('apps:write') and the 'renews' behavior, which is useful. However, it doesn't disclose what happens on renewal (e.g., whether the existing webhook is replaced), rate limits, or side effects beyond creation. No contradiction with annotations.

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

Conciseness5/5

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

A single sentence that front-loads the action, includes the renewal nuance, and adds the scope requirement. No wasted words.

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

Completeness3/5

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

For a creation tool with no output schema, the description is adequate but leaves some gaps: it doesn't state what the response contains (e.g., webhook URL, secret) or whether the webhook is immediately active. The scope note helps, but an agent might need to infer the exact effect of 'renews'.

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

Parameters3/5

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

Schema description coverage is 83%, so the schema already documents most parameters. The description adds the context that the repository must be 'already connected' and that the webhook is for the application, but it doesn't explain how parameters like repo_id and account_id relate to the GitHub App installation. Baseline 3 is appropriate since the schema carries most of the burden.

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

Purpose4/5

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

The description states a specific verb ('Creates (or renews)') and resource ('automatic-deploy webhook'), and clarifies the prerequisite ('from an already connected GitHub repository'). It distinguishes from siblings like get_deploy_webhook and delete_deploy_webhook by focusing on creation/renewal, though it doesn't explicitly name them.

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

Usage Guidelines4/5

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

The description implies when to use it: when the app needs an automatic-deploy webhook and a GitHub repository is already connected. It doesn't explicitly state when not to use it or name alternatives like get_deploy_webhook/delete_deploy_webhook, but the context is clear enough for an agent to select it.

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

create_orderA

Creates a plan subscription order and returns the final price (with coupon discount, if any) and the order_id. (scope: billing:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesDesired plan
couponNoDiscount coupon
monthsYesNumber of months

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, so the description doesn't need to restate those. The description adds value by disclosing that the tool returns the final price with coupon discount and the order_id, and it notes the billing:write scope, which implies a mutating, permission-sensitive operation. It doesn't 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.

Conciseness5/5

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

The description is a single, focused sentence that front-loads the action and resource, then states the return values. It includes the scope in parentheses without extra fluff. Every part earns its place.

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

Completeness4/5

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

For a creation tool with no output schema, the description adequately covers the return values (final price and order_id). The annotations cover safety and idempotency. It could mention what happens on failure or whether the order is immediately active, but the core information an agent needs to call it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (plan, coupon, months). The description adds context about coupon discount and final price, which relates to the coupon parameter, but doesn't add significant meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'creates', the resource 'plan subscription order', and the key outputs: final price with coupon discount and order_id. It also includes the scope (billing:write), which distinguishes it from other order-related tools like get_order_status and list_orders.

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

Usage Guidelines4/5

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

The description implies usage for creating a plan subscription order and mentions the scope billing:write, which signals when it's appropriate. It doesn't explicitly name alternatives or exclusions, but the sibling list includes get_order_status and list_orders, and the description's focus on creation is clear enough context.

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

create_personal_folderB

Creates a personal folder to organize applications and databases. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
positionNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already convey read-only/idempotency/destructive hints, and the description aligns with readOnlyHint=false. It adds the 'scope: account:write' permission context, which is useful, but discloses nothing about side effects such as duplicate name handling or visibility.

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

Conciseness5/5

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

One sentence plus a scope note, no filler. The primary action is front-loaded and the scope hint earns its place.

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

Completeness2/5

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

For a creation tool with three undocumented parameters and no output schema, the description is too thin. It omits what each parameter controls and what the call returns, and the 'organize' clause only hints at the folder's purpose, not the API contract.

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

Parameters1/5

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 provides no meaning for 'name', 'color', or 'position'. The folder's purpose does not explain parameter choices, leaving only the schema's enum/constraints as guidance.

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

Purpose5/5

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

States a specific verb 'creates' and resource 'personal folder', and defines its purpose as organizing applications and databases. The 'personal' qualifier distinguishes it from workspace-folder siblings, and the scope note adds precision.

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

Usage Guidelines3/5

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

The phrase 'to organize applications and databases' implies a use case but gives no explicit when-to-use or when-not-to-use guidance. It does not contrast with alternatives like create_workspace_folder or mention any preconditions.

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

create_roleC

Creates a role in the workspace. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
nameYes
positionNo
permissionsYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, non-idempotent, and non-destructive. The description adds a permission scope ('scope: workspaces:write'), which provides useful auth context. However, it does not disclose side effects, error cases, or whether the role is immediately active.

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

Conciseness4/5

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

The description is extremely brief and front-loaded, with no redundant wording. The parenthetical adds useful scope information. Its brevity is efficient, though it borders on under-specification, which is already penalized in other dimensions.

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

Completeness2/5

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

For a create operation with four parameters (three required), no output schema, and sparse annotations, the description is too thin. It omits what the 'permissions' array should contain, what 'position' means, and any expectation about the created role. An agent would likely need to guess or consult supplementary docs.

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

Parameters1/5

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

Schema description coverage is only 25% (only 'id' has a description), and the description adds no explanation for 'name', 'position', or 'permissions'. With low schema coverage, the description was required to compensate but does not, leaving these parameters semantically opaque.

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

Purpose4/5

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

The description states a specific verb ('Creates') and resource ('a role in the workspace'), which clearly identifies the core action. It is distinct from sibling tools like list_roles, update_role, and delete_role by the action verb, but it does not explicitly describe what a role is or how it differs beyond the action.

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

Usage Guidelines2/5

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 such as list_roles or update_role, no prerequisites like workspace existence, and no mention of cases where creation would not be appropriate. The agent must rely entirely on the tool name and context.

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

create_snapshotA

Takes a snapshot of the resource. Counts against the plan's snapshot quota. (scope: snapshots:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesResource type
resource_idYesApplication or database ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark it as non-read-only and non-destructive. The description adds valuable behavioral context beyond annotations: the action counts against a plan quota and requires the snapshots:write permission scope. No contradictions with annotations.

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

Conciseness5/5

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

The description is two compact statements with no filler, front-loading the primary action before the quota warning and permission note. Every clause adds useful information.

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

Completeness4/5

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

For a two-parameter, low-complexity snapshot action, the required parameters are fully schema-documented and the description adds quota and permission context. It does not describe the return value or synchronous/asynchronous behavior, but there is no output schema and the core invocation is well covered.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents scope and resource_id adequately. The description adds no new parameter details; the parenthetical '(scope: snapshots:write)' can be slightly ambiguous because it echoes the parameter name 'scope,' though the schema's enum disambiguates it.

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

Purpose4/5

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

The description uses a specific verb and object: 'Takes a snapshot of the resource,' making the core action clear. It names a distinguishing consequence (quota) and permission, but it does not explicitly contrast with sibling snapshot tools like list_snapshots or restore_snapshot.

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

Usage Guidelines4/5

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

It gives clear usage context: call this when you need to create a snapshot and should be aware it consumes quota. It stops short of explicitly saying when not to use it or naming alternatives, so it does not reach the high-water mark of an explicit routing statement.

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

create_workspaceC

Creates a workspace. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only, non-idempotent, non-destructive operation. The description adds the required OAuth scope 'workspaces:write', which is useful auth context. It does not disclose side effects, uniqueness constraints, or behavior on conflicts, but the annotations cover the main safety profile.

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

Conciseness4/5

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

The description is one short sentence plus a parenthetical scope annotation. It front-loads the core action and contains no filler. It is concise, though its brevity leaves out useful behavioral and parameter context.

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

Completeness2/5

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

For a create operation with no output schema, the description should explain what creation entails, what fields are expected, and what the agent should expect afterward. It provides none of that beyond 'Creates a workspace.' The openWorldHint and idempotentHint annotations hint at additional complexity, but the description does not clarify it.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning for the 'name' or 'description' parameters. An agent gets no guidance on what 'name' should look like, whether 'description' is optional, or what valid values are. The description fails to compensate for the absent schema descriptions.

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

Purpose4/5

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

The description states a specific verb and resource: 'Creates a workspace.' This clearly identifies the operation and distinguishes it from sibling tools like update_workspace, delete_workspace, and list_workspaces. However, it does not explicitly contrast with related tools such as create_workspace_folder, so it is 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.

Usage Guidelines2/5

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, no prerequisites, and no exclusions. An agent must infer from the name that this is the right call for creating a workspace, which is not enough for a toolset with many similar workspace-related operations.

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

create_workspace_folderB

Creates a workspace folder to organize applications and databases. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
colorNo
positionNo
workspace_idYesWorkspace ID

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already indicate this is a write operation (readOnlyHint=false) and non-idempotent. The description adds an explicit authorization requirement, "(scope: workspaces:write)", which is useful behavioral context beyond the annotations. There is no contradiction with any annotation.

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

Conciseness4/5

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

The description is one efficient sentence with a short scope note appended. It is front-loaded and free of filler, meeting conciseness expectations, though the scope note is slightly cryptic.

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

Completeness3/5

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

For a simple create operation with annotations, the description adequately conveys purpose and permission scope. However, it lacks parameter explanations, does not mention return behavior (no output schema exists), and does not disambiguate from related folder tools explicitly, leaving moderate gaps.

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

Parameters2/5

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

Schema description coverage is only 25%, with only workspace_id described ('Workspace ID'). The description adds no meaning for name, color, or position, and does not compensate for the low coverage. Param names and the color enum are somewhat self-explanatory, but the description itself provides no parameter semantics.

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

Purpose4/5

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

The description states a specific verb and resource ("Creates a workspace folder") and further clarifies the purpose ("to organize applications and databases"). The resource type and verb distinguish it from sibling tools like create_personal_folder and delete_workspace_folder, though it does not explicitly name any sibling alternative.

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

Usage Guidelines3/5

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

The purpose clause implies when to use the tool: when a folder is needed to organize applications and databases. However, it gives no explicit when-not-to-use guidance and does not mention alternatives such as create_personal_folder or update_workspace_folder, so usage context is only implied.

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

decline_workspace_inviteA
Destructive

Declines an invite without joining the workspace; the invite stops being valid. (scope: workspaces:invites)

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesInvite token (the final part of the link)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide destructiveHint=true and idempotentHint=false. The description adds valuable context: the invite becomes invalid (permanent effect) and the action does not join the workspace. This goes beyond the annotations and helps the agent understand the 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.

Conciseness5/5

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

The description is a single, efficient sentence with no waste. The key action and consequence are front-loaded, and the scope note adds useful context without bloat.

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

Completeness5/5

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

For a tool with one required parameter, no output schema, and annotations covering safety, the description is complete. It explains what happens (invite becomes invalid) and what does NOT happen (no workspace join), which is all an agent needs to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the token parameter is fully described in the schema as 'Invite token (the final part of the link)'. The description adds no additional meaning about the parameter, so the baseline of 3 is appropriate.

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

Purpose5/5

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

States a specific verb ('Declines') and resource ('workspace invite'), and clarifies the outcome ('without joining the workspace; the invite stops being valid'). This clearly distinguishes it from accept_workspace_invite and gives the agent a precise understanding of the action.

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

Usage Guidelines4/5

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

The description implies the intended use (declining an invite you don't want to accept) by noting 'without joining the workspace'. However, it doesn't explicitly name alternatives like accept_workspace_invite or revoke_workspace_invite, nor does it state when NOT to use it. The context is clear but not explicit.

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

delete_appA
Destructive

Permanently deletes the application, along with its files and configuration. (scope: apps:delete)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNoID of the workspace that owns the resource, if any

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already include destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the description does not need to restate these. It adds specific context that the deletion includes files and configuration, and explicitly says 'permanently', reinforcing irreversibility. This goes beyond the bare destructive hint and helps the agent understand the full impact.

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

Conciseness5/5

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

The description is a single concise sentence that delivers the core action and scope without any unnecessary words. It is front-loaded with the verb and resource, making it easy to parse quickly. The parenthetical scope note adds value without bloating the text.

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

Completeness4/5

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

For a destructive operation with two parameters (one required) and no output schema, the description covers the purpose, the extent of deletion, and the permission scope. It could mention the response or any prerequisites (e.g., app must be stopped), but these are not essential given the annotations and schema. Overall, 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.

Parameters3/5

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

The schema description coverage is 100%: both 'id' and 'workspace_id' have clear descriptions in the schema. The description itself does not add additional parameter-specific guidance, which is acceptable given the high coverage. It does not contradict the schema and meets the baseline expectation.

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

Purpose5/5

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

The description clearly states the action (permanently deletes), the resource (the application), and what is included (files and configuration). It also includes a scope annotation (apps:delete) that clarifies permissions. This distinguishes it from sibling tools like delete_workspace or delete_database because the resource is explicitly named.

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

Usage Guidelines2/5

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 such as stop_app, unpublish_app, or remove_app_from_workspace. The description only states what it does, not when it should be chosen. It does not mention exclusions or conditions, leaving the agent to infer usage from context.

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

delete_databaseA
Destructive

Permanently deletes the database, along with the data inside it. (scope: databases:delete)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds valuable context: 'permanently' signals irreversibility, and 'along with the data inside it' specifies exactly what is destroyed. It also includes the scope string, providing an additional behavioral token. This goes beyond the structured 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that immediately states the core action ('Permanently deletes'). The parenthetical scope adds a concise, non-redundant detail. Every word earns its place, with no filler or repetition.

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

Completeness4/5

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

For a destructive delete tool with annotations covering safety, the description adequately conveys irreversibility and the full scope of data loss. It does not explain workspace_id, and there is no output schema to define return behavior, but these are minor given the simplicity of the operation and existing annotation coverage.

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

Parameters2/5

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

Schema coverage is 50%: id has a description ('Database ID') but workspace_id does not. The description adds no parameter-level meaning, and notably fails to clarify the purpose of workspace_id or when it should be provided. Since coverage is not high, the description was expected to compensate, but it does not address parameters at all.

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

Purpose5/5

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

The description states a specific verb and resource: 'Permanently deletes the database, along with the data inside it.' This clearly distinguishes it from sibling tools like stop_database or reset_database, which do not remove the database itself. The scope annotation '(scope: databases:delete)' further reinforces the exact action.

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

Usage Guidelines3/5

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

The description implies usage when permanent deletion is desired, but it does not explicitly contrast it with alternatives such as stop_database, reset_database, or delete_workspace. There is no 'use this when...' guidance or exclusion of other tools, leaving the agent to infer the appropriate context from the verb.

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

delete_deploy_webhookA
Destructive

Removes the automatic-deploy webhook; whoever was using the URL stops being able to deploy. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and not read-only. The description adds the concrete behavioral detail that anyone using the webhook URL loses deploy ability, which is valuable 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that states the action and its consequence, followed by a concise scope note. There is no wasted wording or repetition.

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

Completeness4/5

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

For a simple delete operation, the description covers the purpose, the behavioral consequence, and the required scope. It does not explain the return value or the optional workspace_id, but the annotations and absence of an output schema keep the missing information minor.

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

Parameters2/5

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

The description provides no parameter-specific information; it does not mention 'id' or 'workspace_id'. The schema documents only 'id' as 'Application ID', leaving 'workspace_id' with no description, and the tool description does not compensate for that gap.

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

Purpose5/5

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

The description states the specific action 'Removes' and the resource 'automatic-deploy webhook', and it explains the consequence that the URL no longer enables deploys. This clearly distinguishes it from siblings like create_deploy_webhook and get_deploy_webhook.

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

Usage Guidelines4/5

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

The description clearly implies this tool is for removing an existing automatic-deploy webhook and states the required scope (apps:write). It does not explicitly name alternatives or exclusions, but the usage context is unambiguous and needs little inference.

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

delete_envB
Destructive

Deletes an environment variable. Use the variable id returned by list_envs. (scope: apps:envs)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
env_idYesVariable ID
workspace_idNo

TDQS

B3.4/5.0
Behavior3/5

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

The destructiveHint annotation already flags mutation/destruction, and the description aligns by naming the target (an environment variable). It adds a little context with the 'apps:envs' scope hint, but does not disclose consequences such as impact on running apps or reversibility, which would be more valuable.

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

Conciseness4/5

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

The description is a single sentence with a compact scope note and no filler. It front-loads the operation before the procedural hint, though the parenthetical scope notation is terse and could be mistaken for an endpoint path.

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

Completeness3/5

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

For a simple delete tool with a destructive annotation and no output schema, it covers the core operation and how to obtain the variable ID. It is incomplete in that it never clarifies the relationship between the list_envs ID and the required id/env_id fields, and the optional workspace_id is left unexplained.

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

Parameters3/5

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

The schema covers id and env_id (67%), and the description adds the useful provenance hint that the variable ID comes from list_envs. However, the phrase 'variable id' does not explicitly map to the env_id parameter and workspace_id remains undocumented, so it only partially clarifies the schema.

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

Purpose4/5

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

The description opens with a specific action and resource ('Deletes an environment variable'), which distinguishes it from sibling tools like list_envs and set_env. It does not explicitly contrast with those siblings, and the follow-up instruction about 'variable id' introduces slight ambiguity, so it falls just short of a perfect score.

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

Usage Guidelines3/5

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

It gives a useful prerequisite: obtain the variable identifier from list_envs before deleting. However, it does not state when to choose this tool over alternatives, nor does it mention that set_env is the add/update counterpart or that deletion is irreversible.

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

delete_fileB
Destructive

Deletes a file or folder from the application. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathYes
workspace_idNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the application-scoped context and clarifies the target is a file or folder, but it does not disclose recursion behavior, permanence, permissions, or whether the action is reversible. This is modest added value beyond the annotations.

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

Conciseness5/5

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

The description is a single sentence with no filler, action verb first, and a useful scope parenthetical. Every word contributes to identifying the tool's core behavior.

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

Completeness2/5

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

For a destructive tool with no output schema and two undocumented parameters, the description is too thin. It states what is deleted but not how parameters map to the target, whether folder deletion is recursive, or any safety-relevant effects beyond the annotation-level destructive hint. An agent would need to open the schema and still may not understand path semantics.

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

Parameters1/5

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

Schema description coverage is only 33%: only 'id' has a description, while 'path' and 'workspace_id' are undocumented. The description provides no parameter-level information, so an agent cannot determine what the 'path' should refer to, whether it is app-relative, or how 'id' and 'path' interact. With low schema coverage, the description was expected to compensate but does not.

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

Purpose5/5

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

The description uses a specific verb ('Deletes') with a clear resource ('a file or folder') and adds an explicit scope ('apps:files'). This makes the tool's purpose unambiguous and differentiates it from the many other delete_* siblings, which target workspaces, databases, roles, etc.

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

Usage Guidelines2/5

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 such as move_file, write_file, or the many other delete_* tools. The only implicit usage signal is the phrase 'file or folder,' but no exclusions, prerequisites, or alternative recommendations are provided.

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

delete_personal_folderA
Destructive

Deletes a personal folder; the resources inside it are not deleted. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesFolder ID

TDQS

A4/5.0
Behavior4/5

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

The annotations already mark this as destructive, but the description adds important behavioral context beyond that flag: deleting the folder does not delete the resources inside it. The explicit '(scope: account:write)' also communicates an authorization scope not present 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.

Conciseness5/5

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

The description is extremely concise and front-loads the core action first, followed by the critical non-destructive-of-contents nuance. The scope note is compact and not redundant with the schema or annotations.

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

Completeness4/5

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

For a one-parameter delete operation, the description covers the main behavior, the side-effect nuance regarding contained resources, and the required scope. It does not explain return values or error behavior, but the absence of an output schema and the simplicity of the tool make the description otherwise complete.

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

Parameters3/5

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

Schema coverage is 100%, and the only parameter, folder_id, is already described as 'Folder ID'. The description adds nothing about parameter formats, formats, or validation beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource, 'Deletes a personal folder', and the added detail that resources inside it are not deleted clarifies exactly what the operation does. The term 'personal' distinguishes this from sibling tools like delete_workspace_folder, so an agent can tell it apart from related folder deletion tools.

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

Usage Guidelines3/5

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

The intended use case is implied by the resource type: this deletes a personal folder, not a workspace folder. However, it never explicitly says when to use this over siblings such as delete_workspace_folder or the remove-resource-from-folder tools. There is clear context but no explicit when/when-not guidance.

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

delete_roleA
Destructive

Deletes a role from the workspace; whoever had it loses those permissions. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
role_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds value by specifying the precise impact on users (loss of permissions) and the required scope (workspaces:write). This goes beyond the annotations and helps the agent anticipate side effects. No contradiction with annotations.

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

Conciseness5/5

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

The description is one short sentence with a parenthetical scope note. It is front-loaded with the primary action and consequence, with zero wasted words. Ideal length for a simple delete operation.

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

Completeness4/5

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

For a two-parameter delete tool with annotations covering destructive behavior, the description is nearly complete. It states the consequence on permissions and the required scope, which covers most operational context. Minor omissions like irreversibility are already implied by destructiveHint, so no significant gaps remain.

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

Parameters2/5

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

Schema coverage is 50% (only the 'id' parameter has a description, 'role_id' does not). The description provides no additional parameter details, so it fails to compensate for the undocumented 'role_id'. An agent is left to infer that role_id identifies the role to delete, but the description does not clarify the relationship or format.

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

Purpose5/5

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

The description clearly states the action (Deletes), the resource (a role from the workspace), and the key consequence (whoever had it loses those permissions). This distinguishes it from sibling tools like create_role, update_role, and delete_workspace without requiring the schema.

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

Usage Guidelines4/5

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

The description implies its usage context: when you need to remove a role from a workspace. It does not explicitly name alternatives or state when not to use it, but the destructive nature and consequence make the intended use clear. A small gap is the lack of explicit routing to update_role for modifying rather than deleting.

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

delete_workspaceA
Destructive

Deletes the workspace (owner only). Members, roles, invites and links disappear; apps and databases go back to the owning account. This cannot be undone. (scope: workspaces:delete)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID

TDQS

A4.5/5.0
Behavior5/5

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

The description adds significant behavioral detail beyond the annotations: it explains exactly what is destroyed (members, roles, invites, links) and what happens to apps/databases (return to owning account), and explicitly states irreversibility. This goes beyond the destructiveHint annotation's simple flag.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core action, followed by consequences and irreversibility. No filler words; the scope note is parenthetical and relevant.

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

Completeness5/5

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

For a single-parameter, no-output-schema destructive tool, the description fully covers the purpose, permissions, side effects, and irreversibility. An agent has enough to decide when to call it and what to expect, even without explicit alternative routing.

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

Parameters3/5

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

The input schema already covers the id parameter fully with 100% description coverage, so the baseline is 3. The description does not add any additional syntax, format, or constraints beyond 'Workspace ID', so it does not exceed the schema's explanation.

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

Purpose5/5

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

The description states the action explicitly ('Deletes the workspace') with the resource and a permission restriction ('owner only'). It clearly distinguishes this from sibling delete tools like delete_app or delete_database by naming the workspace as the target, and the irreversible consequence reinforces its scope.

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

Usage Guidelines4/5

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

Provides clear context for when to use: to permanently remove a workspace. It includes a prerequisite ('owner only') and describes the full consequences, which implicitly tells agents to use this only when they intend to delete the whole workspace rather than individual resources. It does not explicitly name alternatives but gives enough context to avoid confusion.

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

delete_workspace_folderA
Destructive

Deletes a workspace folder; the resources inside it are not deleted. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesFolder ID
workspace_idYesWorkspace ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark the operation as destructive and non-idempotent. The description adds valuable behavioral context beyond the annotations: resources inside the folder are not deleted, and the operation requires the workspaces:write scope. This helps an agent understand the partial-destruction semantics and permission requirements.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core action and immediately adds the critical non-destructive nuance. The scope parenthetical is compact and useful. No unnecessary words or repetition.

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

Completeness4/5

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

For a simple two-parameter delete operation, the description combined with annotations and full schema coverage is nearly complete. It explains the key behavioral outcome (resources survive) and the required scope. It does not mention return values or error cases, but this is minor for such a low-complexity tool.

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

Parameters3/5

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

Schema description coverage is 100%, with both workspace_id and folder_id described in the schema. The tool description adds no additional parameter-level semantics, so it relies on the schema, which is sufficient. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Deletes a workspace folder'. It also clarifies the scope of the deletion by noting resources inside are not deleted, which distinguishes it from broader destructive tools like delete_workspace and from personal folder operations. This is unambiguous and immediately actionable.

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

Usage Guidelines3/5

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

The description implies when to use the tool—when you want to delete a workspace folder—but it does not explicitly mention alternatives or state when not to use it. The sibling list and the 'workspace folder' wording provide context, but no direct routing guidance is given.

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

deploy_appA

Uploads a folder from the computer to an existing application (new deploy), using the same compression criteria as create_app. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathYesProject folder on the computer
restartNoRestart the application after upload (default: true)
workspace_idNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already indicate this is a mutating operation (readOnlyHint=false) and not idempotent. The description adds that it creates a 'new deploy' and uses the same compression criteria as `create_app`, which is helpful context. However, it does not disclose side effects such as the default restart behavior or what happens to previous deployments, so it goes only slightly beyond the annotations.

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

Conciseness5/5

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

A single, front-loaded sentence states the core action, target, deployment type, and a relevant comparison. The trailing scope annotation is compact and useful. No filler or redundant restatement of schema properties.

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

Completeness3/5

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

The description plus schema covers the essential calling requirements for a straightforward deployment operation. There is no output schema, so a note about return behavior could have helped, and behavior around `restart` and previous deployments is not addressed. Overall it 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.

Parameters3/5

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

The schema already provides descriptions for 3 of 4 parameters (`id`, `path`, `restart`), giving 75% coverage. The description reinforces that `path` is a local computer folder and that `id` refers to an existing application, and adds the compression-criteria detail. It does not clarify the undocumented `workspace_id`, so it does not fully compensate for that gap.

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

Purpose5/5

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

The description begins with a concrete action and target: 'Uploads a folder from the computer to an existing application (new deploy)'. It distinguishes itself from create_app by emphasizing 'existing application' and 'new deploy', and the scope annotation 'apps:files' adds further specificity. This is far more informative than a tautological restatement.

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

Usage Guidelines4/5

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

The description makes the use case clear: deploying a local folder to an already-existing application as a new deployment. It references `create_app` for compression criteria, giving a useful comparison point. It does not explicitly state when to avoid this tool in favor of `upload_files` or `create_app`, but the intended context is evident.

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

download_appA
Read-onlyIdempotent

Downloads the application's files as a zip and writes it to the given path. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
destYesPath of the .zip file to write
workspace_idNoID of the workspace that owns the resource, if any

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral detail: the tool creates a zip file locally at the specified destination. It does not mention overwrite behavior or authentication requirements, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is a single sentence with no filler. The core behavior is front-loaded, and the scope note is appended cleanly without disrupting readability.

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

Completeness4/5

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

For a simple download operation, the description and schema give an agent enough information to invoke the tool correctly: target resource, destination path, and optional workspace. It does not describe the return value, but no output schema exists and the primary side effect is clearly stated.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already documents id, dest, and workspace_id. The description adds no semantic detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the specific verb and resource: it downloads the application's files as a zip and writes them to a given path. This differentiates it from siblings like download_snapshot and get_app, and the scope annotation adds useful context.

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

Usage Guidelines3/5

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

The description makes the tool's purpose obvious but gives no explicit guidance on when to prefer it over alternatives, such as download_snapshot. It neither states exclusions nor names sibling tools for comparison, leaving usage context implicit.

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

download_snapshotB
Read-onlyIdempotent

Downloads a snapshot and writes it to the given path on the computer. (scope: snapshots:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
destYesPath of the file to write
scopeYesResource type
resource_idYesApplication or database ID
snapshot_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the tool writes to a local path, which is not captured in annotations. However, it omits overwrite behavior, permission details beyond scope, and any 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.

Conciseness5/5

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

A single sentence plus a short scope note. The core action is front-loaded and there is no redundant or unnecessary text.

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

Completeness3/5

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

No output schema exists; annotations cover safety. The description covers the core action but lacks operational context such as file overwrite behavior, how to obtain a snapshot_id, or interaction with list_snapshots. Adequate for a simple tool but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 75%, with snapshot_id lacking a description. The description adds no parameter meaning beyond what schema already provides; it only restates the dest concept. No clarification of how snapshot_id relates to resource_id or how to obtain valid values.

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

Purpose5/5

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

States a specific verb 'downloads' with resource 'snapshot' and local destination, clearly distinguishing from siblings like restore_snapshot or list_snapshots. The description unambiguously conveys the action.

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

Usage Guidelines2/5

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 such as restore_snapshot or create_snapshot. The scope note is a permission hint, not usage context. It does not mention prerequisites like obtaining a snapshot_id from list_snapshots.

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

favorite_personal_resourceA
Idempotent

Adds an application or database to the personal favorites. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
resource_idYes
resource_typeYes

TDQS

A3.7/5.0
Behavior4/5

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

The description adds the scope 'account:write' which is beyond the annotations, signaling write permissions. Annotations already declare idempotentHint true and destructiveHint false, so the description does not need to restate those. It provides a small but useful additional 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that states the action and scope. No extraneous words, and it is appropriately sized for the tool's simplicity.

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

Completeness2/5

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

The description is too sparse for a tool with three parameters and no output schema. It omits parameter meanings, any prerequisites, and the expected response. While the action is simple, the lack of parameter detail makes the definition incomplete.

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

Parameters2/5

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

The description does not explain any of the parameters (resource_type, resource_id, position). Schema coverage is 0%, so the description must compensate, but it only hints at resource_type via the phrase 'application or database'. resource_id and position remain unexplained, leaving the agent to guess.

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

Purpose5/5

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

The description clearly states the verb 'adds' and the resource 'application or database' to 'personal favorites', distinguishing it from workspace favorites. The name and description together make the purpose unambiguous, and it is distinct from sibling tools like favorite_workspace_resource.

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

Usage Guidelines3/5

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

The description implies personal vs workspace favorites but does not explicitly contrast with alternatives like favorite_workspace_resource or explain when to choose this over them. No exclusions or conditional guidance are provided; the agent must infer from the name.

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

favorite_workspace_resourceB
Idempotent

Adds an application or database to the workspace favorites. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
resource_idYes
workspace_idYesWorkspace ID
resource_typeYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already convey mutation (readOnlyHint=false), idempotency (idempotentHint=true), and non-destructiveness (destructiveHint=false). The description adds the auth scope 'workspace:write', which is useful, but does not clarify duplicate handling, ordering behavior, or whether the resource must already exist in the workspace.

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

Conciseness5/5

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

The entire description is one front-loaded sentence with the scope note in parentheses. It contains no filler or repetition of schema properties and earns its place.

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

Completeness3/5

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

For a straightforward favorite operation, the description is minimally viable: it names the action, target, and permission scope. However, it leaves behavioral details like position semantics and relationship to workspace membership unexplained, making the overall context adequate but incomplete.

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

Parameters2/5

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

Schema description coverage is only 25%, with only workspace_id documented. The description loosely maps to resource_type by naming 'application or database' but adds no meaning for resource_id or the optional position parameter. It does not compensate for the low schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Adds'), a specific resource type ('application or database'), and a specific destination ('workspace favorites'). This clearly differentiates it from sibling tools such as favorite_personal_resource, add_app_to_workspace, and unfavorite_workspace_resource.

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

Usage Guidelines2/5

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 such as favorite_personal_resource or add_workspace_resource_to_folder. The scope note 'workspace:write' hints at permission requirements, but the description provides no when-to-use or when-not-to-use context.

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

get_appB
Read-onlyIdempotent

Details of an application: name, memory, runtime, main file, publication. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNoID of the workspace that owns the resource, if any

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the scope requirement (apps:read) and the specific fields returned, which is useful but does not disclose behavior like 404 handling, whether workspace_id is required for access, or response shape. 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.

Conciseness4/5

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

The description is a single compact sentence that front-loads the resource and fields, with the scope note appended. It is efficient and free of filler, though the scope parenthetical could arguably be moved to annotations or usage guidance.

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

Completeness3/5

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

For a simple read-only detail tool with full schema coverage and safety annotations, the description is mostly adequate. However, it lacks guidance on when to use this versus get_app_status, and does not mention whether workspace_id is needed for cross-workspace access or what happens if the app is not found. These are minor gaps given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (id and workspace_id) are already documented in the schema. The description adds no additional parameter-level meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description states a clear verb-resource pair ('Details of an application') and enumerates the specific fields returned (name, memory, runtime, main file, publication). It distinguishes itself from siblings like get_app_status and list_apps by focusing on full application details, though it does not explicitly name those siblings.

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

Usage Guidelines3/5

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

The description implies usage context: it is a read-only detail lookup for a single application, and the scope annotation (apps:read) hints at permission requirements. However, it does not explicitly state when to prefer this over get_app_status, list_apps, or get_logs, nor does it mention any exclusions or alternatives.

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

get_app_statusA
Read-onlyIdempotent

Live status (CPU, RAM, uptime) of an application; without id, of all of them. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoApplication ID
workspace_idNoID of the workspace that owns the resource, if any

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful detail beyond that: the return payload ('CPU, RAM, uptime'), the all-applications default, and the required scope.

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

Conciseness5/5

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

A single sentence delivers the core resource, the concrete fields returned, the conditional behavior, and the permission scope. There is no filler or redundancy.

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

Completeness5/5

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

For a simple read-only tool with only two documented parameters, the description plus schema fully covers what the agent needs: what to pass, what comes back, and the scope. The annotations handle the safety semantics, so no further caveats are required.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning to the optional 'id' parameter by explaining that its absence returns status for all applications, going beyond the schema's bare 'Application ID' label.

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

Purpose5/5

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

The description names a specific verb and resource ('get app status') and concretely defines the output (CPU, RAM, uptime). It also distinguishes the no-id behavior ('of all of them'), distinguishing it from related tools like get_app or list_apps.

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

Usage Guidelines4/5

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

It makes the device clear: call with an id for a single application, or omit id for all applications. It also states the permission scope ('apps:read'). It does not explicitly name alternative tools, but the conditional id behavior gives sufficient usage context.

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

get_connection_infoB
Read-onlyIdempotent

Data to connect to the database: address, port, engine, CA certificate in PEM and, when the account has one, a ready-made connection string. This server does not run queries — you're the one who connects. (scope: databases:credentials)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds valuable behavioral context: the server does not execute queries, the CA certificate is in PEM format, and the connection string is only present when the account has one. This goes beyond the 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.

Conciseness5/5

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

The description is two tight sentences. It front-loads the returned data, then adds a caveat and a scope note, with no filler or redundant repetition of the schema.

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

Completeness3/5

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

With no output schema, the description usefully enumerates the returned fields and the non-query behavior, which is good for a read-only credential tool. However, it leaves parameter semantics, especially workspace_id, unexplained and provides no sibling-selection guidance, so it is not fully self-sufficient for correct invocation.

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

Parameters2/5

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

The schema describes 'id' as Database ID but leaves workspace_id undocumented, and schema description coverage is only 50%. The description does not mention either parameter or clarify the role or requirement of workspace_id, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

The description clearly identifies the resource (database) and the specific payload (address, port, engine, CA certificate, connection string), making the tool's purpose unmistakable. It does not use an explicit verb like 'retrieves' or name a sibling tool to distinguish from, but the connection-data focus separates it from get_database and get_database_status.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as get_database, get_database_status, or reset_credentials. The statement that the server does not run queries explains behavior but does not help an agent choose among the many database-related sibling tools.

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

get_databaseB
Read-onlyIdempotent

Details of a database: engine, name, memory, address and port. (scope: databases:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the databases:read scope and the specific fields returned, but does not mention not-found behavior, errors, or relationship to status/metrics endpoints.

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

Conciseness5/5

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

One compact sentence with the core purpose front-loaded and the scope cleanly parenthesized. No filler or redundancy.

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

Completeness4/5

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

For a simple get-by-id read with strong annotations, the description covers the return fields and auth scope sufficiently. It is slightly incomplete because it doesn't explain workspace_id or distinguish from status/metrics/connection-info siblings, but an agent can still invoke it correctly.

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

Parameters2/5

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

Only id has a schema description ('Database ID'); workspace_id has none. The description does not explain either parameter or how workspace_id affects the lookup, so it fails to compensate for the 50% schema coverage gap.

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

Purpose4/5

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

The description names the resource (database) and specifies the return payload (engine, name, memory, address, port), so an agent knows this is a detail-read operation. It does not explicitly differentiate from sibling tools like get_database_status, get_database_metrics, or get_connection_info, though the field list hints at a general details view.

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

Usage Guidelines2/5

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

There is no guidance about when to choose get_database over the many sibling database tools (list_databases, get_database_status, get_database_metrics, get_connection_info). The 'databases:read' scope is an authorization hint, not a usage rule or alternative.

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

get_database_metricsB
Read-onlyIdempotent

History of CPU, RAM, storage and network usage of the database. (scope: databases:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
rangeNo
workspace_idNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description does not need to repeat safety traits. It adds useful context about returning historical usage metrics and the required scope, but it does not mention response shape, pagination, or range behavior.

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

Conciseness5/5

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

The description is a single front-loaded sentence that names the resource, the metric categories, and the permission scope. There is no filler or redundant restatement of the tool name.

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

Completeness3/5

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

For a simple read-only metrics tool, the core purpose and required id are clear, and annotations cover safety concerns. However, the optional params and the relationship to get_metrics are unexplained, leaving meaningful gaps in call correctness.

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

Parameters2/5

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

The input schema only describes the 'id' parameter, giving 33% schema description coverage. The description does not clarify 'range' or 'workspace_id', and while the range enum values are self-explanatory, the description fails to compensate for the low parameter documentation coverage.

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

Purpose4/5

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

The description clearly identifies the resource (database) and the data returned (historical CPU, RAM, storage, and network usage). It is not tautological and conveys more than the tool name alone, though it does not explicitly distinguish itself from the related sibling get_metrics.

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

Usage Guidelines2/5

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 such as get_metrics or get_database_status. The scope annotation 'databases:read' provides permission context but no decision support for choosing among sibling tools.

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

get_database_statusA
Read-onlyIdempotent

Live status (CPU, RAM, disk, uptime) of a database; without id, of all of them. (scope: databases:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoDatabase ID
workspace_idNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds behavioral context beyond annotations by specifying the live metrics returned and the aggregation behavior when `id` is omitted. It omits response format details, but this is a read-only status call.

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

Conciseness5/5

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

A single tightly packed sentence that front-loads the core behavior, follows with the scoping condition, and appends the permission scope. Every word contributes value; no redundancy.

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

Completeness4/5

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

Given two optional parameters and no output schema, the description explains what data is returned (CPU, RAM, disk, uptime) and how the `id` parameter changes scope. Missing is an explanation of `workspace_id` and a more explicit return shape, but the essential invocation information is present.

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

Parameters3/5

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

Schema coverage is only 50%: `id` has a description, `workspace_id` has none. The description adds crucial meaning for `id` (omitting it means 'all of them'), which compensates partially, but it does not clarify the role of `workspace_id`. Thus it leaves one parameter unexplained.

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

Purpose5/5

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

The description clearly states the tool's function: returning live status (CPU, RAM, disk, uptime) of a database, and distinguishes scope: with `id` it targets one database, without `id` it targets all of them. This specificity differentiates it from siblings like get_database_metrics and get_app_status.

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

Usage Guidelines4/5

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

The description gives clear usage context: provide `id for a single database, omit it for all databases. However, it does not explicitly name alternative tools or state when not to use this tool, leaving some routing ambiguity among database-related siblings.

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

get_deploy_webhookC
Read-onlyIdempotent

The application's automatic-deploy webhook URL. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

C2.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is established. The description adds only that the result is the webhook URL but no additional behavioral context such as authentication needs, response shape, or side effects. There is no contradiction with annotations.

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

Conciseness4/5

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

The description is compact, front-loaded, and contains no filler. It is under-specified as a fragment, but for what it says, it is concise.

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

Completeness3/5

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

For a simple get-by-ID operation with strong annotations, the description is nearly adequate: it identifies the returned resource as the webhook URL and the schema supplies the required id. However, the missing verb and the undocumented optional workspace_id leave a small but real gap in complete guidance for an agent deciding how to call it.

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

Parameters2/5

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

The schema documents only id with 'Application ID'; workspace_id has no description and the description offers no clarification. With 50% schema description coverage, the description needs to compensate for the undocumented parameter, but it does not.

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

Purpose2/5

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

The description is a noun phrase, not a statement of what the tool does. 'The application's automatic-deploy webhook URL' largely restates the tool name and lacks an action verb like 'retrieves' or 'gets', so it does not clearly distinguish the operation from sibling create/delete webhook tools.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus create_deploy_webhook, delete_deploy_webhook, or other getters. There are no conditions, limitations, or alternative routing cues.

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

get_docsA
Read-onlyIdempotent

Vertra Cloud's public knowledge base: plans, prices, limits, supported languages and error codes. Consult it before stating any number. section trims an excerpt by title.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNoTitle (or part of it) of the desired section

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful behavioral context by stating that the tool is a knowledge base and that the optional `section` parameter trims an excerpt by title, which is not derivable from annotations alone.

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

Conciseness5/5

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

The description is two sentences with no filler: the first states what the knowledge base contains, the second gives the key usage instruction and explains the parameter behavior. Every sentence earns its place and the most important guidance is front-loaded.

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

Completeness5/5

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

For a simple, optional-parameter, read-only documentation tool, the description is complete: it states the content domain, when to consult it, and how the section parameter affects the result. The annotations cover the safety profile, and no output schema is needed for this level of complexity.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the single `section` parameter. The description adds semantic value by explaining how the parameter behaves ('trims an excerpt by title'), enriching the agent's understanding beyond the schema text.

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

Purpose5/5

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

The description clearly identifies the tool as 'Vertra Cloud's public knowledge base' and enumerates its contents: plans, prices, limits, supported languages, and error codes. It also gives a specific instruction ('Consult it before stating any number'), which makes the purpose operational and distinguishes it from all sibling tools, none of which are documentation lookups.

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

Usage Guidelines4/5

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

The description provides a clear usage signal: consult this tool before stating any number. It does not explicitly name alternatives or give when-not-to-use conditions, but the context among mutating workspace/app/database tools makes the read-only documentation role obvious.

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

get_file_treeB
Read-onlyIdempotent

The application's full file tree. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds only the 'full file tree' and 'apps:files' scope context, with no additional behavioral detail such as recursion, pagination, or missing-file behavior.

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

Conciseness4/5

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

The description is short and front-loaded, with the essential noun phrase first and the scope note appended. It is appropriately terse, though the parenthetical 'scope: apps:files' is somewhat cryptic.

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

Completeness3/5

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

For a simple read-only tree tool with annotations covering safety, the description is minimally viable: an agent knows it will receive a full file tree. However, there is no output schema stub and no explanation of what tree nodes contain or how workspace_id affects results, leaving gaps for a 2-parameter tool.

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

Parameters2/5

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

The schema documents only 'id' as 'Application ID'; workspace_id has no schema description, and the tool description does not explain it or add meaning to either parameter. With 50% schema coverage and no compensation in the description, parameter semantics are weak.

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

Purpose4/5

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

The description clearly identifies the resource as 'the application's full file tree' and adds a scope hint ('apps:files'), so an agent can tell it returns a tree of files rather than a single file or listing. It lacks an explicit verb and does not differentiate itself from sibling tools like list_files or read_file, which keeps it from a 5.

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

Usage Guidelines2/5

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

The description gives no guidance about when to use this tool versus alternatives such as list_files, read_file, or move_file. The scope note is helpful but does not state conditions, exclusions, or a preferred alternative.

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

get_logsA
Read-onlyIdempotent

Last lines of the application's log (snapshot, not real time). tail trims the last N lines of what the API returned. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
tailNoNumber of trailing lines
workspace_idNoID of the workspace that owns the resource, if any

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond those annotations: the log is a snapshot rather than real-time, and the `tail` parameter trims the last N lines of the API response. This helps the agent understand data freshness and parameter behavior.

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

Conciseness5/5

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

Two compact sentences deliver the core purpose, the snapshot behavior, the tail semantics, and the scope. No filler or repetition; the most important information is front-loaded.

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

Completeness4/5

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

For a simple read-only log retrieval tool with full schema parameter coverage, the description is largely complete. It communicates the return concept (last log lines), the non-real-time caveat, and the scope. Without an output schema, it could still briefly mention the format of the returned log lines, but the current content lets an agent call it correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds some meaning to the `tail` parameter by explaining it trims the last N lines of what the API returned, but it does not add meaningful semantics for `id` or `workspace_id` beyond the schema. The added tail detail is useful but modest.

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

Purpose4/5

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

The description clearly identifies the resource (application logs) and the operation: returning the last lines of the log. It adds the meaningful qualifier 'snapshot, not real time,' which helps distinguish this from real-time log streaming, though it lacks an explicit verb like 'retrieve' or 'return.'

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

Usage Guidelines3/5

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

Usage is implied through the tool name and the phrase 'application's log,' and the snapshot/not-real-time note sets expectations. However, there is no explicit guidance about when to prefer this over sibling tools like get_app_status or get_metrics, and no mention of alternatives or exclusions.

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

get_metricsB
Read-onlyIdempotent

History of CPU, RAM, storage and network usage of the application. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
rangeNo
workspace_idNoID of the workspace that owns the resource, if any

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is already known. The description adds the useful context that the tool returns historical metrics rather than current values, and scopes it to app-level resources. It does not disclose response shape, pagination, or how the range parameter behaves, but the annotations lower the bar.

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

Conciseness4/5

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

The description is a single, focused sentence with no filler, and the app scope is stated clearly. The phrase 'History of...' is compact but could be more explicit with a verb like 'Retrieves historical...'.

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

Completeness3/5

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

For a simple read-only metrics tool, the description plus schema is mostly adequate. Missing context includes how the range parameter shapes the history, what the response contains, and when workspace_id is relevant. The lack of an output schema puts some burden on the description, which it only partially meets.

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

Parameters3/5

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

Schema coverage is 67%, with id and workspace_id described, and the range enum values are self-explanatory. The description clarifies what kind of metrics are involved, which helps interpret the id parameter, but it does not explain range values or when workspace_id is needed. This sits at the baseline where the schema does most of the work.

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

Purpose4/5

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

The description clearly identifies the resource (the application) and the metric types (CPU, RAM, storage, network). It is slightly weakened by lacking an explicit verb like 'retrieves', but 'History of' conveys the read intent. The application focus distinguishes it from similar siblings like get_database_metrics, even without naming them.

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

Usage Guidelines2/5

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, such as get_database_metrics or get_logs. The scope note '(scope: apps:read)' is an authorization context, not a selection criterion. There are no exclusions or preconditions.

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

get_networkA
Read-onlyIdempotent

The application's custom domain and DNS records, in a single response. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the auth scope '(scope: apps:read)' and the behavioral detail 'in a single response', which informs the agent that domain and DNS records are returned together. This is valuable 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.

Conciseness5/5

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

The description is a single efficient sentence followed by a short scope note. It front-loads the core purpose without redundant words, repetition, or filler.

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

Completeness3/5

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

The description covers the return content (custom domain and DNS records) but omits explanations for the optional workspace_id parameter and provides no error behavior. For a simple read tool with no output schema, it is mostly sufficient but has a notable gap for the undocumented parameter.

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

Parameters2/5

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

The description does not mention either parameter. The input schema describes 'id' as 'Application ID' but leaves 'workspace_id' undocumented, and with only 50% schema coverage, the description should have compensated but doesn't. No additional meaning is added beyond the schema.

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

Purpose5/5

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

The description clearly identifies the specific resource (application's custom domain and DNS records) and implies the 'get' verb through the tool name. It distinguishes itself from siblings like set_custom_domain and get_app by specifying the exact data returned.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. There are no exclusions or references to sibling tools, leaving the agent to infer usage from the name and description alone. The scope note hints at read access but doesn't explicitly route the agent.

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

get_order_statusA
Read-onlyIdempotent

Status of an order; poll it periodically until it turns paid. (scope: billing:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true, but the description adds value by specifying the polling behavior and the condition of waiting until the order turns paid. It also includes a scope note. No contradiction with annotations; it enriches the operational understanding.

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

Conciseness5/5

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

The description is extremely concise: one sentence plus a scope note. The core purpose is front-loaded, followed by a clear usage instruction. No wasted words; every segment earns its place.

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

Completeness4/5

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

For a simple status-check tool with one parameter and no output schema, the description is complete enough. It covers what the tool does, how to use it (polling), and the scope. It doesn't specify return values or error handling, but those are not mandated by the context. The sibling list_orders handles broader queries, so coverage is adequate.

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

Parameters4/5

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

With schema coverage at 0%, the description carries the burden. It clearly implies that order_id is the identifier of the order whose status is being checked. Even though the schema only says 'string', the description effectively explains the parameter's purpose, making it understandable for an agent.

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

Purpose4/5

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

The description clearly states the tool's function: retrieving the status of an order. It implicitly differentiates from list_orders by focusing on a single order identified by order_id. The phrase 'Status of an order' is specific enough, though it lacks an explicit verb like 'retrieve' or 'get'.

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

Usage Guidelines3/5

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

It provides a clear usage pattern ('poll it periodically until it turns paid'), which tells the agent when to use it. However, it does not explicitly mention when not to use it or alternatives (e.g., list_orders for batch views). The scope note (billing:read) gives some context but not direct guidance.

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

get_pixB

Generates the order's PIX payment and returns the copy-and-paste code and the QR Code. THE PERSON PAYS, in their banking app — the agent never pays anything. (scope: billing:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, so the description doesn't need to restate those. The description adds useful behavioral context: it clarifies that the agent never pays, and that the tool returns both copy-and-paste code and QR Code. However, it doesn't disclose side effects like whether the payment is marked as pending, whether repeated calls create multiple PIX charges, or any rate limits. The scope (billing:write) is mentioned in the description, which adds context beyond annotations.

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

Conciseness4/5

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

The description is concise and front-loaded with the main action. The parenthetical scope note is useful and doesn't waste words. The sentence about who pays is important behavioral context and earns its place. Slightly more structure could be added, but it's appropriately sized for a simple tool.

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

Completeness3/5

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

For a tool with one parameter and no output schema, the description covers the main purpose and a key behavioral constraint (agent never pays). However, it doesn't describe the return format beyond 'copy-and-paste code and QR Code', doesn't mention error conditions (e.g., invalid order_id, order not found), and doesn't clarify whether the PIX code expires or is single-use. Given the billing context, these details could matter for an agent deciding whether to call the tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the undocumented order_id parameter. The description mentions 'the order's PIX payment' which implies order_id refers to the order for which payment is generated, but it doesn't explicitly explain the parameter format, required format, or any constraints. With only one parameter and a clear name, the meaning is inferable, but the description doesn't add explicit parameter-level detail beyond what the schema shows.

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

Purpose4/5

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

The description clearly states the tool's function: generating the order's PIX payment and returning the copy-and-paste code and QR Code. It identifies the specific resource (order) and the action (generates PIX payment). It doesn't explicitly differentiate from siblings, but the PIX payment context is unique among the listed sibling tools, so the purpose is clear enough.

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

Usage Guidelines3/5

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

The description implies usage context: it is for generating a PIX payment for an order, and it explicitly notes that the person pays, not the agent. However, it doesn't explicitly state when to use this tool versus alternatives, nor does it mention prerequisites like order status or payment state. The scope annotation (billing:write) provides some context but not explicit when-to-use guidance.

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

get_profileA
Read-onlyIdempotent

Account profile: plan, allocated memory, limits and usage. (scope: account:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, open-world, and non-destructive, so the description need not restate those. It adds the permission scope ('account:read') and the data categories, but does not disclose response shape, units, or freshness. This is acceptable given the strong annotations, but the description itself adds only modest behavioral context.

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

Conciseness5/5

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

The description is a single compact line with no filler, tautology, or repeated schema information. The resource and its main content are front-loaded, and the scope note is appended cleanly.

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

Completeness4/5

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

With zero parameters and rich safety annotations, the tool is straightforward to invoke. The description covers the main output categories, though a fuller response shape or units would help since there is no output schema. Still, nothing essential is missing for selecting and calling this tool.

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

Parameters4/5

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

The input schema has zero parameters, so there are no parameter semantics to explain; the rubric assigns a baseline of 4 in this case. The description adds value by naming what the profile contains, which is enough for an agent to understand the payload domain without needing parameter details.

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

Purpose4/5

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

The description names a concrete resource ('Account profile') and enumerates its key contents (plan, allocated memory, limits, usage), making the operation clear despite lacking an explicit verb. The scope note 'account:read' and the tool name also help distinguish it from account-mutating siblings like update_profile and from resource-specific getters like get_workspace or get_database.

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

Usage Guidelines2/5

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

No explicit guidance is provided about when to use this tool versus related read tools such as get_metrics, get_workspace, or get_order_status. The content list implies it is for account-level profile information, but there are no stated alternatives, exclusions, or prerequisites.

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

get_workspaceA
Read-onlyIdempotent

Details of a workspace. (scope: workspaces:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds only the scope note ('workspaces:read') and does not describe return format or potential errors. With annotations covering most behavioral aspects, a 3 is appropriate.

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

Conciseness4/5

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

The description is a single concise sentence that gets straight to the point. No filler or redundancy. It is appropriately sized for a simple read operation.

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

Completeness4/5

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

For a one-parameter read-only tool with rich annotations (readOnly, idempotent, non-destructive), the description is sufficient. It does not explain return values, but no output schema exists and the tool is simple enough that an agent can infer the result. The description is complete enough for correct invocation.

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

Parameters3/5

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

The input schema has 100% coverage for the single 'id' parameter with a description 'Workspace ID'. The tool description does not add any additional meaning beyond the schema, so it meets the baseline for full schema coverage.

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

Purpose4/5

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

The description states the resource (workspace) and action (retrieve details) clearly, and the scope note adds context. It is distinguishable from list_workspaces which lists all workspaces. The verb 'Details' is slightly weak but still conveys the purpose unambiguously.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The sibling list_workspaces implies a distinction (list vs. single details), but the description does not explicitly state 'use this for a specific workspace' or mention any exclusions. Usage is implied but not spelled out.

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

list_action_requestsA
Read-onlyIdempotent

The workspace's action requests (delete app/database, create/restore snapshot). Approving or rejecting is dashboard-only. (scope: workspaces:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
statusNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the scope constraint (workspaces:read) and clarifies that approval/rejection actions are not available through this tool, which is useful 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.

Conciseness5/5

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

The description is two sentences with no wasted words. It front-loads the core purpose, then adds the critical behavioral constraint about dashboard-only approval/rejection, and ends with the scope annotation. Every sentence earns its place.

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

Completeness4/5

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

For a read-only listing tool with strong annotations (readOnlyHint, idempotentHint, destructiveHint), the description is largely complete. It could benefit from mentioning the return format or pagination, but the absence of an output schema and the simplicity of the tool make this a minor gap.

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

Parameters3/5

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

Schema description coverage is 50%, with the 'id' parameter documented in the schema. The description doesn't add detail about the 'status' parameter, but the schema provides an enum for it. The description's mention of action request types adds some context but doesn't fully compensate for the undocumented status parameter.

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

Purpose5/5

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

The description clearly states the tool lists action requests for a workspace, enumerates the types of action requests (delete app/database, create/restore snapshot), and explicitly notes that approving/rejecting is dashboard-only. This distinguishes it from sibling tools like create_action_request and list_snapshots.

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

Usage Guidelines4/5

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

The description implies this is for viewing action requests and explicitly states that approving/rejecting is dashboard-only, which tells the agent not to attempt those actions here. It doesn't explicitly name alternatives, but the context is clear enough for a read-only listing tool.

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

list_appsA
Read-onlyIdempotent

Lists the account's applications with the current status of each. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds meaningful context by specifying the 'apps:read' scope and promising current status per app. It doesn't discuss pagination or output shape, but the annotation coverage reduces the burden.

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

Conciseness5/5

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

One concise sentence with no filler. The action, resource, output detail, and scope are all front-loaded and each word earns its place.

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

Completeness4/5

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

For a no-parameter read-only listing tool, the description covers what is listed and what is included for each item. It doesn't specify return formatting or pagination, but the absence of an output schema and parameters makes this a minor gap.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so the baseline is 4. The description has no parameter details to add, and the scope string supplies relevant authorization context.

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

Purpose5/5

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

The description uses a specific verb ('Lists') and a specific resource ('the account's applications') and adds the key output detail ('current status of each'). This clearly separates it from siblings like list_workspaces, list_databases, and get_app.

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

Usage Guidelines4/5

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

The intended context is clear: use this to enumerate applications belonging to the account. It doesn't explicitly name alternative tools or state when not to use it, but for a zero-parameter list tool the usage is evident enough.

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

list_databasesA
Read-onlyIdempotent

Lists the account's databases with the status of each. (scope: databases:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds the scope 'databases:read' and confirms that status is included in the result, but does not describe pagination, ordering, or the exact status values returned.

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

Conciseness5/5

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

The description is a single, dense sentence followed by a scope indicator. It front-loads the core action and resource, adds the status detail, and contains no filler.

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

Completeness5/5

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

For a parameterless list tool with strong annotations, the description is sufficient. It tells the agent what will be listed and that status is included; no output schema exists, but the purpose and scope are fully clear for selecting and invoking the tool.

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

Parameters4/5

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

The input schema has no parameters, so the baseline is 4. The description adds no parameter information, but none is needed since calling this tool requires no arguments.

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

Purpose5/5

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

The description states a specific action ('Lists'), a clear resource ('the account's databases'), and an additional useful detail ('with the status of each'). It also includes the permission scope, making the tool's role immediately distinguishable from siblings like get_database or get_database_status.

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

Usage Guidelines4/5

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

The description clearly conveys the use case: to list all databases at the account level including their status. It does not explicitly name alternatives or exclusions, but for a list-all operation the context is straightforward and unlikely to be confused with singular database tools.

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

list_deploysC
Read-onlyIdempotent

The application's deploy history. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool is safe and non-mutating. The description adds little behavioral context beyond the annotations; it doesn't clarify what 'deploy history' includes or how it relates to deploys, but it doesn't 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.

Conciseness4/5

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

The description is one short sentence, front-loading the main purpose. The scope note is appended in parentheses, which is concise and does not waste words.

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

Completeness3/5

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

Given the tool has a simple purpose and no output schema, the description is minimally sufficient. However, it lacks detail on required parameters (id) and whether workspace_id is needed, and it doesn't mention any pagination or filtering options that might be expected for a 'list' tool.

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

Parameters3/5

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

Schema description coverage is 50%, meaning the 'id' parameter is described as 'Application ID' in the schema, but the 'workspace_id' parameter is not described. The description provides no additional parameter meaning, so it doesn't compensate for the gap, but the schema provides the core meaning.

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

Purpose3/5

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

The description states that this tool lists the application's deploy history, which is a clear verb-resource combination. However, it does not differentiate it from sibling tools like deploy_app or get_logs, and the scope note is minimal.

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

Usage Guidelines2/5

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

The description does not indicate when to use this tool versus alternatives, nor does it mention any required context such as the need for an app ID or workspace. The scope note (apps:read) is a signal but not explicit guidance.

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

list_envsA
Read-onlyIdempotent

Lists the NAMES of the application's environment variables. The value is never returned — no tool reads a variable's value. (scope: apps:envs)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only and non-destructive behavior, so the description adds value beyond them by revealing a key behavioral guarantee: values are never exposed by any tool, and the scope is apps:envs. This helps the agent avoid expecting secret values and rounds out the safety profile.

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

Conciseness5/5

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

Two short sentences front-load the purpose and the critical non-disclosure caveat, with a compact scope annotation at the end. Every word earns its place and there is no redundant filler.

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

Completeness4/5

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

For a simple, safe, read-only enumeration tool, the description covers the core behavior, the non-disclosure guarantee, and the scope; annotations handle the safety profile. The main gap is that workspace_id remains unexplained, so an agent cannot be fully certain when it is required, but the overall tool is still callable with the documented id.

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

Parameters2/5

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

The schema documents id as 'Application ID', but workspace_id has no description and the description does not clarify it. With only 50% schema description coverage, the description needed to compensate for the undocumented parameter, but it only restates the app-level scope without explaining when workspace_id is needed.

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

Purpose5/5

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

The opening sentence names a specific operation ('Lists the NAMES') on a clear resource ('application's environment variables'), and immediately distinguishes itself from value-returning or mutating env tools by stating values are never returned. This is enough to separate it from set_env/delete_env siblings.

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

Usage Guidelines4/5

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

The description clearly states when to use the tool: when you need the names of environment variables. It also gives a strong exclusion: values are never returned and no tool reads a variable's value, so the agent knows not to expect secrets. It does not explicitly name mutation alternatives like set_env/delete_env, but the guidance is otherwise clear.

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

list_filesB
Read-onlyIdempotent

Lists the files and folders of a directory in the application. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathNoPath inside the application (default: root)
workspace_idNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint, idempotentHint, non-destructive), so the description does not need to repeat that. It adds a bit of scoping context but reveals no extra behavioral traits such as recursion, pagination, hidden-file handling, or path semantics.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with the scope in parentheses. Every part earns its place, and there is no wasted wording.

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

Completeness3/5

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

For a simple read-only listing tool with rich annotations and partial schema coverage, the description is workable. However, the missing `workspace_id` semanticsermann and lack of any return/pagination details mean an agent must still infer some important behavior.

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

Parameters2/5

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

The schema already describes `id` and `path`, but `workspace_id` is undocumented and the description adds no parameter-level meaning. With 67% schema description coverage, the description could compensate for the missing parameter, but it does not.

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

Purpose4/5

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

The description states a clear verb ('Lists') and a specific resource ('files and folders of a directory'), with an application scope. However, it does not explicitly differentiate this from the sibling get_file_tree, which could also return directory contents, so it stops 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.

Usage Guidelines2/5

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 like get_file_tree or read_file. The parenthetical scope hint adds context but does not state exclusions, conditions, or which sibling tool should be selected instead.

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

list_membersB
Read-onlyIdempotent

The workspace's members and each one's role. (scope: workspaces:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the workspaces:read scope note and the fact that roles are included, but it does not disclose behavior such as pagination or how pending members/invites are treated.

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

Conciseness5/5

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

The description is a single efficient sentence that states the resource, the returned information, and the required scope. There is no filler or redundancy.

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

Completeness4/5

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

For a simple single-parameter read-only listing tool, the description, schema, and annotations together provide enough for an agent to invoke it correctly. It could mention what role values look like, but that is not necessary for the call itself.

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

Parameters3/5

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

The only parameter, 'id', is fully documented in the schema as 'Workspace ID', giving 100% schema description coverage. The tool description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description identifies the resource (workspace members) and the output (each member's role), which together with the tool name 'list_members' makes the purpose clear. It does not explicitly differentiate itself from siblings like list_roles or get_workspace, but the meaning is unambiguous.

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

Usage Guidelines2/5

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 such as list_roles, update_member, or get_workspace. The only contextual hint is the scope note, which is about permissions rather than usage conditions.

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

list_ordersC
Read-onlyIdempotent

The account's orders. (scope: billing:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds that the operation requires the 'billing:read' scope and that it returns only the account's orders, which is useful scoping context. It does not describe pagination behavior or response format, but the annotations carry the core safety information.

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

Conciseness4/5

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

The description is extremely brief and front-loaded, stating the core resource and scope in five words plus a scope tag. Every word earns its place, and it is not padded with boilerplate. However, the brevity borders on under-specification, which is why it does not score higher.

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

Completeness2/5

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

For a tool with one optional pagination parameter and no output schema, this description is insufficient on its own. It does not explain what a caller should expect in the response, how pagination works, or why the 'billing:read' scope matters. The annotations and parameter name fill some gaps, but an agent would still be uncertain about invocation details.

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

Parameters1/5

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

Schema description coverage is 0%, so the description bears the burden of explaining the 'page' parameter, but it does not mention it at all. The parameter name 'page' suggests pagination, but the description provides no details on default page size, starting index, or how to request subsequent pages. This is a significant gap given zero schema descriptions.

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

Purpose4/5

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

The description identifies the resource ('orders') and explicitly scopes it to the account, which distinguishes it from order-related siblings like create_order and get_order_status. However, it is phrased as a noun phrase rather than an action verb ('list'), relying on the tool name to convey the operation. It is clear enough but not as explicit as it could be.

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

Usage Guidelines2/5

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 such as get_order_status or list_plans. It offers only the auth scope 'billing:read', which is a permission requirement, not a usage trigger. An agent would have to infer the typical use case from the name and context.

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

list_plansA
Read-onlyIdempotent

Plans and prices, straight from the public knowledge base (not from a route).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish readOnly, idempotent, open-world, and non-destructive behavior. The description adds the useful context that data comes from the public knowledge base and not a live route, which helps set expectations about freshness and source. It does not describe output format or potential variations, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is extremely concise: one short sentence that front-loads the resource ('Plans and prices') and then provides source context. Every word earns its place, with no redundant elaboration.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool, the description covers the essential points: what is returned (plans and prices) and where it comes from (public knowledge base, not a route). It could mention the output shape, but the tool is simple enough that this is a minor gap.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter documentation burden on the description. The schema coverage is 100% by virtue of having no properties, and the description correctly adds no unnecessary parameter details.

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

Purpose4/5

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

The description identifies the resource clearly: plans and prices, sourced from the public knowledge base rather than a route. It does not use an explicit verb like 'list', but the tool name and phrasing make the action obvious. It is distinguishable from siblings since no other tool targets plans.

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

Usage Guidelines3/5

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

The phrase 'straight from the public knowledge base (not from a route)' gives some context on the data source and implicitly suggests this is for static/canonical pricing info. However, it does not name any alternative tool or specify when to prefer this over other tools, leaving usage to inference.

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

list_rolesB
Read-onlyIdempotent

The workspace's roles and each one's permissions. (scope: workspaces:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the description is not required to restate those. It does add the scope 'workspaces:read', which is useful permission context, and mentions that roles and their permissions are returned. However, it does not disclose pagination, ordering, or response format, which is a minor gap but acceptable given 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.

Conciseness4/5

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

The description is a single sentence with no redundancy, and it front-loads the core purpose. The scope note is appended effectively. It is concise and to the point, though it could optionally include a brief usage clause, but the current structure is efficient.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema) and the strong annotation coverage, the description is largely sufficient. It clarifies the resource and includes permission scope. However, it does not mention pagination or whether results are ordered, and it does not explicitly state that no workspace-specific filters apply. For a simple list operation, these are minor omissions, but they keep it from being fully complete.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter 'id', described as 'Workspace ID'. The description adds no additional meaning about the parameter beyond what the schema already provides. Since the schema is complete, a baseline of 3 is appropriate.

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

Purpose4/5

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

The description states the action ('list') and resource ('roles' within a workspace) clearly, and specifies that it includes each role's permissions. It is distinct from create_role, update_role, and delete_role, though it does not explicitly contrast itself with other list tools like list_workspaces. The purpose is unambiguous but not exemplary in differentiating among siblings.

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

Usage Guidelines2/5

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. It does not mention that it is read-only or that it should be used to view roles before modifying them. There is no mention of alternatives or conditions, so an agent must infer usage from the name and schema.

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

list_runtimesA
Read-onlyIdempotent

Languages and versions the platform accepts. (scope: apps:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds the useful auth scope '(scope: apps:read)' and clarifies that the tool returns platform-accepted language/version info. For a zero-parameter read operation this is adequate behavioral context.

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

Conciseness5/5

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

The description is a single efficient sentence followed by a parenthetical scope note. Every word carries meaning and there is no redundancy.

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

Completeness5/5

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

For a parameterless, read-only list operation, the description fully conveys what the tool returns and the required scope. No output schema exists, but the return value is obvious from the resource name and description, so the agent has enough to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters and the input schema is an empty object, so the schema fully documents everything. The description does not need to explain parameter behavior, and the baseline for a parameterless tool applies.

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

Purpose4/5

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

The description clearly identifies the resource as the languages and versions accepted by the platform. It is clear enough to distinguish this from sibling list tools like list_workspaces or list_apps, but it uses a noun phrase rather than an explicit verb, so it stops 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.

Usage Guidelines2/5

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

No guidance is given about when to call this tool versus alternatives, such as before creating an app or deployment. There is no mention of how the returned runtimes relate to create_app or deploy_app, and no exclusions are stated.

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

list_sessionsA
Read-onlyIdempotent

Open login sessions on the account (no IP or location). (scope: account:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context: that only open sessions are returned and that IP/location fields are not included, plus the account:read scope.

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

Conciseness5/5

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

A single concise sentence with no wasted words. The primary behavior is front-loaded, and the scope/limitation is appended efficiently.

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

Completeness4/5

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

For a zero-parameter, read-only listing tool, the description covers the essential behavior and scope. There is no output schema, but the return concept is straightforward; some detail about returned session fields could be added, but it is not necessary for correct invocation.

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

Parameters4/5

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

The tool has zero parameters and an empty schema, so the description does not need to explain parameter meaning. The baseline for no parameters is 4, and the description correctly implies no inputs are required.

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

Purpose5/5

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

The description clearly states the action ('list') and resource ('open login sessions') with account scope, and adds a meaningful limitation ('no IP or location'). It distinguishes this from account/user management siblings by focusing specifically on login sessions.

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

Usage Guidelines3/5

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

The description implies when to use it: when you need the account's open login sessions. However, it does not explicitly explain when not to use it or reference any alternative tool. Since there are no sibling tools for sessions, this is acceptable but not fully explicit.

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

list_snapshotsA
Read-onlyIdempotent

Snapshots of a resource; without resource_id, snapshots of every resource of that type. (scope: snapshots:read)

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesResource type
resource_idNoApplication or database ID

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds useful context beyond those annotations by explaining that omitting resource_id changes the result set to all resources of the type and that the operation requires snapshots:read permission. It does not go into pagination or output format, but for a simple read-only list tool this is sufficient.

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

Conciseness5/5

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

The description packs the essential behavior into a single concise sentence, front-loading the core purpose and then clarifying the optional parameter's effect. There is no filler or repetition of schema information.

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

Completeness4/5

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

For a two-parameter read-only listing tool with strong annotations and full schema coverage, the description is adequately complete. It does not describe the return format or pagination, but the absence of an output schema is less critical here because the purpose and scoping behavior are clearly stated.

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

Parameters4/5

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

The input schema already documents both parameters with 100% coverage, but the description adds meaningful semantics: resource_id is optional and its absence changes the query scope. The parenthetical '(scope: snapshots:read)' could be slightly confusing since a required parameter is also named scope, but the schema's enum makes it clear that the parameter is a resource type, not a permission scope.

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

Purpose4/5

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

The description clearly indicates that the tool returns snapshots and distinguishes the scoping behavior: either a single resource's snapshots or all snapshots of a given resource type when resource_id is omitted. It lacks an explicit verb like 'list', but the tool name and content make the purpose unambiguous.

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

Usage Guidelines4/5

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

The description gives clear context for when to use this tool: to retrieve snapshots for one resource or for all resources of a type, with the optional resource_id behavior explicitly stated. It does not mention alternatives like create_snapshot or download_snapshot, but the intent is obvious from the sibling tool names and the read-only scope.

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

list_workspace_invitesA
Read-onlyIdempotent

The workspace's invites (pending and past). Creating an invite is dashboard-only. (scope: workspaces:invites)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID

TDQS

A3.8/5.0
Behavior4/5

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

Annotations provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint all safe. The description adds the crucial behavioral context that creating invites is dashboard-only (not via API), which informs the agent that this tool is purely observational. It also implies invites include both pending and past states, which is beyond what annotations convey. No contradiction with annotations.

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

Conciseness5/5

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

The description is extremely concise at two sentences, front-loading the purpose. Every sentence serves a purpose: the first defines scope (pending and past) and the second clarifies creation is not possible via this tool. No waste.

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

Completeness4/5

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

Given the tool is a simple list with a single parameter and annotations defining safety, the description covers the essential purpose and limitation. It doesn't describe return values (no output schema but that's not required), or pagination/ordering, but for a straightforward list tool it's arguably adequate. Minor gap: no mention that invites are workspace-scoped, but the description says 'workspace's invites' so that's covered.

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

Parameters3/5

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

The schema covers 100% of parameters with id described as 'Workspace ID', so baseline is 3. The description doesn't add any additional semantic meaning beyond what the schema provides. It doesn't clarify the format or constraints of id, but the schema is adequate.

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

Purpose4/5

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

The description clearly states the tool lists invites (pending and past) for a workspace, with the resource being workspace invites. It distinguishes itself from invite-related mutation tools (create, revoke, preview, accept, decline) by noting creation is dashboard-only, but it doesn't explicitly differentiate from other list tools like list_members or list_apps, though the resource name is self-explanatory.

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

Usage Guidelines3/5

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

The description implies usage for viewing invites, and the note about creation being dashboard-only hints at when NOT to use this tool (for creating invites). However, it doesn't explicitly state when to use this over alternatives like list_members or provide conditions for when to call it. The scope note adds context but no explicit routing to siblings.

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

list_workspacesA
Read-onlyIdempotent

Workspaces the account is a member of. (scope: workspaces:read)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive behavior, so the description is not responsible for that. It adds the useful membership filter and OAuth scope, but does not disclose response shape or pagination behavior.

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

Conciseness5/5

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

One short sentence conveys the resource, membership scope, and required OAuth scope with no filler or repetition.

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

Completeness4/5

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

For a zero-argument read-only list operation, the description is nearly complete: it names the resource, the account-membership filter, and the permission scope. It stops short of describing the returned workspace objects or pagination, but given the low complexity and rich annotations this is a minor gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to explain beyond the empty schema. This is the 0-parameter baseline.

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

Purpose4/5

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

The description identifies the resource (workspaces) and adds the membership scope: it returns workspaces the account belongs to, not all workspaces. It is not a tautology and is distinguishable from get_workspace, though it lacks an explicit verb like 'list'.

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

Usage Guidelines2/5

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

No guidance is given about when to call this tool instead of get_workspace or other workspace-related siblings. The only usage clue is the scope note, which states access requirements but not selection criteria or exclusions.

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

move_fileA

Moves or renames a file inside the application. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
toYesNew path
fromYesCurrent path
workspace_idNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already convey that the tool is read-write, non-idempotent, and non-destructive. The description adds useful scope context ('inside the application') and clarifies that the operation covers both moves and renames, but it does not disclose additional behaviors such as overwrite semantics, target-existing behavior, or failure conditions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every element earns its place, and the parenthetical scope note is compact and useful.

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

Completeness3/5

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

For a simple file-move tool with clear parameter names and 75% schema coverage, the description is minimally viable. However, it leaves gaps: no return format is unknown since there is no output schema, workspace_id semantics are not explained, and conflict/overwrite behavior is not addressed.

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

Parameters3/5

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

Schema description coverage is high at 75%: id, from, and to each have descriptions, so the schema carries most of the parameter meaning. The description adds little beyond restating the move/rename concept and does not compensate for the undocumented workspace_id parameter, keeping this at baseline.

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

Purpose5/5

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

The description states a specific action ('Moves or renames a file') and scopes it to 'inside the application,' clearly distinguishing it from sibling file operations like read_file, write_file, upload_files, and delete_file. The action is specific enough that an agent can tell this tool apart from alternatives without inspecting the schema.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose move_file over related siblings such as write_file, upload_files, or delete_file. There are no exclusions, preconditions, or alternative-routing instructions, leaving the agent to infer usage context from the action alone.

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

preview_workspace_inviteA
Read-onlyIdempotent

Shows which workspace and role an invite leads to, before accepting it. (scope: workspaces:invites)

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesInvite token (the final part of the link)

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint, idempotentHint, and non-destructive behavior, so the description only needs to add context beyond that. It adds useful context: the tool previews destination workspace and role, and is intended for pre-acceptance inspection. This is meaningful behavioral context without contradicting annotations.

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

Conciseness5/5

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

The entire description is a single focused sentence with a parenthetical scope note. It is front-loaded with the action and outcome, contains no filler, and every part adds value.

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

Completeness5/5

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

For a simple one-parameter, read-only preview tool, the description is complete: it states what the tool returns conceptually (workspace and role), when to use it (before accepting), and the scope. No output schema exists, but the return concept is clearly communicated.

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

Parameters3/5

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

Schema description coverage is 100%, and the token parameter is already well described as 'Invite token (the final part of the link)'. The description adds no parameter-level detail beyond the schema, which aligns with the baseline 3 when the schema already carries the semantic burden.

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

Purpose5/5

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

The description uses a specific verb ('Shows') and identifies the precise resource being previewed: the workspace and role an invite leads to. It also signals the temporal context (before accepting), which distinguishes it from accept_workspace_invite, decline_workspace_invite, and revoke_workspace_invite.

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

Usage Guidelines4/5

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

The phrase 'before accepting it' gives clear situational guidance on when this tool should be invoked. It does not explicitly name alternative tools or state when not to use it, but the contrast with accept/decline/revoke invite operations is strongly implied by the wording and sibling list.

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

publish_appC
Idempotent

Publishes the application on the web (public subdomain). (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
subdomainNo
workspace_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false, covering the mutation and safety profile. The description adds the observable outcome of making the app public via a subdomain, but does not disclose preconditions, effects on an existing deployment, or the need to unpublish to revert.

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

Conciseness4/5

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

The description is a single efficient sentence with no filler, and the core verb and resource are front-loaded. The parenthetical scope is minor but acceptable; no waste.

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

Completeness2/5

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

For a 3-parameter mutation tool with no output schema and numerous closely related siblings (set_subdomain, unpublish_app, deploy_app), the description is too terse. It omits preconditions, behavior when already published, the role of workspace_id, and how to revert, leaving the agent under-informed for correct invocation.

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

Parameters2/5

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

Schema description coverage is only 33%; only 'id' is documented. The description names 'subdomain' in the parenthetical, giving slight semantic context, but 'workspace_id' remains entirely unexplained. The description does not compensate for the low parameter coverage.

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

Purpose4/5

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

The description states a specific verb ('Publishes'), resource ('the application'), and destination ('web (public subdomain)'), which clearly distinguishes it from unpublish_app and set_subdomain. It does not explicitly contrast with deploy_app or start_app, but the public exposure focus is clear.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use publish_app versus closely related siblings such as unpublish_app, set_subdomain, or deploy_app. It lacks conditions, exclusions, or prerequisite context to help the agent choose correctly.

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

purge_cacheC

Clears the application's edge cache. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathsNo
hostnamesNo
workspace_idNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate readOnly=false, idempotent=false, destructive=false, and openWorld=true. The description adds the auth scope 'apps:write' but does not disclose side effects such as cache propagation delays, impact on subsequent requests, or whether the operation is reversible. It is a minimal addition beyond annotations, so a mid-range score is appropriate.

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

Conciseness3/5

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

The description is short, front-loaded, and free of fluff, which is good. However, for a tool with four parameters and no output schema, one sentence is under-specified rather than appropriately concise, and no additional prose is provided to guide invocation.

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

Completeness2/5

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

The description gives only the core operation and scope, leaving out return values, optional filtering behavior, and any caveats about what clearing the edge cache means operationally. An agent can understand the high-level purpose but lacks critical details needed for correct invocation, especially around the undocumented parameters.

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

Parameters1/5

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

Schema description coverage is only 25%; only 'id' has a description, while 'paths', 'hostnames', and 'workspace_id' have none. The description does not explain how these parameters control the cache purge, such as filtering by path or hostname, or scoping to a workspace. With such low schema coverage, this is a significant gap.

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

Purpose5/5

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

The description states a specific action ('Clears') on a specific resource ('the application's edge cache'), clearly distinguishing this tool from its siblings, none of which mention cache clearing. It is not a tautology or vague restatement of the name.

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

Usage Guidelines2/5

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, no mention of prerequisites, and no context about typical scenarios like invalidating stale content after a deploy. The parenthetical scope note gives an access requirement but does not help an agent decide when to call the tool.

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

read_fileA
Read-onlyIdempotent

Reads a file from the application. Text comes back readable; binary comes back as base64 with encoding: "base64". (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathYesPath of the file inside the application
workspace_idNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds genuinely useful behavioral context beyond that: binary content returns as base64 with an 'encoding' field, and the scope is apps:files. This informs the agent about response shape and resource domain without contradicting annotations.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action is in the first sentence, followed by the behavioral encoding note and scope. Every sentence earns its place, with no redundant filler.

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

Completeness4/5

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

For a simple read operation, the core behavior is covered, including text versus binary return handling. The main gaps are the undocumented workspace_id parameter and absence of error/not-found behavior, but these are relatively minor given the strong annotations and the simple read-only nature of the tool.

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

Parameters3/5

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

Schema coverage is 67%, with id and path described in the schema. The description adds no parameter-level meaning and does not help clarify the undocumented optional workspace_id property. It also does not explain how path should be formatted or how workspace_id relates to the other parameters.

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

Purpose5/5

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

The description names a specific verb and resource ('Reads a file from the application') and adds distinguishing details: text is returned readable while binary is base64-encoded. The scope note '(scope: apps:files)' further disambiguates it from file-related siblings like list_files, write_file, and delete_file.

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

Usage Guidelines3/5

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

Usage is implied by 'Reads a file' and the scope note, but the description does not explicitly state when to choose this tool over alternatives such as list_files, get_file_tree, or write_file. There is no exclusion or sibling routing guidance.

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

redeem_codeB

Redeems a promotional code on the account. (scope: redeem:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already cover read-only=false, idempotent=false, and destructive=false. The description adds the 'redeem:write' permission scope, which is useful, but it does not disclose the key side effects of redemption, such as the code being consumed, one-time use, or account balance/credit changes.

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

Conciseness5/5

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

One short sentence that conveys the core purpose and the required permission scope. No redundant words or filler.

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

Completeness2/5

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

For a simple tool this is minimally adequate, but with no output schema and no description of what happens after redemption (confirmation, side effects, error cases), the agent is left to infer important consequences of the action.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden. It clarifies that 'code' refers to a promotional code, but adds no format, length, examples, or validation information beyond the schema's bare string type.

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

Purpose5/5

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

States a specific verb ('Redeems'), a specific resource ('promotional code'), and the target ('on the account'). The tool is clearly distinguishable from all siblings, none of which involve redeeming codes.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance, and no alternatives are referenced. Usage is fairly implied by the name and description, but the description does not mention prerequisites like account eligibility or whether codes must be unexpired.

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

remove_app_from_workspaceA
Idempotent

Takes an application out of the workspace and returns it to the owning account. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
app_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, and non-destructive; the description adds meaningful context by stating the app returns to the owning account and gives the required scope (workspaces:write). It does not fully describe downstream consequences, but for this simple mutation the annotations carry the safety profile.

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

Conciseness5/5

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

One tight sentence with the core behavior front-loaded, plus a parenthetical scope note. There is no fluff or repetition of existing schema information.

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

Completeness4/5

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

For a two-parameter workspace operation with annotations covering safety and idempotency, the description is nearly sufficient: it states action, outcome, and required scope. It would be more complete with an explicit pointer to delete_app/unpublish_app for contrast, but no critical calling information is missing.

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

Parameters2/5

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

Schema coverage is only 50%: app_id has no schema description. The tool description adds no parameter-level detail, so the missing app_id semantics are not compensated. id is documented, but app_id must be inferred from naming and context.

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

Purpose5/5

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

Description names a specific action (removes an application from workspace) and a distinct result (returns it to owning account). This differentiates it from siblings such as remove_database_from_workspace and delete_app.

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

Usage Guidelines3/5

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

The description implies this tool is for workspace-membership removal rather than app deletion, but never explicitly says when to choose it over delete_app/unpublish_app or the sibling remove_database_from_workspace. There is no when-not guidance or alternative mention.

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

remove_custom_domainA
Destructive

Removes the application's custom domain; whoever accessed it through that domain stops reaching it. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already mark the tool as destructive and not read-only, so the description correctly aligns with those. It adds meaningful behavioral context beyond the annotations by stating the user-facing impact: existing access through that domain stops working. This is useful context that the annotations alone do not provide.

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

Conciseness5/5

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

The description is a single, tight sentence that front-loads the core action and follows with the operational consequence. It also appends the required scope compactly. Every element earns its place with no redundant phrasing.

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

Completeness4/5

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

For a simple destructive tool, the annotations provide the safety profile and the description explains the immediate effect on users. The main gap is the unspecified optional workspace_id parameter and lack of guidance for edge cases like removing a non-existent domain, but the core call context is adequately covered.

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

Parameters2/5

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

Schema description coverage is only 50%: 'id' is documented as Application ID, but 'workspace_id' has no description. The tool description does not clarify the role of workspace_id or how it relates to the custom domain removal, leaving a meaningful parameter gap for the agent.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Removes the application's custom domain.' It clearly states the action and adds a concrete consequence ('whoever accessed it through that domain stops reaching it'), which disambiguates it from sibling tools like set_custom_domain.

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

Usage Guidelines3/5

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

The description implies the tool should be used when a custom domain needs to be disassociated from an app, and the scope 'apps:write' hints at authorization context. However, it does not explicitly contrast with alternatives such as set_custom_domain, nor state any exclusions or prerequisites, so usage guidance is only 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.

remove_database_from_workspaceB
Idempotent

Takes a database out of the workspace and returns it to the owning account. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
database_idYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds the key behavioral detail that the database is returned to the owning account rather than deleted, which is valuable context beyond the annotations. However, it does not disclose side effects like whether the database becomes unavailable or if connected apps are affected.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the core action and outcome. The scope annotation '(scope: workspaces:write)' is a minor addition but not redundant. It earns its place without unnecessary detail.

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

Completeness3/5

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

For a two-parameter tool with no output schema, the description is mostly adequate. It explains the operation's effect and the scope. However, it does not clarify what happens to the database after removal (e.g., is it still accessible in the owning account immediately?) or whether the operation is reversible via add_database_to_workspace. These gaps are minor but present.

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

Parameters3/5

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

Schema description coverage is 50%: 'id' is documented as 'Workspace ID' but 'database_id' has no description. The description clarifies the overall operation but does not add meaning for the undocumented database_id parameter beyond its name. Baseline 3 is appropriate since the schema covers half the parameters and the description partially compensates.

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

Purpose4/5

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

The description clearly states the action ('Takes a database out of the workspace') and the destination ('returns it to the owning account'), which distinguishes it from related tools like remove_app_from_workspace or delete_database. It lacks an explicit verb like 'removes' but the meaning is unambiguous.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for removing a database from a workspace, and the sibling list includes add_database_to_workspace as the inverse operation. However, it does not explicitly state when to use this versus delete_database or other removal tools, nor does it mention prerequisites like ownership or permissions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_memberA
Destructive

Removes a member from the workspace; they lose access immediately. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
user_idYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses a key behavioral consequence beyond the annotations: the member loses access immediately, which is useful for an agent deciding or explaining impact. This aligns with destructiveHint=true and readOnlyHint=false, and the scope note adds authorization context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with an essential consequence and a scope note; every part contributes information. There is no repetition of the tool name or schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity two-parameter destructive action, the description covers what happens, the immediate effect, and the required scope. It does not explain error cases or reversibility, but annotations already flag destructive behavior and no output schema is expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema coverage at only 50%, the description partially compensates by implying that user_id identifies the member being removed while id is the workspace. It does not explicitly define user_id format, ownership, or constraints, so it does not fully close the gap left by the empty schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it 'removes a member from the workspace,' and adds the meaningful consequence that access is lost immediately. This clearly distinguishes it from sibling tools like remove_app_from_workspace, update_member, and delete_workspace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied by the verb and resource, and the parenthetical scope tells the agent it needs workspaces:write permissions. However, it does not explicitly name alternatives or state when not to use it, such as pointing to update_member for role changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_personal_resource_from_folderA
Idempotent

Removes an application or database from a personal folder, without deleting the resource. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesFolder ID
resource_idYes
resource_typeYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the operation is not read-only, is idempotent, and is not destructive. The description adds value by specifying that the resource itself is not deleted, and by noting the required 'account:write' scope. This gives useful behavioral context beyond the structured 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, the target, and the non-destructive nature, followed by a compact scope note. There is no filler or redundant information; every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a relatively simple mutation tool with three required parameters and no output schema, the description covers the essential purpose, non-destructive behavior, and required permission. It does not describe return values or error cases, but those are less critical given the simple operation and existing annotations. The main missing piece is explicit guidance on preconditions such as the resource already being in the folder.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description carries extra responsibility. It clarifies that resource_type can be an application or database and implies folder_id selects the personal folder and resource_id selects the item, but it does not explain the relationship between these IDs or provide format details. This partially compensates for the low schema coverage but leaves some ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Removes') and a precise resource ('an application or database from a personal folder'), and clarifies the operation does not delete the resource. It clearly distinguishes this from related tools like remove_workspace_resource_from_folder by specifying 'personal folder' and from deletion tools by stating 'without deleting the resource'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: removing an application or database from a personal folder. It does not explicitly name alternatives or exclusions, but the phrase 'personal folder' and the sibling set imply that workspace-folder operations belong to remove_workspace_resource_from_folder. The guidance is clear but not fully explicit 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.

remove_workspace_resource_from_folderA
Idempotent

Removes an application or database from a workspace folder, without deleting the resource. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
folder_idYesFolder ID
resource_idYes
workspace_idYesWorkspace ID
resource_typeYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=false, idempotentHint=true), the description adds the auth scope 'workspaces:write' and reiterates that the resource is not deleted, which clarifies the mutation's side-effect boundary. It does not repeat annotation information, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with the core action front-loaded, followed by a parenthetical scope note. Every word is purposeful; no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 4 required parameters, no output schema, and one undocumented parameter (resource_id), the description is adequate but not complete. It leaves the agent to infer what resource_id refers to and what happens if the resource is not in the folder. The sibling list provides some context, but the description itself could be more instructive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (workspace_id and folder_id have descriptions, resource_id and resource_type do not). The description partially compensates by naming the resource types ('application or database') and the folder context, but it leaves 'resource_id' undefined and does not explain how it maps to the application or database. Additional semantics are minimal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Removes'), a specific resource ('application or database from a workspace folder'), and explicitly clarifies non-destructive behavior ('without deleting the resource'). This distinguishes it from siblings like remove_app_from_workspace (which removes from the workspace entirely) and remove_personal_resource_from_folder (personal folder context).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (removing a resource from a folder without deleting it) but does not explicitly contrast it with alternative tools like remove_app_from_workspace or remove_database_from_workspace, nor mention prerequisites (e.g., resource must exist in the folder). No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_certificateA
Destructive

Issues a new certificate for the database. Anyone using the old certificate stops being able to connect. (scope: databases:credentials)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive behavior, and the description adds valuable specifics: anyone using the old certificate stops being able to connect. It also states the required scope, giving more context than the annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus a scope tag, with the main action and key consequence front-loaded. There is no filler or redundant restating of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core behavior and destructive side effect are clear, and the annotations cover risk. However, with no output schema, it does not indicate what the call returns (e.g., the new certificate), and it leaves workspace_id's role unclear. It 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.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 'id' has a schema description ('Database ID'), while 'workspace_id' is undocumented. Since schema coverage is 50%, the description needed to compensate for the undocumented parameter, but it adds no parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Issues') and resource ('new certificate for the database') and clarifies the consequence for existing connections. The parenthetical scope 'databases:credentials' helps distinguish it from broader database operations like reset_database or reset_credentials.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when a new certificate is needed and old connections must be invalidated), but it does not explicitly mention alternatives or when not to use it. No exclusion guidance is provided relative to the many sibling database tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_credentialsA
Destructive

Generates a new password for the database and returns it. Anyone connected with the old password gets disconnected. (scope: databases:credentials)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as destructive and non-read-only, but the description adds meaningful behavior beyond them: it returns the new password and forcibly disconnects anyone using the old password. This is exactly the kind of side-effect disclosure an agent needs before invoking a destructive credential reset.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the core action appears in the first sentence, the key side effect in the second, and the scope is a short parenthetical. No filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool, the description covers the action, the return value, and the major side effect. It lacks explicit permission guidance and does not explain workspace_id, but the annotations and scope note carry enough context for most invocation scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: id is described as 'Database ID', but workspace_id has no description. The tool description does not compensate by explaining what workspace_id does or whether it is required for scoping, leaving an invocation-relevant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generates a new password for the database and returns it.' It also adds the disconnecting side effect, which clearly distinguishes it from siblings like reset_database and reset_certificate. The scope marker 'databases:credentials' further anchors what the tool operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for credential rotation or recovery, and the side effect of disconnecting old sessions gives useful context. However, it does not explicitly state when to prefer this over reset_database or reset_certificate, and there are no exclusions or alternative-routing cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reset_databaseA
Destructive

DELETES ALL DATA in the database and leaves it empty. There is no way to undo this without a snapshot. (scope: databases:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavior beyond the destructiveHint annotation: it states all data is deleted, the database is left empty, and the operation is irreversible without a snapshot. It also discloses the required permission scope, giving the agent a clear risk profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, direct, and front-loads the most critical fact: all data will be deleted. The irreversible warning and scope note are placed immediately after, with no filler or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with no output schema, the essential operational context is present: what gets destroyed, the empty end-state, irreversibility, and permission scope. The main gap is not documenting workspace_id, but the required behavior is otherwise adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, with workspace_id left undocumented. The description adds no detail about either parameter, so it does not compensate for the missing workspace_id semantics. id is minimally described as 'Database ID' in the schema, but the description repeats nothing about how parameters relate to the operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise operation: reset the database by deleting all data and leaving it empty. It clearly differentiates from the sibling delete_database by emphasizing the database itself remains, just emptied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance about when to use reset_database versus alternatives like delete_database, create_snapshot, or restore_snapshot. The snapshot warning implies a precaution, but the description does not direct the agent to create a snapshot first or choose this tool over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restart_appA

Restarts the application. reinstall_dependencies reinstalls dependencies from scratch (ignoring the install cache); force_build runs the build command again even without a code change. Both count as a deploy against the plan's hourly limit. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
force_buildNoRun the build command again even without a change
workspace_idNoID of the workspace that owns the resource, if any
reinstall_dependenciesNoReinstall dependencies from scratch

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations establish that this is mutating and non-idempotent, so the description does not need to restate that. It adds value by disclosing that reinstall_dependencies and force_build each count as a deploy against the plan's hourly limit, and by clarifying the build cache behavior. This goes beyond what the annotations already communicate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying useful information: the action, the two flags, and the cost implication. No filler is present, and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter restart action with no output schema, the description covers what the tool does, what the toggle flags do, and a plan-level side effect. Missing return-value details are not necessary for selecting or invoking it correctly, and the scope is included. It is sufficiently complete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all four parameters, so the baseline is 3. The description goes further by giving the two booleans operational semantics (ignoring install cache, rerunning the build without a code change) and their cost consequence. id and workspace_id are already self-descriptive, so no extra explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with 'Restarts the application,' a specific verb+resource that is distinct from start_app/stop_app. It clearly conveys the operation but never explicitly differentiates itself from those sibling tools, so it stops short of a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No sentence states when to choose restart over start_app/stop_app/deploy_app. The only contextual cue is the cost note about the hourly deploy limit, which provides no alternative routing. Usage is left mostly implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_snapshotA
Destructive

Restores a snapshot OVER the resource: the current content is replaced. (scope: snapshots:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeYesResource type
target_idNoRestore into a different resource
resource_idYesApplication or database ID
snapshot_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the description's emphasis on replacing current content adds useful context. It also notes the required scope (snapshots:write), which is beyond annotations. However, it doesn't mention irreversible data loss or whether the operation is atomic, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, terse sentence that front-loads the core behavior (replaces current content) and includes the scope requirement. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the description is clear, for a destructive operation with no output schema, it could state what happens to the target resource, whether a snapshot of the current state is taken before overwrite, and any prerequisites (e.g., existing snapshot). Given the complexity, this is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, with scope and resource_id documented. The description adds nothing about snapshot_id or target_id, but they are self-explanatory. The description does clarify the destructive nature of the operation, but the schema already covers the basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Restores') and the resource ('snapshot OVER the resource'), and explicitly notes that current content is replaced. It distinguishes itself from related snapshot tools like create_snapshot and download_snapshot, though it could be more specific about the replace semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is a destructive restore operation, but does not explicitly state when to use it or when not to. It mentions the scope parameter but does not guide the agent on choosing between applications and databases or when to use target_id. No explicit alternatives are named, though the sibling list includes reset_database which might be a related alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revoke_workspace_inviteA
Destructive

Revokes a pending workspace invite; the link or email stops working. (scope: workspaces:invites)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
invite_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the description does not need to restate those. It adds useful context that the invite link/email stops working and that it applies to pending invites. However, it does not disclose what happens if the invite is already accepted, whether the operation is reversible, or whether it requires special permissions beyond the scope note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise sentence that front-loads the action and effect, followed by a brief scope note. Every word earns its place; there is no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter destructive action, the description plus annotations cover the core behavior: it revokes a pending invite and is destructive. However, with no output schema and no guidance on error cases (e.g., already-accepted invite, invalid invite_id) or how to find invite_id, an agent may still be uncertain in edge cases. The missing invite_id documentation is the main gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: 'id' is documented as 'Workspace ID' but 'invite_id' has no description. The tool description does not explain the relationship between the two parameters or how to obtain invite_id. With only half the parameters documented, the description should compensate more but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Revokes') and resource ('pending workspace invite'), and clarifies the effect ('the link or email stops working'). It is clear enough to distinguish from sibling invite tools like list_workspace_invites, preview_workspace_invite, accept_workspace_invite, and decline_workspace_invite, though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: it should be used when a pending invite must be canceled. It does not explicitly state when not to use it or name alternatives such as decline_workspace_invite (for the invitee) or remove_member (for existing members). The scope note '(scope: workspaces:invites)' gives some context but no direct comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_custom_domainB
Idempotent

Points a custom domain to the application. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
domainYes
workspace_idNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation as non-read-only, idempotent, and non-destructive; the description adds the apps:write authorization requirement. However, it does not disclose side effects such as whether an existing custom domain is replaced or whether DNS verification is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence plus a scope note, with no filler or redundancy. The core action is front-loaded and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating tool with three parameters and no output schema, this is under-specified. `domain` format and `workspace_id` are unexplained, and no relationship to set_subdomain or remove_custom_domain is given, so an agent may struggle to invoke it correctly in a real workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, and the description does not compensate: `domain` has no format explanation, `workspace_id` is completely unexplained, and the description only loosely maps to the `domain` parameter. An agent gets little help constructing a correct call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete action ('points a custom domain') and a target ('the application'), and the scope parenthetical gives useful permission context. It is clear, though it does not explicitly differentiate from sibling tools like set_subdomain or remove_custom_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'custom domain' implicitly suggests this tool is for external domain mapping rather than the sibling set_subdomain, but the description never states when to choose this tool or mentions alternatives. No prerequisites or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_envA
Idempotent

Creates or overwrites an application environment variable. The response confirms the key, without echoing the value. (scope: apps:envs)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
keyYesVariable name
noteNoFree-form description
valueYesVariable value
workspace_idNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly=false, idempotent=true, and destructive=false. The description adds meaningful behavioral detail beyond annotations by revealing the overwrite semantics and by stating the response confirms the key without echoing the value, which is important security-relevant behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence plus a short scope parenthetical. Every element earns its place, and the core behavior is front-loaded before the response detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with strong annotations and high schema coverage, the description covers the essential behavior and response characteristics despite the lack of an output schema. It could additionally explain the optional workspace_id role, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, and the schema already documents id, key, note, and value clearly. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Creates or overwrites an application environment variable') and clearly differentiates this from siblings like list_envs and delete_env by its write semantics. The parenthetical scope further anchors the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to invoke this tool: whenever an application environment variable needs to be created or updated. It does not explicitly name alternatives or state when not to use it, but the intent is unambiguous and no exclusions are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_subdomainB
Idempotent

Changes the application's public subdomain. Who is allowed to pick the name is determined by the plan. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
subdomainYes
workspace_idNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a write operation that is idempotent and non-destructive. The description adds useful context about plan-based authorization and scope, but it does not disclose side effects like subdomain propagation, old URL invalidation, or validation behavior. No contradiction with 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. The second sentence adds meaningful plan-dependent context without excessive detail. It earns full marks for conciseness, though it could be more informative without becoming wordy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple mutation tool, and the description covers the basic operation and an authorization caveat. However, it omits what happens after the change, how success is communicated, and details on the remaining parameter. Given the sparse schema coverage and lack of an output schema, the description is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description does little to compensate. It implies that subdomain is the name being changed, but it does not clarify the id parameter beyond the schema's 'Application ID', nor does it explain the optional workspace_id parameter or any subdomain format constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Changes the application's public subdomain') and identifies the resource being mutated. It does not explicitly differentiate from the sibling set_custom_domain, so the purpose is clear but not maximally distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that plan-level permissions determine who can choose the name, which is a useful condition. However, it gives no guidance on when to use this tool versus set_custom_domain or any other sibling, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_appA
Idempotent

Turns the application on. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNoID of the workspace that owns the resource, if any

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutating, non-destructive, idempotent operation, and the description does not contradict them. The extra '(scope: apps:write)' adds useful auth-context, but no other behavioral detail such as side effects, async behavior, or state transitions is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with the permission scope in parentheses. It contains no filler and every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple start operation, the description plus annotations cover the core action and required scope, but it leaves out how this relates to siblings like restart_app or what state change the app must be in. It is minimally viable yet missing some lifecycle context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both the required application id and optional workspace_id. The description itself adds no additional parameter-level meaning, landing at the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Turns the application on'), which clearly identifies the operation as starting an app rather than stopping or restarting it. It is not a tautology, but it does not explicitly distinguish itself from lifecycle siblings such as restart_app.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this tool when the goal is to turn an application on. It names no alternative tools or conditions for choosing restart_app, stop_app, or publish_app instead, so the guidance is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_databaseB
Idempotent

Turns the database on. (scope: databases:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that this is a non-readonly, non-destructive, idempotent operation. The description adds the 'databases:write' scope, which is useful, but it does not disclose startup behavior, whether the call is asynchronous, or what happens if the database is already running. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, with no wasted words. The scope parenthetical is a useful addition. However, the extreme brevity edges toward under-specification rather than efficient completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a state-changing operation with no output schema and one undocumented parameter. The description does not mention how to confirm the database started, whether startup is synchronous, or how to handle an already-running database. Referencing sibling tools like get_database_status would have improved completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: 'id' is documented as 'Database ID', but 'workspace_id' has no description. The description itself adds no parameter meaning, so it does not compensate for the undocumented optional parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Turns the database on'), which clearly identifies the operation. It is easily distinguished from sibling tools like stop_database, reset_database, and start_app, and the scope annotation adds useful context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention related tools like stop_database for stopping or get_database_status for verifying the start, nor does it state any preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_appB
Idempotent

Turns the application off. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNoID of the workspace that owns the resource, if any

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide safety traits (idempotent, non-destructive, non-read-only), so the description only needs to add context beyond those. The added 'scope: apps:write' conveys an authorization requirement, which is useful. It does not describe the effect on the app's state beyond the obvious, but it does not contradict the annotations either.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence plus a parenthetical scope note, which is concise and front-loaded. Every element earns its place and there is no filler. It could be more detailed without becoming bloated, but as written it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has a clear action and scope, and the annotations cover idempotency, destructiveness, and read-only behavior. Missing context includes what 'off' implies (e.g., ceases running, does not delete data) and any relation to start/restart, but the current description is adequate for a simple stop operation with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'id' described as 'Application ID' and 'workspace_id' as 'ID of the workspace that owns the resource'. The tool description adds no extra parameter-level meaning, so it sits at the baseline of 3. The description's 'Turns the application off' references the id but gives no format or behavioral detail beyond the schema names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Turns the application off'), clearly identifying the operation on an app. It is clear on its own and does not need sibling differentiation because the name and behavior are unambiguous. It lacks an explicit statement of what 'off' means in system terms (e.g., stops a running app), which prevents full clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 stop_app versus related siblings like start_app or restart_app. The only hint is the appended scope ('apps:write'), which indicates permission but not usage conditions. There is no mention of alternatives or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_databaseA
Idempotent

Turns the database off. (scope: databases:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
workspace_idNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=true, covering safety and idempotency. The description adds the scope 'databases:write,' which is useful context for permissions. It does not contradict annotations and provides a clear behavioral statement, though it does not elaborate on side effects (e.g., whether data is preserved), but given the non-destructive annotation, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with an essential scope note. It is front-loaded and contains no fluff. Every word earns its place, and the format is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and annotations cover safety and idempotency. However, the description and schema together leave the workspace_id parameter unexplained, which is a gap for correct invocation. No output schema exists, but that is not required for a stop operation. The description is adequate for the core action but incomplete regarding the optional parameter, making it only partially complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the 'id' parameter has a description ('Database ID'), but 'workspace_id' has none. The description does not clarify the role of workspace_id or any parameter semantics. With half the parameters undocumented and no compensation from the description, an agent may be uncertain about whether workspace_id is required or its purpose. This is a significant gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Turns the database off.' It uses a specific verb and resource, and the scope note '(scope: databases:write)' reinforces the intended operation. It is easily distinguishable from sibling tools like start_database, reset_database, and delete_database, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you want to shut down a database) and is self-explanatory given the tool name. However, it does not explicitly mention alternatives or when not to use it, such as comparing with reset_database or delete_database. For a simple stop operation, the context is clear enough, but explicit guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unfavorite_personal_resourceA
Idempotent

Removes an application or database from the personal favorites. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYes
resource_typeYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the operation is not read-only, not destructive, and idempotent. The description adds the 'scope: account:write' requirement, which is an authorization note not present in the annotations. This provides useful behavioral context about required permissions. It does not contradict annotations, and the added scope information earns credit beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately states the action and target, with the scope note appended in parentheses. There is zero wasted language; every word contributes to the purpose. It is optimally concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers the core action and authorization. The annotations provide idempotency and destructiveness signals. The only gap is the lack of explicit usage guidance, but the tool's simplicity and schema coverage make the description sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not add meaning to 'resource_id' or 'resource_type'. It only restates that the resource can be an application or database, which is already captured by the enum in the schema. The description fails to compensate for the lack of schema descriptions, leaving the agent without guidance on resource_id format or relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Removes') and resource ('an application or database from the personal favorites'). It clearly differentiates from siblings like 'unfavorite_workspace_resource' by specifying 'personal favorites', and the scope note adds authorization context. An agent can tell exactly what this tool does without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for personal favorites rather than workspace favorites, which is inferred from the tool name and the word 'personal'. However, it does not explicitly state when to use this tool versus 'unfavorite_workspace_resource' or mention any prerequisites or alternatives. The usage context is clear but not explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unfavorite_workspace_resourceA
Idempotent

Removes an application or database from the workspace favorites. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYes
workspace_idYesWorkspace ID
resource_typeYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful context by stating the required auth scope ('workspaces:write') and clarifying that the operation affects favorites, not the underlying application or database. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence plus a parenthetical scope note. Every word earns its place, with no repetition of schema fields or annotation values.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter mutation with no output schema, the description plus annotations cover the operation, resource types, workspace context, auth scope, and safety profile. It does not explain return values or edge cases, but these are not essential given the tool's simplicity and the available annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%: workspace_id has a description, while resource_type and resource_id do not. The description partially compensates by mapping 'application or database' to resource_type and 'workspace favorites' to workspace_id, but resource_id is left to be inferred from its name and the surrounding context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Removes'), names the exact resources ('application or database'), and identifies the container ('workspace favorites'). This clearly distinguishes it from sibling tools like remove_app_from_workspace, remove_database_from_workspace, and remove_workspace_resource_from_folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—when unfavoriting an application or database in a workspace—but provides no explicit guidance on alternatives or when not to use it. It does not mention the counterpart favorite_workspace_resource or contrast with removing resources from folders.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unpublish_appB
Destructive

Takes the application off the web; the public address stops responding. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
workspace_idNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the description only needed to add behavioral nuance. It does add the visible effect and required scope, but it does not clarify reversibility, what state is changed, or whether this is the inverse of publish_app.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with the key effect front-loaded and a useful scope note included. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The effect is clear enough for a simple unpublish operation, and annotations cover the safety profile. Still, there is no relationship to publish_app, no alternative guidance, and no explanation of the undocumented workspace_id parameter, so it is not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only half of the parameters have schema descriptions, and the description adds nothing about id or workspace_id. An agent cannot determine what workspace_id controls or how it affects unpublishing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('takes the application off the web') and its observable consequence ('public address stops responding'). This clearly distinguishes it from related siblings such as delete_app, stop_app, or removing a custom domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use unpublish_app versus alternatives like stop_app, delete_app, or removing a domain. The description implies the intended use case, but it names no alternatives or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_app_configA
Idempotent

Changes the application's configuration: name, memory, main file, runtime version, start command. (scope: apps:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
mainNo
nameNo
startNo
memoryNo
versionNo
descriptionNo
workspace_idNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a mutating, idempotent, non-destructive operation. The description adds the scope requirement (apps:write) and enumerates the configurable fields, which is useful context. However, it does not disclose potential side effects (e.g., whether the app restarts or changes take effect immediately) or any restrictions on updating while the app is running.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states the action, target, and the key configurable fields, with the scope requirement parenthetically. Every word earns its place; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema and minimal schema descriptions, the description provides a useful list of updatable fields but omits important operational context: what happens after an update, whether partial updates are allowed, and any constraints on the values. An agent would need to inspect the schema for types and rely on common sense about update semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 13% schema description coverage, the description partially compensates by mapping several parameters to human-readable config items: 'memory' for memory, 'main file' for main, 'runtime version' for version, 'start command' for start, and 'name' for name. This adds meaning beyond the bare schema. However, it omits the 'description' and 'workspace_id' parameters, and doesn't clarify the required 'id' beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Changes' and the resource 'application's configuration', and lists specific fields (name, memory, main file, runtime version, start command) that distinguish it from other update tools like update_workspace. It is unambiguous about what resource it targets, though it doesn't explicitly contrast with sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for modifying app configuration but gives no explicit guidance on when to prefer it over alternatives (e.g., create_app for initial setup, deploy_app for code changes, start_app for runtime state). No exclusions or prerequisites are mentioned, leaving the decision largely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_databaseB
Idempotent

Changes the database's name, description or memory. (scope: databases:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDatabase ID
ramNo
nameNo
descriptionNo
workspace_idNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only, is idempotent, and is not destructive. The description adds the permission scope 'databases:write' and confirms it changes fields, which is consistent. However, it does not disclose side effects (e.g., whether changing 'memory' restarts the database), whether partial updates are allowed, or what happens to unspecified fields. With annotations covering the basic safety profile, the description adds modest value but no deep behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. It states the verb and the key fields immediately, and the scope note is appended without clutter. This is appropriately concise for a simple update operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters, no output schema, and low schema coverage, the description leaves significant gaps. It does not mention the required 'id' parameter, the meaning of 'ram', the role of 'workspace_id', or what the response looks like. An agent would need to inspect the schema and infer behavior, so the description is 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.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20% (only 'id' has a description). The description partially compensates by naming name, description, and 'memory' (presumably ram), but it does not explain the 'ram' parameter clearly, omits 'workspace_id', and does not state that 'id' is required or what values are acceptable. It adds some meaning but fails to make all five parameters understandable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('changes') and resource ('database') and names three mutable fields (name, description, memory). This distinguishes it from sibling operations like create_database, delete_database, reset_database, and start_database. However, 'memory' is somewhat ambiguous (likely maps to the 'ram' parameter) and it omits other mutable fields like workspace_id, making the purpose clear but not exhaustive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. It does not mention that delete_database is for removal, reset_database for resets, or that start/stop are for lifecycle management. The description only states what it does, not when to choose it, and provides no exclusions or prerequisites beyond the scope note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_memberA
Idempotent

Changes a workspace member's role. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
role_idYes
user_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a permission scope ('workspaces:write') but otherwise repeats the action implied by the tool name. Annotations already convey write, non-destructive, and idempotent behavior; the description does not disclose additional effects, failure modes, or response details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with a parenthetical scope note; every word serves the purpose. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation with no output schema, the description gives the core action but omits preconditions (e.g., member must exist, role_id must be a valid workspace role) and does not describe the response. Annotations fill some gaps, making it minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, with only 'id' described. The sentence 'Changes a workspace member's role' implies user_id is the member and role_id is the new role, providing some meaning for the undocumented parameters, but it does not explicitly map each parameter or specify valid values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Changes') and resource ('workspace member's role'), clearly distinguishing it from sibling tools like list_members, remove_member, and update_role. The 'scope: workspaces:write' note adds permission context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 update_role or list_members. The description only states the action; it does not mention prerequisites (e.g., listing members or roles) 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.

update_personal_folderA
Idempotent

Renames, recolors or reorders a personal folder. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation as non-read-only, non-destructive, and idempotent. The description adds specific behavioral details by naming the concrete modifications (rename, recolor, reorder) and the required scope (account:write), which helps the agent understand what will change.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence conveys the full meaning, with the scope note appended efficiently. There is no redundant filler or repetition of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the action, resource, and scope, and annotations cover safety semanticsasi, but it is terse for an update tool: there is no mention of how the folder is identified, what values are accepted, whether a folder must exist, or what the response/effect will be. These gaps prevent full invocation confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parametersтное, so there is no parameter-level documentation burden on the description. The description helps by indicating what aspects of the folder can be changed, even though no parameter details are present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names three specific update operations (renames, recolors, reorders) on a clear resource (personal folder). This distinguishes it from sibling tools like update_workspace_folder and from resource-add tools such as add_personal_resource_to_folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The resource scope and verb imply when to use it, and the sibling list suggests alternatives, but the description does not explicitly state when to choose this over update_workspace_folder or how to handle setup. Usage is clear from context but not directly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_profileB
Idempotent

Changes the account's display name or language. (scope: account:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
languageNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only, is idempotent, and is not destructiveher. The description adds the 'account:write' scope requirement, which is useful context beyond the annotationstons. However, it does not disclose overwrite semantics, whether both fields can be updated together, or any validation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence followed by a scoped parenthetical. Every word adds value, the core action is front-loaded, and there is no redundant repetition of schema fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with no output schema and no parameter descriptions, the definition is under-specified. An agent would not know valid language values, whether at least one field must be supplied, or what the API returns. The annotations mitigate safety concerns but not invocation correctness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has bare string fields with no descriptions, so the description adds meaning by clarifying that 'name' is the display name and 'language' is the account language. It does not explain accepted formats, allowed language codes, or whether at least one parameter is required, leaving significant gaps for a 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Changes') and the resource ('the account's display name or language'), which is specific and distinct from sibling tools like update_workspace or update_member. It does not explicitly call out its sibling profile tool, but the account/profile scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as update_workspace or update_member. The parenthetical scope 'account:write' hints at authorization context, but there are no explicit when-to-use, when-not-to-use, or alternative tool mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_roleB
Idempotent

Changes a workspace role's name or permissions. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
nameYes
role_idYes
positionNo
permissionsYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the description only needs to add context. It adds a scope requirement (workspaces:write), which is useful. However, it does not disclose whether permissions are replaced wholesale or merged, and there is no mention of side effects or prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the scope in parentheses; every word earns its place and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a mutating tool with 5 parameters and no output schema, the description is too thin. It omits role_id semantics, the optional position param, return values, and prerequisites, and does not compensate for the sparse schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 20% (only 'id' is described). The description gives some semantics to 'name' and 'permissions' but leaves 'role_id' and 'position' unexplained, and its 'name or permissions' phrasing conflicts with the schema's requirement that both be provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Changes') and resource ('workspace role'), and names the updatable attributes ('name or permissions'). This clearly distinguishes it from sibling create_role, delete_role, and list_roles without requiring schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings. It does not name create_role or delete_role as alternatives and gives no exclusions, so an agent gets no explicit routing or when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workspaceA
Idempotent

Changes the workspace's name or description. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesWorkspace ID
nameNo
descriptionNo

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read/write and idempotency traits, so the bar for added behavioral disclosure is lower. The description contributes the permission scope 'workspaces:write' and confirms the changeable fields, but it does not disclose additional behavioral details such as partial-update semantics or side effects, though none are strongly expected for this simple operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that states the action and target fields immediately, with the permission scope added as a short parenthetical. Every word earns its place and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple update operation with three flat parameters, an output schema is not necessary, and annotations already provide idempotency and non-destructive behavior. The description plus schema and annotations is sufficient for an agent to invoke the tool correctly, though a brief note on partial updates would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with 'name' and 'description' lacking property-level descriptions. The description compensates by explicitly stating that the workspace's name or description can be changed, giving meaning to those otherwise undocumented parameters beyond their property names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Changes,' identifies the resource as the workspace, and specifies the exact fields affected: 'name or description.' This clearly distinguishes update_workspace from siblings like create_workspace, get_workspace, and update_workspace_folder, so an agent can tell them apart without inspecting their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by stating exactly what this tool is used for: updating the workspace's name or description. It does not explicitly name alternatives or exclusion conditions, but the resource and field specificity make the intended use obvious relative to the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_workspace_folderA
Idempotent

Renames, recolors or reorders a workspace folder. (scope: workspaces:write)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey that this is a mutating, idempotent, non-destructive operation. The description adds only the authorization scope 'workspaces:write', which is useful context but does not enrich behavioral understanding beyond the annotations significantly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the action and resource, ending with a brief scope annotation. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite clear purpose, the tool is practically impossible to invoke correctly because the schema has no properties for identifying the target workspace folder or specifying the rename/recolor/reorder values. The description provides no hint about how the folder is selected, and there is no output schema, leaving a significant operational gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the schema itself has no parameter details to explain. The baseline for 0-parameter tools is 4, and the description matches that baseline by clarifying what operation is performed, even though it doesn't enumerate any parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Renames, recolors or reorders') and names the exact resource ('workspace folder'), making the operation unmistakable. It is also easily distinguished from siblings like update_workspace, create_workspace_folder, and delete_workspace_folder.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates this is the tool for renaming, recoloring, or reordering a workspace folder. It does not explicitly mention alternatives or exclusions, but the context is sufficiently clear that an agent would not confuse it with create/delete or workspace-level update tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_filesC

Uploads files from the computer to a folder in the application. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
destNoDestination folder inside the application (default: root)
pathsYesFiles on the computer
restartNoRestart after upload (default: false)
workspace_idNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare that this is a write operation and that it is not idempotent and not read-only. The description adds no extra behavioral details such as overwrite behavior, destination semantics, restart effects, authentication needs, or any other side effects beyond the action itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and free of filler. The parenthetical scope note is somewhat terse but adds a useful context signal without bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, no behavioral caveats, and no sibling differentiation, the description is thin. It gives enough to guess the basic operation but not enough for an agent to fully understand side effects, exclusions, or the meaning of workspace_id in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the schema already documents id, dest, paths, and restart. The description does not add parameter-level meaning beyond that, which aligns with the baseline score for high schema coverage. The workspace_id parameter remains undocumented and the description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action and scope: uploading files from the computer into an application folder. It is reasonably distinct from file commands like read_file, write_file, move_file, and delete_file, though it does not explicitly name or contrast any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as write_file or move_file. The parenthetical scope note provides only a weak context signal, not actionable when-to-use or when-not-to-use direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_fileB
Idempotent

Writes text content to a file in the application, creating it if it doesn't exist. (scope: apps:files)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
pathYes
contentYes
workspace_idNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the read-only/destructive/idempotent contract, so the description need not repeat those. It adds useful context about creating a file, but does not disclose whether existing content is overwritten, whether parent directories are created, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with the primary behavior front-loaded; no filler or repeated schema information. The parenthetical scope note is compact and does not add noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a file-writing tool with three required parameters including an undocumented path and content, the absence of path-format, overwrite, and optional workspace_id semantics leaves meaningful gaps. Output behavior is also not described, and no output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (id alone documented), and the description only clarifies that content is 'text content'; path and workspace_id semantics are left undefined. The description must compensate for the low coverage but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a clear action ('Writes text content to a file') and a creation behavior ('creating it if it doesn't exist'), so an agent knows the tool's core function. It is clearly distinct from read_file/move_file/delete_file, though it does not explicitly contrast itself with upload_files or other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use write_file versus upload_files, move_file, or read_file, and no exclusions or preconditions are stated. The only implicit condition is the file-creation behavior, which is insufficient routing guidance.

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.

  1. 99 tool updatesv0.1.0
    • First observedaccept_workspace_invite
    • First observedadd_app_to_workspace
    • First observedadd_database_to_workspace
    • First observedadd_personal_resource_to_folder
    • First observedadd_workspace_resource_to_folder
    • First observedcreate_action_request
    • First observedcreate_app
    • First observedcreate_database
    • First observedcreate_deploy_webhook
    • First observedcreate_order
    • First observedcreate_personal_folder
    • First observedcreate_role
    • First observedcreate_snapshot
    • First observedcreate_workspace
    • First observedcreate_workspace_folder
    • First observeddecline_workspace_invite
    • First observeddelete_app
    • First observeddelete_database
    • First observeddelete_deploy_webhook
    • First observeddelete_env
    • First observeddelete_file
    • First observeddelete_personal_folder
    • First observeddelete_role
    • First observeddelete_workspace
    • First observeddelete_workspace_folder
    • First observeddeploy_app
    • First observeddownload_app
    • First observeddownload_snapshot
    • First observedfavorite_personal_resource
    • First observedfavorite_workspace_resource
    • First observedget_app
    • First observedget_app_status
    • First observedget_connection_info
    • First observedget_database
    • First observedget_database_metrics
    • First observedget_database_status
    • First observedget_deploy_webhook
    • First observedget_docs
    • First observedget_file_tree
    • First observedget_logs
    • First observedget_metrics
    • First observedget_network
    • First observedget_order_status
    • First observedget_pix
    • First observedget_profile
    • First observedget_workspace
    • First observedlist_action_requests
    • First observedlist_apps
    • First observedlist_databases
    • First observedlist_deploys
    • First observedlist_envs
    • First observedlist_files
    • First observedlist_members
    • First observedlist_orders
    • First observedlist_plans
    • First observedlist_roles
    • First observedlist_runtimes
    • First observedlist_sessions
    • First observedlist_snapshots
    • First observedlist_workspace_invites
    • First observedlist_workspaces
    • First observedmove_file
    • First observedpreview_workspace_invite
    • First observedpublish_app
    • First observedpurge_cache
    • First observedread_file
    • First observedredeem_code
    • First observedremove_app_from_workspace
    • First observedremove_custom_domain
    • First observedremove_database_from_workspace
    • First observedremove_member
    • First observedremove_personal_resource_from_folder
    • First observedremove_workspace_resource_from_folder
    • First observedreset_certificate
    • First observedreset_credentials
    • First observedreset_database
    • First observedrestart_app
    • First observedrestore_snapshot
    • First observedrevoke_workspace_invite
    • First observedset_custom_domain
    • First observedset_env
    • First observedset_subdomain
    • First observedstart_app
    • First observedstart_database
    • First observedstop_app
    • First observedstop_database
    • First observedunfavorite_personal_resource
    • First observedunfavorite_workspace_resource
    • First observedunpublish_app
    • First observedupdate_app_config
    • First observedupdate_database
    • First observedupdate_member
    • First observedupdate_personal_folder
    • First observedupdate_profile
    • First observedupdate_role
    • First observedupdate_workspace
    • First observedupdate_workspace_folder
    • First observedupload_files
    • First observedwrite_file

TDQS

B3.2/5.0

Scored across 99 tools

Disambiguation4/5

Most tools follow a clear resource+action pattern and are cleanly separated (get_app vs get_app_status vs get_metrics; list_databases vs get_database vs get_database_status). The many folder/favorite/workspace-membership tools are distinct but similar enough that an agent must read closely to avoid misselection.

Naming Consistency5/5

All 99 tools consistently use snake_case verb_noun naming, with standard CRUD verbs (list/get/create/update/delete) and lifecycle verbs (start/stop/restart/reset). The few exceptions like get_docs, list_plans, and get_pix still fit the same readable verb-first pattern.

Tool Count1/5

At 99 tools, this is far beyond the range where an agent can keep the full tool surface in working memory, even for a broad PaaS platform. Per the calibration, 50+ tools is an extreme mismatch.

Completeness3/5

Core workflows for apps, databases, workspaces, snapshots, and billing are broadly covered with CRUD and lifecycle operations. However, personal/workspace folders can be created/updated/deleted but not listed, favorites have no list operation, and sessions can be listed but not revoked, leaving several notable dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Dokploy deployments, including creating and deploying applications, managing databases, configuring domains with SSL, and monitoring application status through a standardized interface.
    23 npm
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to manage cloud infrastructure through natural language by providing a unified interface to the Dokploy platform. Supports Docker containers, applications, databases, domains, monitoring, and deployment operations through conversational commands.
    23 npm
    1
    -