Skip to main content
Glama

Balena MCP

CI npm

Manage Balena fleets, devices, releases, variables, tags, teams, and organizations from Claude, VS Code, and other MCP clients. The server runs locally over stdio or remotely over token-protected Streamable HTTP.

Add to your MCP client

Get for Claude Desktop Install in VS Code

First, create a named API key in Balena account preferences. It has the permissions of your Balena user account. Keep it private.

  • Claude Desktop: Download the .mcpb extension with the button and open it in Claude Desktop. Enter your Balena API key when prompted. The download becomes available with the first GitHub release.

  • VS Code: Set BALENA_API_TOKEN in the environment from which VS Code starts, then use the button. Alternatively, copy the repository's .vscode/mcp.json, which prompts for the token as a password field.

  • Claude Code: Install the marketplace plugin. It prompts for the Balena API key:

    /plugin marketplace add kieksme/mcp-balena
    /plugin install balena-mcp@mcp-balena

To run the package directly with any stdio MCP client:

{
  "mcpServers": {
    "balena": {
      "command": "npx",
      "args": ["-y", "@kieksme/balena-mcp"],
      "env": { "BALENA_API_TOKEN": "YOUR_BALENA_API_TOKEN" }
    }
  }
}

Related MCP server: feishu-cli-mcp

What it can do

Area

Tools and examples

Fleets

List and inspect fleets, create or rename a fleet, set its target release, delete a fleet

Devices

List and inspect devices, rename, add notes, pin releases, move or delete devices

Releases and services

Inspect releases and services, update release notes

Variables

List, create, update, and delete fleet, device, service, and config variables

Tags

List, create, update, and delete device, fleet, and release tags

Organizations and teams

List organizations, teams, and members; create teams and manage memberships

Other API resources

Read a bounded page with balena_query_resource using Balena OData filters

Read tools return at most 25 records by default; top accepts 1–100 and skip selects the next page. Tools that delete resources or change a whole fleet require confirm: true. The generic query tool is read-only and excludes API-key management.

Try asking your MCP client: “Show my fleets”, “Which devices in fleet 42 are offline?”, or “List the latest releases for fleet 42.”

Run over Streamable HTTP

Set two separate secrets: BALENA_API_TOKEN for Balena and MCP_HTTP_AUTH_TOKEN for clients connecting to this MCP server.

docker run --rm -p 127.0.0.1:3000:3000 \
  -e BALENA_API_TOKEN=YOUR_BALENA_API_TOKEN \
  -e MCP_HTTP_AUTH_TOKEN=YOUR_LONG_RANDOM_MCP_TOKEN \
  ghcr.io/kieksme/balena-mcp:latest

The MCP endpoint is http://127.0.0.1:3000/mcp; GET /health provides an unauthenticated health check. Send Authorization: Bearer <MCP_HTTP_AUTH_TOKEN> on MCP requests. The server refuses HTTP mode without that token.

For a public deployment, put HTTPS in front of the container and set MCP_HTTP_ALLOWED_HOSTS to the external hostname, for example balena-mcp.example.com,localhost,127.0.0.1. No hosted service is included with the package.

The package is published as @kieksme/balena-mcp on npm and GitHub Packages. The repository remains kieksme/mcp-balena. Development and release instructions are in CONTRIBUTING.md.

License

GPL-3.0-or-later. See LICENSE.

Available Tools

41 tools
balena_add_organization_memberC

Add a user to an organization with a membership role ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_idYes
user_idYes
organization_idYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations indicate a mutating operation (readOnlyHint=false, destructiveHint=false), but the description adds no behavioral context beyond the action. It does not disclose whether the operation is idempotent (idempotentHint=false) or what happens on duplicate membership, nor does it mention permission requirements. The description adds minimal value over 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, direct sentence that is appropriately concise for a simple tool. It is front-loaded with the core action and resource, making it easy to parse. It could be slightly more informative without becoming verbose, but overall it is well-structured.

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?

Given the tool's simplicity, the description covers the basic action but lacks important context: it does not mention error conditions, return values (no output schema exists), side effects, or usage scenarios. It also fails to provide any guidance on when to use it, making it incomplete for an agent to call 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 description coverage is 0%, so the schema provides no parameter descriptions. The tool description also does not explain any of the three parameters. While the parameter names (organization_id, user_id, role_id) are somewhat self-explanatory, the description fails to clarify relationships or constraints (e.g., what constitutes a valid role_id for the organization). The description does not compensate for the lack of 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 the verb 'Add' and the resource 'a user to an organization', and mentions a 'membership role ID'. It clearly indicates the action and the primary resource, distinguishing it from removal tools. However, it doesn't explicitly differentiate from sibling tools like add_team_member, but the specific resource (organization) makes it 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 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 add_team_member or remove_organization_member. It also lacks any mention of prerequisites (e.g., user must exist, role must be valid) or conditions for when this tool is appropriate, leaving the agent to infer usage.

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

balena_add_team_memberB

Add a user to a team by numeric user ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes
user_idYes

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already indicate that this is a non-read-only, non-destructive, non-idempotent operation. The description adds the concrete behavioral fact that it creates a team membership, which is not fully expressed by the annotations. However, it does not disclose permission requirements, duplicate-membership behavior, or failure modes, so it stops at adequate rather than rich.

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 verb and object are front-loaded, and every word earns its place. It is appropriately sized for a simple two-parameter mutation.

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 mutation with annotations present, the description is minimally callable. But it lacks any mention of duplicate-membership implications, permission requirements, or how to obtain team/user IDs, and it gives no usage guidance relative to sibling tools. Adequate, 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 0%, so the description carries the burden of explaining parameter semantics. It only clarifies that user_id is numeric, which is already implied by the schema type, and it does not meaningfully explain team_id or how an agent should discover either ID. The value added beyond the raw schema is minimal.

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 ('Add') and the target ('a user to a team'), with a precise scope qualifier ('by numeric user ID'). It distinguishes the tool from obvious siblings like remove_team_member and add_organization_member because it is specifically about team membership, though it does not explicitly contrast those alternatives.

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 this tool versus balena_remove_team_member, balena_add_organization_member, or balena_get_team. It does not mention prerequisites, exclusions, or when a different membership operation would be more appropriate.

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

balena_create_fleetB

Create a fleet in an organization for a device type.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
device_type_idYes
organization_idYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false. The description adds no further behavioral context beyond the act of creation, such as side effects, naming constraints, permission requirements, or behavior on duplicate names. There is no contradiction with annotations, but no added transparency either.

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 clear sentence with no redundant words. The core operation and main parameters are front-loaded, making it easy to parse quickly.

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 three required parameters, the description covers the essentials, and annotations supply the safety profile. However, it does not describe what the API returns, how errors might surface, or any uniqueness/validation behavior, and there is no output schema to fill that 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 0%, so the description must compensate. It partially does by clarifying that 'organization' and 'device_type_id' refer to the organization and device type of the new fleet, and 'name' is the fleet name. However, it stops short of fully defining each parameter's semantics or constraints, leaving some inference to 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 states a specific verb ('Create'), a resource ('fleet'), and the two key scoping dimensions ('in an organization', 'for a device type'). This clearly distinguishes the tool from sibling operations like balena_get_fleet, balena_list_fleets, balena_rename_fleet, and balena_delete_fleet.

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, nor does it mention any exclusions or prerequisites such as checking existing fleets. The only usage signal is the verb 'Create', which implicitly suggests use for new fleets but never explicitly addresses alternatives.

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

balena_create_tagB

Add a tag to a device, fleet, or release.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
kindYes
valueYes
owner_idYes

TDQS

B3.1/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=false, so the description doesn't need to restate those. The description adds the scope of tag targets (device, fleet, release) but does not disclose behavior such as whether duplicate tags are rejected, whether tags are overwritten, or any rate limits. With annotations covering the basic safety profile, 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 front-loads the action and resource. It is efficient and easy to parse, though it could have added a bit more context without becoming verbose.

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 four required parameters and no output schema, the description is thin. It does not explain what the tag key/value represent, how owner_id is determined, or what happens on success/failure. The sibling tools show a rich tag management context, but this description alone leaves an agent guessing about important invocation details.

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 must compensate for the four parameters. It only clarifies the 'kind' parameter by listing its valid values (device, fleet, release) but provides no additional meaning for 'key', 'value', or 'owner_id'. The schema gives basic types and constraints, but the description adds almost no semantic context beyond what the enum already 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 'Add a tag to a device, fleet, or release' clearly states the action (add) and the resource (tag) with the valid target kinds. It distinguishes from sibling tools like balena_list_tags, balena_update_tag, and balena_delete_tag by indicating creation, though it doesn't explicitly name those alternatives.

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 creating tags on the three supported kinds, and the sibling list shows related tag management tools. However, it does not explicitly state when to use this tool versus balena_update_tag or balena_list_tags, nor does it mention any prerequisites like ownership or existing resources.

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

balena_create_teamA

Create a team in an organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
organization_idYes

TDQS

A3.6/5.0
Behavior2/5

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

The description only restates the creation action and adds no behavioral detail beyond the annotations. It does not mention prerequisites, side effects, uniqueness constraints, or failure modes, so the agent gains little beyond what readOnlyHint=false and idempotentHint=false already imply.

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

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 word contributes to stating the action and target resource.

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 create operation, the description is minimally viable: it states what the tool does, and the schema provides parameter names and constraints. However, it would be more complete with usage guidance or behavioral notes, especially since there is no output 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 0%, and the description does not explain the meaning or relationship of 'name' or 'organization_id'. The phrase 'in an organization' hints at organization_id, but it does not compensate for the complete lack of parameter documentation in the 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 ('Create') and resource ('a team in an organization'), making the operation unambiguous. It clearly distinguishes this from sibling create tools like balena_create_fleet or balena_create_tag by naming the team 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: use this when creating a team within an organization. It does not explicitly discuss exclusions or alternatives, but the resource is unique enough that no close alternative exists among the listed siblings.

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

balena_create_variableB

Create a named environment or config variable. Values may contain secrets; do not repeat them in chat.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
nameYes
valueYes
owner_idYes

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 non-read, non-idempotent operation. The description adds a useful behavioral note: values may contain secrets and should not be repeated in chat. However, it does not disclose other relevant behaviors like duplicate handling, ownership requirements, or what a successful creation returns.

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: the first sentence names the action and object, and the second delivers a critical security instruction. No filler or redundancy.

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 four required parameters, no output schema, and zero parameter documentation in the schema, this description is too thin. It omits what the kind values mean, how owner_id should be determined, conflict/duplicate behavior, and expected results.

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 must compensate, but it only adds meaning for the 'value' parameter by warning about secrets. It provides no semantic guidance for 'kind', 'owner_id', or 'name', leaving most parameters 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 clear verb ('Create') and resource ('environment or config variable'), distinguishing it from sibling update/delete/list variable tools. It is not fully specific about the different kinds/scopes, but the overall purpose is identifiable.

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 balena_update_variable or balena_delete_variable, nor does it explain which kind to choose for which scenario. There is no mention of prerequisites such as owner_id resolution or uniqueness constraints.

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

balena_delete_deviceA
Destructive

Permanently delete a device from Balena.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
device_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already mark the tool as destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds the meaningful context that deletion is permanent rather than merely an unlink or stop operation, and it does not contradict any annotation. It does not, however, disclose potential side effects on associated data or any authorization requirements, though annotations already cover the core hazard.

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 contains only essential information ('permanently', 'delete', 'device', 'Balena') without repeating the tool name or schema fields. Every word contributes to the semantic intent.

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 destructive operation, the description plus annotations and the inline confirm description cover the main safety context: the deletion is permanent. A shortcoming is that potential consequences to associated releases or fleets are not mentioned, but the schema already makes the confirmation requirement visible. Overall it is adequate for a simple tool definition.

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%: confirm is fully described, but device_id has no natural-language description beyond type and numeric bounds. The tool description adds no parameter-level meaning; in particular, it does not say how the device is selected or what the required confirmation means. Since coverage is not high and the description does not compensate, the parameters remain only partially explained.

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 says exactly what the tool does: 'Permanently delete a device from Balena.' It uses a specific verb/resource and the adjective 'permanently' makes the operation unambiguous. This differentiates it from the many sibling delete tools (balena_delete_fleet, balena_delete_tag) by naming 'device' as the target.

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 about when to call this tool or when to prefer an alternative such as balena_get_device or balena_find_device_by_name. The description only states the operation and does not warn about prerequisites like looking up the device first or setting confirm=true. Usage context is left entirely to inference from the name and parameters.

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

balena_delete_fleetA
Destructive

Permanently delete a fleet. Review its devices before confirming.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
fleet_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as destructive and non-idempotent. The description adds meaningful context beyond the annotations by stating the destruction is permanent and by warning to 'Review its devices before confirming.' It does not detail what happens to the devices themselves, but it provides sufficient caution for a destructive 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?

Two sentences with no filler. The core action is front-loaded, and the safety instruction earns its place by guiding correct invocation. Every word contributes to either identifying the operation or preventing misuse.

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 operation with two required parameters and no output schema, the description together with the annotations and schema is largely sufficient. It could have stated what happens to the fleet's devices or mentioned irreversibility more explicitly, but it already flags the key risk and confirmation requirement.

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%: the confirm parameter is described, but fleet_id is not. The description reinforces the confirm parameter's intent by linking it to reviewing devices, which adds slight value. However, it does not compensate for the undocumented fleet_id, though that parameter is largely self-explanatory from its name and 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?

The description opens with a specific verb and resource: 'Permanently delete a fleet.' This clearly distinguishes it from sibling delete tools like balena_delete_device, balena_delete_team, and balena_delete_variable. The qualifier 'permanently' adds important semantic weight to exactly what this operation does.

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 establishes clear context for use: this is the tool for permanently removing a fleet, and it explicitly instructs the agent to review the fleet's devices before confirming. It does not name alternatives, but the resource-specific action and the precondition make the usage context clear enough.

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

balena_delete_tagA
Destructive

Delete one tag by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
tag_idYes
confirmYesMust be true after reviewing the target and consequences

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 and readOnlyHint=false, so the agent knows this is a destructive write. The description adds 'by ID' but doesn't disclose consequences like whether the tag is permanently removed or if there are cascading effects. The confirm parameter description in the schema covers the need to review consequences, but the tool description itself doesn't add 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 a single, concise sentence that states the action and the key parameter. No wasted words. It is appropriately sized for a simple delete operation.

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 destructive operation with three required parameters, the description is minimal. The schema covers the confirm constraint and kind enum, but the description doesn't explain the meaning of kind in the context of deletion (e.g., that the tag belongs to a device, fleet, or release). The output schema is absent, so the agent doesn't know what the response looks like. However, the operation is simple enough that the description plus schema is adequate, though not rich.

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 33% (only confirm has a description). The description 'by ID' clarifies that tag_id is the identifier, and kind is an enum in the schema. However, the description doesn't explain the relationship between kind and tag_id (e.g., that kind scopes the tag deletion to device/fleet/release). The schema provides the enum and the confirm constraint, so the description adds minimal value 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 'Delete one tag by ID' clearly states the action (delete) and the resource (tag by ID). It distinguishes from siblings like balena_create_tag and balena_update_tag, though it doesn't explicitly name them. The 'by ID' qualifier 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 description implies usage: you delete a tag when you have its ID. It doesn't explicitly state when to use this vs alternatives, but the sibling list includes create/update/list tags, so the action is clear. No explicit exclusions or alternative routing, but the context is sufficient for a straightforward delete operation.

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

balena_delete_teamB
Destructive

Permanently delete a team.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
team_idYes

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 and readOnlyHint=false, so the destructive nature is known. The description adds 'Permanently' which reinforces irreversibility, but doesn't disclose additional behavioral details like cascading effects on memberships or required permissions. 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, short sentence that front-loads the key fact (permanence). It is efficient and free of filler, though it could arguably include more context without becoming verbose.

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 mutation with no output schema and minimal description, the definition is thin. It doesn't explain what happens to team memberships, whether the operation is reversible, or what success/failure looks like. The confirm parameter implies a safeguard, but the description doesn't elaborate on consequences.

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%: team_id is described only by its type/constraints, while confirm has a description. The description adds no parameter-level meaning beyond the schema, so it doesn't compensate for the undocumented team_id semantics. Baseline 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 a specific verb ('delete') and resource ('team'), clearly identifying the operation. It doesn't explicitly distinguish from sibling tools like balena_delete_fleet or balena_delete_variable, but the resource name in the tool name and description makes the target 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?

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or consequences beyond the schema's confirm parameter. The description simply states the action without context for selection.

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

balena_delete_variableA
Destructive

Delete one environment or config variable by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
confirmYesMust be true after reviewing the target and consequences
variable_idYes

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is known. The description adds the scoping detail that exactly one variable is deleted by ID, but it does not disclose whether deletion is permanent, what consequences follow, or any required permissions beyond the confirm field already present in the schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant wording. Every word adds meaning: 'Delete' conveys the action, 'one' limits scope, 'environment or config variable' names the resource, and 'by ID' specifies the selector.

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 straightforward destructive operation, the description plus annotations and schema provide the essential facts: what is deleted, which parameter identifies it, the allowed kinds via enum, and the confirmation requirement. No output schema is present, so explaining return values is unnecessary; the main missing piece is usage guidance, which is already scored separately.

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 only 33% schema description coverage, the description partially compensates by clarifying that 'environment or config' maps to the kind enum and 'by ID' identifies the variable_id parameter. However, it does not enumerate the allowed kind values or add detail about the confirm requirement, so the parameter guidance remains incomplete.

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 ('Delete'), a concrete resource ('environment or config variable'), and the selection mechanism ('by ID'). This clearly distinguishes it from siblings like balena_update_variable and balena_create_variable, which perform different operations on the same 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?

No guidance is given about when to use this tool versus alternatives, when not to use it, or how to obtain the variable_id before calling. The description only states the action, leaving the agent to infer prerequisites and alternative routing on its own.

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

balena_find_device_by_nameB
Read-onlyIdempotent

Find devices by exact name with safe OData quoting.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
nameYes
skipNo

TDQS

B3.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 non-destructive behavior. The description adds 'safe OData quoting', which hints at injection protection, but gives no additional behavioral context such as pagination behavior, what happens on no match, or return format. This is acceptable given annotation coverage.

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

Conciseness5/5

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

The description is a single, tight sentence with no filler. It front-loads the core purpose ('Find devices by exact name') and then adds a relevant implementation detail. Every word 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 lookup tool with annotations covering safety and no output schema, the description is minimally sufficient. It does not mention that multiple devices may match or how pagination works, but 'find devices' implies a list return. Given the tool's low complexity, this is adequate but not rich.

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 must compensate for parameter meanings. It partially explains 'name' via 'exact name', but says nothing about 'top' or 'skip', leaving those to schema defaults/ranges. This is insufficient compensation for the lack of 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 clearly states a specific verb ('Find') and resource ('devices') with a precise qualifier ('by exact name'). It implicitly distinguishes from siblings like balena_list_devices by focusing on name lookup, but it does not explicitly name alternatives or contrast 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?

Usage is implied: to find devices by exact name. No explicit when/not-when guidance or mention of alternatives like balena_list_devices or balena_get_device. The agent can infer appropriate use but gets no help choosing between siblings.

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

balena_get_deviceA
Read-onlyIdempotent

Get one device by numeric ID, including its current status.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes

TDQS

A3.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, and destructiveHint=false, so the safety profile is covered. The description adds 'including its current status,' which is a behavioral detail about the return value. However, it does not disclose error behavior (e.g., what happens if the ID does not exist) or any additional side effects. Since annotations carry the primary safety information, 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.

Conciseness5/5

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

The description is a single, well-structured sentence that places the core action and scope at the beginning. It wastes no words and every element adds value. This is appropriately sized for a simple get-by-ID tool.

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

Completeness4/5

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

Given the tool's low complexity (one parameter, no output schema, clear read-only operation), the description is nearly sufficient. It states the resource, the lookup key, and that the response includes status. The only gap is not specifying the shape of the returned device object or error handling, but for a straightforward retrieval tool, the description covers the essential information an agent needs to decide 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?

Schema description coverage is 0%, and the description provides no additional meaning for device_id beyond restating that it is a 'numeric ID.' The schema already defines the type and bounds, and the description adds almost nothing. It does not clarify what the ID refers to, any format constraints, or how to obtain the ID. With no schema descriptions and a minimal description, the agent receives insufficient guidance for this 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 ('Get'), identifies the resource ('device'), and specifies the retrieval method ('by numeric ID'). It also adds 'including its current status,' which clarifies the scope of the response. This clearly differentiates from sibling tools like balena_list_devices (list all) and balena_get_fleet (different resource), so an agent can immediately understand what this tool does.

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 states the trigger condition ('by numeric ID') but does not explicitly compare with alternatives like balena_find_device_by_name, which retrieves a device by name. It implies that you should use this tool when you already have a numeric ID, but it does not state when not to use it or mention any alternative. 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.

balena_get_fleetA
Read-onlyIdempotent

Get one fleet by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
fleet_idYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which already establish the safety profile. The description adds no behavioral context beyond the annotations – it does not mention what happens on error (e.g., 404), whether authentication is required, or any side effects (though none are expected). Since the description does not contradict the annotations but also fails to add any useful behavioral information, it scores low.

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 with no filler. The essential information (verb, resource, and parameter purpose) is front-loaded, and every word contributes meaning. It is appropriately concise for a simple getter 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 one-parameter read-only tool, the description is minimally sufficient: it tells the agent what the tool does and what the parameter is. However, it does not describe the return value (the fleet object) or any error behaviors, and it omits guidance on how to discover the fleet ID. Given no output schema exists, the description could reasonably be expected to mention the expected result format. The annotations cover safety, but the overall context feels slightly incomplete for an agent that may need to chain this with other tools.

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

Parameters4/5

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

Schema description coverage is 0% for the only parameter (fleet_id), and the schema only provides type constraints (integer, maximum, exclusiveMinimum). The description's phrase 'by numeric ID' clarifies that the integer parameter is the fleet's unique identifier, which is essential meaning not present in the schema. This compensates for the low coverage, though it could be more explicit about where to obtain the ID (e.g., from balena_list_fleets).

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 ('Get') and resource ('fleet'), and adds the distinguishing qualifier 'by numeric ID,' which clearly differentiates it from sibling tools like balena_list_fleets (which lists fleets) and other getters such as balena_get_device or balena_get_release. The purpose is unambiguous and immediately understandable.

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 balena_list_fleets should be used to fetch all fleets or that this tool is for retrieving a single fleet given a specific ID. There are no exclusions, prerequisites, or references to sibling tools, leaving the agent to infer usage context entirely.

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

balena_get_organizationA
Read-onlyIdempotent

Get one organization by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
organization_idYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already establish a safe read-only, idempotent operation, and the description adds the useful behavioral point that the result is a single organization rather than a collection. It does not go further to describe error behavior or return shape, but given the rich annotation profile, the description provides enough additional context for this simple getter.

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 short sentence that front-loads the operation and resource; there is no filler or repetition. Every word earns its place.

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

Completeness4/5

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

For a one-parameter getter backed by readOnly/idempotent annotations, the description is nearly complete: it names the resource, the identifying parameter, and the singular result. The only omitted detail is an explicit statement of the return payload, and there is no output schema to compensate, but the tool's simplicity keeps 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 0%, so the description must compensate; 'by numeric ID' correctly maps to the sole organization_id parameter and underscores its numeric nature. However, it adds no new semantics beyond what the parameter name and integer type already convey, and it doesn't explain how to discover the ID or what constraints apply (though schema covers bounds).

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 ('Get'), a concrete resource ('one organization'), and the lookup key ('numeric ID'), making it immediately distinct from the list-oriented siblings such as balena_list_organizations. It fully expresses the single-entity intent and matches the sole required parameter, organization_id.

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 implicitly signals when to use the tool—when a caller has a numeric organization ID and wants exactly one organization—but it never names alternatives or says when not to use it. Sibling tools like balena_list_organizations and balena_query_resource are not mentioned, so the agent must infer routing from the phrase 'by numeric ID'.

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

balena_get_releaseA
Read-onlyIdempotent

Get one release by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
release_idYes

TDQS

A3.6/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 no behavioral context beyond the schema, such as what happens if the release is not found or whether it returns the full release object. With annotations covering the key traits, 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.

Conciseness5/5

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

One short sentence with zero waste. The key information (get, one release, by numeric ID) is front-loaded and complete for a simple lookup tool.

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-resource getter with one parameter and strong annotations (readOnly, idempotent, non-destructive), the description is nearly complete. It lacks only explicit error behavior (e.g., 404 if not found) and return format, but no output schema exists and the tool's simplicity keeps this gap minor.

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. It does identify the parameter's role ('by numeric ID'), which adds meaning beyond the raw schema. However, it doesn't explain the ID's origin, format constraints beyond the schema, or how to obtain it, leaving the agent to infer that release_id is the balena release numeric identifier.

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 'Get one release by numeric ID' clearly states the verb (get), the resource (release), and the selection mechanism (numeric ID). It distinguishes itself from sibling tools like balena_list_releases (which lists multiple releases) and balena_query_resource (generic query), 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 Guidelines3/5

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

The description implies usage: use this when you need a single release by its numeric ID, versus balena_list_releases for multiple releases. However, it doesn't explicitly state when to prefer this over alternatives or mention any exclusions, leaving the routing partially to inference.

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

balena_get_teamB
Read-onlyIdempotent

Get one team by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idYes

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, so the safety profile is clear. However, the description adds no additional behavioral context such as error handling, response format, or authentication requirements. It does not contradict the annotations, but it also does not go 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 sentence that is efficient and to the point. It clearly states the action and the target with no unnecessary words. It is well-structured and front-loaded.

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 with one parameter and no output schema. The description conveys the core operation, and annotations cover safety. However, it lacks information about return values, error behavior, or any prerequisites. Given the low complexity, this might be acceptable, but it is not fully complete as it does not tell the agent what to expect from the call.

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 description coverage is 0%, and the description only says 'by numeric ID', which duplicates the schema's type information. It does not explain the meaning of the ID, any format expectations, or what the parameter is used for beyond being an identifier. This minimal addition does not compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description states a specific verb 'Get' and resource 'one team' with a clear identifier 'numeric ID'. This distinguishes it from list operations like balena_list_teams. It is concise and 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 does not provide guidance on when to use this tool versus alternatives. It does not mention that balena_list_teams should be used to get all teams, nor does it specify any prerequisites or context for when to use get versus list. The only implied usage is when you have a numeric ID, but this is not explicit.

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

balena_list_devicesC
Read-onlyIdempotent

List devices, optionally restricted to one fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
fleet_idNo

TDQS

C2.8/5.0
Behavior2/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 minimal behavioral context: it mentions optional fleet restriction but says nothing about pagination (top/skip), ordering, return format, or any limits. It does not contradict the annotations but also does not enrich them beyond the explicit fleet filter.

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 short sentence, highly concise with no filler. It front-loads the main action ('List devices') and appends the optional modifier. Every word earns its place, though it sacrifices completeness for brevity.

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?

Given the tool has 3 parameters (top, skip, fleet_id), no output schema, and 0% schema coverage, the description is under-specified. It covers only the fleet restriction, leaving pagination unexplained. An agent cannot safely call this with confidence about pagination or result limits. The low complexity of the tool is offset by the incomplete parameter documentation.

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 must compensate. It explains the fleet_id parameter indirectly ('restricted to one fleet') but says nothing about top and skip, which are clearly pagination controls. An agent would not understand how to paginate or limit results without inspecting the schema, which is insufficient for a tool with undocumented 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 clearly states the tool lists devices and optionally restricts to a fleet. This is a specific verb+resource with a clear scope. It doesn't explicitly differentiate from sibling tools like balena_get_device or balena_find_device_by_name, but the name and description make the list-all nature clear enough for an agent.

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 like balena_get_device (for a single device) or balena_find_device_by_name (for searching by name). There are no exclusions, prerequisites, or context about when this is the right choice. An agent must infer that this is the generic listing tool.

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

balena_list_device_typesB
Read-onlyIdempotent

List supported Balena device types.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

B3/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 minimal behavioral context; it does not mention pagination, filtering, or response format. With annotations covering safety, this is acceptable but not exemplary.

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 waste, and it front-loads the core purpose. Given the simplicity of the task, this is appropriately concise.

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 list tool with three parameters and no output schema, the description is underinformative. It lacks any mention of pagination, response structure, or filtering options, which are typically important for list operations. It is minimally adequate but leaves meaningful 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 33%, and the description itself provides no parameter details. Only 'parent_id' has a partial description in the schema, while 'top' and 'skip' are undocumented. The description fails to compensate for the low coverage, leaving agents without semantic understanding of the 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 clearly states the verb 'List' and the resource 'supported Balena device types', making the purpose unambiguous. However, it does not differentiate from sibling list tools like balena_list_devices or balena_list_fleets, so it loses a point for lack of sibling distinction.

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, nor any context about prerequisites or typical use cases. An agent would have to infer usage from the name alone, which is insufficient.

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

balena_list_fleetsA
Read-onlyIdempotent

List fleets associated with the authenticated user, excluding unrelated public fleets.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the description only adds scoping context. It usefully notes that unrelated public fleets are excluded, but adds no other behavioral details beyond what annotations and the schema already convey.

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 communicates the essential purpose without fluff. Every phrase adds meaningful scoping information, making it appropriately 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 read-only list operation, the description gives the essential scope and relies on annotations for safety. However, it omits any guidance about pagination semantics, optional filtering by parent_id, or output shape, and there is no output schema to fill those 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 33%, and the tool description does not compensate by explaining top, skip, or parent_id. The parent_id field has a schema description, but top and skip lack semantic explanation in both the description and schema, leaving pagination semantics to inference from parameter names and constraints.

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 ('List fleets') and immediately clarifies scope: only fleets associated with the authenticated user, excluding unrelated public fleets. This distinguishes it from broader fleet queries and sibling tools like get_fleet or list_organizations.

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 this tool is appropriate: to list fleets tied to the authenticated user. However, it does not explicitly call out alternatives or state when not to use this tool, though the user-scoped context is sufficient for basic routing.

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

balena_list_organization_membershipsC
Read-onlyIdempotent

List members of an organization.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

C2.7/5.0
Behavior2/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 no behavioral context beyond that—e.g., it does not mention that top/skip are used for pagination, how parent_id scopes the result, or what a 'membership' entails. With annotations covering safety, the description fails to add extra behavioral transparency such as result structure 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.

Conciseness4/5

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

The description is a single sentence with no wasted words, and it front-loads the core purpose. However, it is almost too terse—while concise, it sacrifices needed detail. Still, for the dimension of conciseness and structure, it is efficient and correctly ordered.

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?

Given that the tool has 3 optional parameters, a pagination pair (top/skip), and an ambiguous parent_id that can be a fleet, team, or organization ID, the description is far too minimal. It does not explain pagination, what is returned, or how the optional parameters affect the result. For a list operation without an output schema, more behavioral and parameter context is expected.

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 parent_id has a description). The tool description does not explain top or skip, nor does it clarify that parent_id is the organization within which members are listed. It adds only a weak implication that 'organization' relates to parent_id, but does not compensate for the undocumented 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 verb and resource: 'List members of an organization.' It is distinct from balena_list_organizations (which lists orgs themselves) and balena_list_team_memberships (which lists team members), though it does not explicitly contrast with those siblings. It lacks an explicit 'not team memberships' note, which would fully differentiate it among similar list tools in the sibling set.

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 this tool versus alternatives such as balena_list_team_memberships or balena_list_organizations. It does not mention prerequisites (e.g., organization ID) or when not to use it. The only implied usage is from the tool name and description itself, which is insufficient.

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

balena_list_organizationsA
Read-onlyIdempotent

List organizations visible to the API token.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

A3.7/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 safety behavior is covered. The description adds the useful context that results are limited to organizations visible to the API token, but it does not disclose pagination behavior, ordering, or response shape beyond the schema.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It states the action, resource, and scope immediately, making it easy for an agent to parse.

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 list operation, the description plus annotations and schema are largely sufficient: the agent knows it is safe, idempotent, and returns organizations visible to the token. Minor gaps remain around how top/skip affect results and whether parent_id filters nested scopes, but these are partially inferable from the 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 33% (only parent_id has a description), and the tool description does not explain top, skip, or parent_id. The parameter names and constraints suggest pagination and filtering, but the description adds no semantic meaning beyond what the sparse schema provides.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('organizations') and adds a clear scope ('visible to the API token'). This distinguishes it from sibling list tools like balena_list_fleets and balena_list_teams, and the auth-scope phrase clarifies what subset is returned.

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 intended use: fetch organizations accessible to the current API token. However, it does not explicitly name alternative tools or state when not to use this tool, leaving the choice between list_organizations and related list tools to inference.

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

balena_list_releasesB
Read-onlyIdempotent

List releases for a fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

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 no behavioral context beyond the basic listing action, such as pagination behavior (top/skip) or whether results are ordered. 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 a single, efficient sentence that states the core purpose without waste. It could be slightly more informative about pagination or scoping, but it earns its place as a concise summary.

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

Completeness3/5

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

For a simple read-only list tool with annotations covering safety, the description is minimally adequate. However, it lacks guidance on how parent_id affects results (fleet vs team vs org), pagination behavior, and how it relates to sibling list tools. The absence of an output schema means the agent gets no return-format hints, but the description doesn't compensate.

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 only 33% (only parent_id has a description). The description itself doesn't explain top or skip parameters, but their names and defaults (25, 0) are fairly self-explanatory as pagination controls. The parent_id description in the schema is clear, but the tool description doesn't add meaning beyond that.

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 'List releases for a fleet' uses a specific verb and resource, clearly identifying the operation. It distinguishes itself from sibling tools like balena_get_release (single release) and balena_list_services (different resource), 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 Guidelines3/5

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

The description implies a read-only listing operation for a fleet, which is clear enough for basic use. However, it provides no explicit guidance on when to use this tool versus alternatives like balena_get_release or balena_list_services, nor does it mention the optional parent_id parameter's role in scoping.

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

balena_list_servicesC
Read-onlyIdempotent

List services for a fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. However, the description adds no behavioral context such as pagination behavior (top/skip) or return format. It simply repeats the 'list' action, which is redundant with the name and annotations.

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 a single concise sentence, which is appropriately brief. However, it lacks any additional structure or context—there is no mention of parameters, return value, or usage notes. It is concise to the point of being minimal, which is acceptable for a trivial tool but does not earn higher marks for structure.

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 three parameters (including pagination controls) and no output schema, the description is highly incomplete. It does not explain what a 'service' is in this context, how pagination works, or how to scope to a specific fleet. The agent cannot reliably call this tool correctly without additional information from the schema (which is also sparse) or external knowledge.

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 parent_id has a description), and the description itself does not explain any parameters. It fails to mention that top and skip control pagination or that parent_id is an optional scope filter. With such low schema coverage, the description carries no compensating value, leaving parameter semantics entirely to the agent's guesswork.

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 ('List'), a clear resource ('services'), and a scope ('for a fleet'), which unambiguously distinguishes it from sibling tools like balena_list_fleets and balena_list_devices. It directly answers what the 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 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. It does not mention any exclusions, prerequisites, or comparison to other list tools. The agent must infer usage from the name alone, which is insufficient given the many list tools available.

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

balena_list_tagsA
Read-onlyIdempotent

List tags attached to a device, fleet, or release.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
kindYes
skipNo
owner_idYes

TDQS

A3.5/5.0
Behavior3/5

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

The description is consistent with annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) and adds that the tool covers device, fleet, or release tags. However, it does not disclose behaviors such as pagination via top/skip, what kind of resource identifier is needed, or what the returned tag data contains. The annotations cover the safety profile, but the description adds limited behavioral context beyond that.

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. It conveys the core purpose efficiently and is appropriately sized for a simple list 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?

While the annotations and schema provide useful safety and parameter constraints, the description does not explain owner_id, pagination behavior, or the output format of the returned tags. With no output schema and 0% parameter description coverage, the description leaves too much for the agent to infer, especially around how to scope the request to a particular resource.

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 needed to compensate by explaining owner_id, kind, top, and skip. It only loosely maps 'device, fleet, or release' to the kind enum, which is already visible in the schema. owner_id and pagination parameters are not explained at all, leaving the agent with insufficient semantic guidance for calling the tool correctly.

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 ('List') and resource ('tags') and narrows the scope to tags attached to a device, fleet, or release, which directly differentiates it from sibling tools like balena_create_tag, balena_delete_tag, and balena_list_variables. An agent can immediately identify what this tool does.

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 when you need to see existing tags on supported resource types, but it does not explicitly state when to use this tool instead of alternatives, nor does it mention prerequisites such as how to obtain owner_id. There is no direct confusion with siblings because this is the only tag-listing tool, but guidance is minimal.

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

balena_list_team_membershipsC
Read-onlyIdempotent

List members of a team.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

C2.7/5.0
Behavior2/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 no additional behavioral context such as pagination behavior, response format, or scoping constraints.

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 with no filler. It is concise, though its brevity deprives the agent of useful context that could have been added without bloat.

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?

With no output schema and low parameter coverage, the description must carry more weight. It leaves pagination (top/skip), parent_id semantics, and return values unexplained, so an agent cannot call the tool with full confidence.

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%, with top and skip undocumented in the schema. The description says 'team' but the parent_id schema accepts fleet, team, or organization ID, creating ambiguity. It does not explain pagination parameters or which parent_id values are valid.

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: 'List members of a team.' It is clear enough to distinguish from sibling list tools such as balena_list_teams by focusing on members rather than teams. However, it does not clarify the difference from balena_list_organization_memberships.

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 like balena_list_teams or balena_add_team_member. An agent is left to infer usage solely from the name and minimal description.

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

balena_list_teamsA
Read-onlyIdempotent

List teams visible to the API token.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
parent_idNoFleet, team, or organization ID when applicable

TDQS

A3.8/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, which covers safety and idempotency. The description adds that the list is scoped to the API token's visibility, which is useful context about what is returned (only what the token can see). This adds value beyond annotations, so a 4 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.

Conciseness5/5

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

A single sentence with no waste, front-loads the action and scope. Every 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?

The tool is a simple list operation with no output schema and no required parameters. The description and annotations cover safety and scope. Pagination is standard, and the description is sufficient for an agent to call it correctly. No critical missing information 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 33%: the description covers only 'parent_id' (mentions 'Fleet, team, or organization ID when applicable'). The description text does not explain 'top' or 'skip', but these are standard pagination parameters that may not need explanation. The description adds no extra semantics beyond the schema, but coverage is moderate, so baseline 3 is fair.

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 'List teams visible to the API token.' clearly states the action (list) and resource (teams), and specifies the scope (visible to the token). It distinguishes from siblings like balena_list_organizations, though it doesn't explicitly contrast with them, it's 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 use when you need to list teams, but doesn't explicitly state when to use this versus other listing tools. Given the sibling tools, there's no explicit guidance on when to choose this over balena_list_fleets or balena_list_organizations, but the purpose is clear enough for basic selection.

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

balena_list_variablesC
Read-onlyIdempotent

List environment or config variables for a fleet, device, service, or service installation.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
kindYes
skipNo
owner_idYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safe read behavior is covered. The description adds a little context by naming the resource scopes (fleet, device, service, service installation), but discloses no additional behavioral traits beyond that. 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 sentence with no filler and is front-loaded with the action and resource. However, it is slightly too sparse to serve as the sole source of guidance, so it does not earn a 5. It is still appropriately brief for a simple list 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?

With no output schema and 0% schema description coverage, the description is incomplete for an agent to call the tool correctly. It does not explain how kind and owner_id interrelate, what the response contains, or what the allowed enum values mean concretely. Given the tool's complexity and lack of other documentation, more context is needed.

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 must compensate for parameter meanings, but it does not explain owner_id, top, or skip. The phrase 'environment or config variables for a fleet, device, service, or service installation' loosely maps to the kind enum, but the description does not clarify how owner_id relates to each kind or how pagination works. This is insufficient for a tool with four 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 clearly states a read operation: 'List environment or config variables' for four scopes. It distinguishes this from variable mutation siblings like balena_create_variable, balena_update_variable, and balena_delete_variable. It does not explicitly contrast with other list tools, but the resource focus is specific enough.

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 such as balena_get_fleet or balena_list_tags. There is no mention of prerequisites, selection criteria, or exclusions. The verb 'List' implies a read operation, but no explicit when/not guidance is provided.

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

balena_move_deviceA
Destructive

Move a device to a different fleet. Confirm the destination fleet first.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
device_idYes
destination_fleet_idYes

TDQS

A4/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 does not need to restate that this is a write/mutation. It adds a confirmation-first guardrail but does not describe specific consequences beyond what 'move' implies. This is adequate given annotation coverage, but not rich.

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

Conciseness5/5

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

Two short sentences, each with a distinct purpose: stating the operation and instructing confirmation. There is no filler, and the most important operational constraint 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 3-parameter destructive move, the description plus schema and annotations cover the core invocation needs. The confirm parameter itself references 'reviewing the target and consequences', and the annotations supply the destructive safety signal. It lacks detail about post-move behavior or return value, but no output schema exists and the operation is straightforward.

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

Parameters3/5

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

The schema only semantically documents 'confirm'; device_id and destination_fleet_id are just typed integer constraints. The description helps by tying the parameters to 'a device' and 'a different fleet', but it does not explain how to resolve or validate those IDs. Coverage is low, and the description compensates only minimally.

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 ('Move'), names the resource ('a device'), and specifies the target ('a different fleet'). This clearly distinguishes it from sibling operations like rename_device, delete_device, or set_fleet_release without needing to inspect 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?

It gives clear context: use this when moving a device to another fleet. It also adds an explicit procedural instruction ('Confirm the destination fleet first'). It does not mention alternatives or exclusions, but no sibling tool offers a move-device operation, so the guidance is sufficient.

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

balena_pin_device_releaseB

Pin a device to a release, or pass null to return to fleet tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
device_idYes
release_idYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate this is a write operation (readOnlyHint=false) but do not cover idempotency or destructiveness (both false hints). The description adds the null behavior (return to fleet tracking), which is useful, but does not disclose other consequences like whether the device's current release is replaced, whether it requires specific permissions, or what the response looks like. Given annotations provide basic safety context, a 3 is reasonable.

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 wasted words, front-loaded with the action. It is concise and easy to parse, though it could be slightly more structured to include usage guidance. It does not ramble, so it earns a high conciseness score, but not a perfect 5 because it omits important contextual details that would improve structure.

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 and 0% schema description coverage, the description is too sparse. It only covers the null case for release_id and does not explain the general purpose of release_id, the effect of pinning, or any prerequisites. It also does not distinguish itself from the sibling tool balena_set_fleet_release. An agent would need additional information to call this tool with full confidence.

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 must compensate for parameter meaning. It only addresses release_id by explaining that null returns to fleet tracking, but does not explain what release_id normally refers to, nor does it clarify device_id beyond its obvious meaning. The description adds minimal value over the raw schema, and two of the two parameters are not adequately explained.

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 ('Pin') and resource ('a device to a release'), and includes the null case for returning to fleet tracking. It is clear about the core action, though it does not explicitly distinguish itself from the sibling tool balena_set_fleet_release, which handles fleet-level release assignment.

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 you want to pin a specific device to a release), and the null case provides a clear 'when not' (to return to fleet tracking). However, it does not mention any alternatives or conditions for choosing this tool over others like balena_set_fleet_release, leaving the decision to the agent's inference.

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

balena_query_resourceB
Read-onlyIdempotent

Read a page of a documented Balena v7 OData resource. This tool never changes data. API keys and SSH keys are excluded.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
skipNo
expandNo
filterNo
selectNo
orderbyNo
resourceYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, but the description reinforces this with 'never changes data' and adds unique context: API keys and SSH keys are excluded. It also qualifies the tool as working on documented v7 OData resources, which is useful beyond the structured metadata.

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, both substantive: the first states the operation and the second adds safety and scope exclusions. The key action is front-loaded and no filler is present.

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 generic OData query tool with 7 undocumented parameters, no output schema, and many specialized sibling tools, the description is too thin. It fails to explain how to construct filters, expansions, or selections, and gives no guidance on when to choose this tool over list/get siblings, despite annotations covering safety.

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% across 7 parameters, and the description offers no explanation of top, skip, expand, filter, select, orderby, or resource semantics beyond 'page.' The agent must infer OData query syntax entirely from parameter names and constraints, with no compensating detail in the 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 opens with 'Read a page of a documented Balena v7 OData resource,' giving a specific verb, object, and scope. It clearly marks this as the generic read-only query tool, distinct from the create/update/delete siblings, and adds an explicit exclusion for API/SSH keys.

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 when-to-use guidance is provided. The description does not mention the many specific balena_list_* and balena_get_* siblings, nor when an agent should prefer this generic OData resource query over those wrappers. The only implicit signal is 'documented resource,' which is too weak.

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

balena_remove_organization_memberA
Destructive

Remove one organization membership by numeric membership ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
membership_idYes

TDQS

A3.6/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 destructive nature is covered. The description adds a small behavioral detail: it removes exactly one membership, not a range or all memberships. However, it does not disclose consequences such as permanence or downstream effects, though the confirm parameter in the schema partially compensates.

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, direct sentence that is front-loaded with the core action and scope. There is no filler or redundant wording, and it earns its place by clarifying exactly what is removed.

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-by-ID operation, the description plus annotations and confirm schema cover the essentials: what is removed, how to identify it, and that confirmation is required. It could mention how to obtain the membership ID (e.g., via balena_list_organization_memberships), but this is not critical for invoking the tool 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 description gives meaning to membership_id by calling it a 'numeric membership ID', which is somewhat redundant with the schema's property name but helpful. It does not explain the confirm parameter, though the schema already provides a clear description for it. With 50% schema coverage, the description adds just enough context for membership_id.

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 ('Remove'), a precise resource ('organization membership'), and a scoping method ('by numeric membership ID'). It clearly distinguishes this from sibling tools like balena_remove_team_member, which operates on a different 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?

The description states what the tool does but gives no guidance on when to choose it over alternatives, such as balena_add_organization_member or balena_list_organization_memberships. There are no preconditions, exclusions, or references to related tools.

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

balena_remove_team_memberC
Destructive

Remove one team membership by numeric membership ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
membership_idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, but the description adds no behavioral context beyond that. It does not mention irreversibility, permissions, the confirm guardrail, or any error conditions, so it fails to contribute value beyond the structured metadata.

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?

A single, front-loaded sentence with no redundancy. It earns its place but omits critical safety and usage detail, though that omission is a matter of completeness rather than conciseness.

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 mutation with a required confirm flag, the description is incomplete. It does not explain that confirm must be true, that removal is permanent, how to obtain the membership ID, or how this differs from removing an organization member.

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 says 'by numeric membership ID,' but the schema already defines membership_id as an integer. The confirm parameter is not addressed, and with 50% schema description coverage, the description should clarify the parameters further but only restates what is already in the schema.

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

Purpose5/5

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

The description states a specific verb ('Remove'), a resource ('team membership'), and an identifier ('numeric membership ID'), making the tool's purpose unambiguous. It is clearly distinct from sibling tools like remove_organization_member and add_team_member.

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, nor any prerequisites such as obtaining the membership_id from a list operation. The confirm requirement and the distinction from remove_organization_member are not mentioned, leaving the agent to infer usage context.

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

balena_rename_deviceB

Rename a device.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
device_idYes

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already indicate the tool is not read-only and not idempotent, but the description adds no additional behavioral context such as effects, reversibility, or required permissions. It does not contradict the annotations, but it also does not meaningfully disclose anything beyond the basic action.

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, direct, front-loaded sentence with no filler. It is appropriately concise for a simple operation, though it might be slightly too terse to fully compensate for missing 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?

The tool is simple and has only two required parameters, but the description alone is not complete enough for an agent to fully understand side effects, usage nuances, or parameter semantics. The schema helps, but the description leaves important gaps unfilled.

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 0% and the description does not mention either parameter. The property names 'name' and 'device_id' are fairly clear from the schema, but the description fails to compensate for the lack of parameter-level explanations.

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 exact action ('Rename') and resource ('a device'), making it unambiguous. It also naturally distinguishes this from sibling tools like balena_rename_fleet and balena_set_device_note.

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: use this when renaming a device. However, it provides no explicit comparison to alternatives, no exclusions, and no context about when this should be preferred over similar device-modifying operations.

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

balena_rename_fleetC

Rename a fleet.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
fleet_idYes

TDQS

C2.3/5.0
Behavior2/5

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

The description only says 'Rename a fleet.' It discloses no side effects, requirements, or irreversible consequences. Annotations indicate it is not read-only and not destructive, but the description adds no additional behavioral context 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.

Conciseness2/5

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

The description is a single short sentence, which is concise but also under-specified. It lacks structure and any additional information, making it more of a tautology than an informative description.

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 rename operation with two parameters, the description is incomplete. It does not explain parameter meanings, side effects, or how this differs from other rename operations. An agent must infer the role of 'name' from the tool name.

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. Schema coverage is 0%, so the description fails to explain that 'name' is the new name or that 'fleet_id' identifies the target fleet. The schema provides types and constraints but no semantic meaning.

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 ('Rename') and resource ('fleet'), clearly indicating the action. It does not explicitly differentiate from sibling tools like rename_device, but the tool name itself disambiguates. It is clear but minimal.

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?

The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites, side effects, or when-not-to-use conditions. It is a bare statement with no contextual advice.

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

balena_set_device_noteC

Set a device note.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
device_idYes

TDQS

C2/5.0
Behavior2/5

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

The description discloses no behavior beyond what the annotations already signal. It does not say whether the note is replaced, appended, or cleared, nor does it mention permissions, return behavior, or side effects. The annotations are not contradicted, but the description adds no transparency value.

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 single sentence is concise and front-loaded, but it is under-specified rather than usefully concise. There is no structural breakdown or additional context that helps an agent invoke the tool correctly.

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 two required parameters and no output schema, the description leaves the behavioral contract unclear. It provides no overwrite semantics, no device-targeting context, and no sense of what 'set' means in the product domain, making it barely sufficient to identify intent but not sufficient for confident invocation.

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 names neither parameter. It makes no attempt to explain that device_id identifies the target device or that note is the text payload, so it completely fails to compensate for the schema gap.

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

Purpose2/5

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

The description is a near-verbatim restatement of the tool name ('Set a device note.'), offering no additional detail about what a device note is or how setting it behaves. It names a resource, but the purpose semantics are essentially provided by the tool name itself.

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 this tool rather than related mutations such as balena_set_release_note, balena_update_variable, or balena_create_tag. No context, 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.

balena_set_fleet_releaseA
Destructive

Pin an entire fleet to a release. This changes the target for all unpinned devices; confirm the fleet and release first.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after reviewing the target and consequences
fleet_idYes
release_idYes

TDQS

A4.2/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, so the mutation nature is known. The description adds the specific behavioral detail that it changes the target for all unpinned devices (sparing already-pinned ones) and emphasizes the need for confirmation via the confirm parameter. This goes beyond the annotations by explaining the exact impact on devices, though it does not mention irreversibility or other side effects beyond what destructiveHint already implies.

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 tight two sentences. The first sentence front-loads the core action, and the second adds a necessary caution. No filler or redundancy exists; every 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 destructive operation with three required parameters and no output schema, the description effectively communicates the scope (fleet-wide, unpinned devices only), the need for confirmation, and the effect. It does not explain what happens to already-pinned devices (presumably they remain pinned) or mention validation of release/fleet existence, but these are minor given the annotations already flag destructive behavior and the description clearly states the core behavior. Overall, an agent can safely invoke this 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 only 33% (only confirm has a description). The description compensates partially by clarifying confirm as a safety check ('confirm the fleet and release first'), which aligns with the schema's const=true constraint. However, fleet_id and release_id are left without added meaning; they are self-explanatory from context, but the description does not elaborate on their formats or relationships. Given the low schema coverage, the description adds some value but does not fully compensate for the two undocumented IDs.

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+resource+target: "Pin an entire fleet to a release." This clearly differentiates it from the sibling balena_pin_device_release (which pins a single device) and from the many list/get/query tools. The intent is unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context by stating the scope ("all unpinned devices") and a warning to confirm the fleet and release first. It does not explicitly name balena_pin_device_release as the alternative for single-device pinning, but the scope statement implicitly signals when this tool applies. No explicit when-not-to-use is given, so a 4 is appropriate.

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

balena_set_release_noteC

Set the note on a release.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYes
release_idYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the tool mutates state but is not destructive. The description doesn't add details like whether the note overwrites existing notes, or any side effects. It doesn't contradict annotations, but it adds minimal 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.

Conciseness4/5

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

The description is a single short sentence with no wasted words. It is front-loaded and easy to parse. It could be slightly more informative, but for its brevity it earns a high score on conciseness.

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?

Given the tool is a mutation (not read-only) and lacks an output schema or rich annotations, the description is inadequate. An agent needs to know what the note update accomplishes, any constraints (e.g., max length), and whether it's idempotent (annotations say false). The description doesn't fill these gaps, leaving the agent under-informed.

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 has 0% description coverage, so the description must clarify parameter meaning. It only mentions 'note' generically, but doesn't explain that note is the text to set with a max length of 2000, or what release_id refers to precisely (e.g., the release's unique identifier). The parameter names are somewhat self-explanatory, but the description offers no additional semantic guidance.

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 'Set the note on a release' clearly states the verb (set) and the resource (release note), and combined with the tool name it is unambiguous. It doesn't explicitly distinguish from sibling tools, but the action is specific enough that an agent can infer it operates on a release's note, differing from other set/update 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 on when to use this tool versus alternatives like balena_set_fleet_release or balena_pin_device_release. The description gives no context on typical usage scenarios, prerequisites (e.g., having the release ID), or exclusions. An agent would have to rely on the schema and name to infer usage.

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

balena_update_tagC

Update a tag value by tag ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
valueYes
tag_idYes

TDQS

C2.8/5.0
Behavior2/5

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

The description adds no behavioral information beyond what annotations already state. Annotations already show readOnlyHint=false, signaling mutation, but the description does not discuss side effects, permissions, immediacy of changes, 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.

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler words. However, brevity is achieved at the cost of useful operational detail, so it is efficient but under-specified.

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 and minimal annotation context, this description is incomplete. It omits how kind should be interpreted, where tag_id originates, and what a successful update returns, leaving an agent to guess at key 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 carries the full burden of explaining parameters. It only implicitly maps 'tag value' to value and 'tag ID' to tag_id, leaving the intended meaning of the required kind enum and its relationship to tag_id 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?

States a clear verb and object: 'Update a tag value by tag ID.' It distinguishes itself from sibling tag lifecycle tools like balena_create_tag, balena_delete_tag, and balena_list_tags, and from balena_update_variable by naming the target 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?

No guidance on when to use this tool versus alternatives. It does not mention that tag_id likely comes from balena_list_tags, nor does it contrast with create_tag or delete_tag. Usage context is only implied by the name and verb.

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

balena_update_variableC

Update the value of an existing variable by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
valueYes
variable_idYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false, indicating a write operation. The description adds no new behavioral detail such as error behavior, side effects, permission requirements, or value replacement semantics. openWorldHint=true suggests external effects, but the description does not elaborate.

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, direct sentence with no wasted words. The action is front-loaded and the description is appropriately sized for a simple tool, though it sacrifices substance for brevity.

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?

Missing critical operational context for a mutation tool with no output schema: behavior when variable_id doesn't exist, whether value replaces or appends, authorization needs, or what the return value is. The description is under-specified for an agent to invoke it confidently.

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 does not explain the purpose or semantics of kind, value, or variable_id. The enum values exist in the schema but are not interpreted. The agent receives no additional meaning beyond the bare field 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 states a specific verb 'Update', a clear resource 'variable', and scope 'existing by ID'. This clearly distinguishes it from sibling tools like balena_create_variable and balena_delete_variable. No ambiguity.

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. It does not mention prerequisites, differences from create/delete/list variables, or any conditions that would select this tool. The implied context of updating an existing variable is weak and left to inference.

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

balena_whoamiA
Read-onlyIdempotent

Show the Balena account associated with the API token.

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 declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-destructive read. The description adds little beyond restating the basic behavior (showing the account). It doesn't disclose any additional behavioral traits such as error conditions (e.g., invalid token) or whether it requires an active session. With annotations covering the safety profile, the description's contribution is limited, hence a 3.

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, succinct sentence: 'Show the Balena account associated with the API token.' It conveys the essential purpose without any fluff. It is perfectly sized for a zero-parameter tool and is front-loaded with the action and resource.

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

Completeness4/5

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

Given the tool's simplicity (zero parameters, no output schema), the description is largely complete. It doesn't specify the output format or behavior on invalid tokens, but such details may be covered by the API contract. The description is adequate for an agent to understand its purpose and call it without further clarification.

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 schema description coverage is 100% (no properties to describe). With no parameters, the description does not need to add parameter semantics, and the baseline of 4 is appropriate for a no-parameter tool.

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 purpose: to show the Balena account associated with the API token. It specifies a clear verb ('Show'), a resource ('Balena account'), and a context ('associated with the API token'). It is distinct from all siblings, which focus on listing, getting, or mutating specific resources; no other tool is described as identifying the current account.

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 that this tool is for retrieving the current account identity, but it does not explicitly state when to use it versus alternatives like balena_get_organization or balena_list_organizations. An agent might infer it is for authentication checks, but no explicit when/when-not guidance is given.

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. 41 tool updatesv0.3.0
    • First observedbalena_add_organization_member
    • First observedbalena_add_team_member
    • First observedbalena_create_fleet
    • First observedbalena_create_tag
    • First observedbalena_create_team
    • First observedbalena_create_variable
    • First observedbalena_delete_device
    • First observedbalena_delete_fleet
    • First observedbalena_delete_tag
    • First observedbalena_delete_team
    • First observedbalena_delete_variable
    • First observedbalena_find_device_by_name
    • First observedbalena_get_device
    • First observedbalena_get_fleet
    • First observedbalena_get_organization
    • First observedbalena_get_release
    • First observedbalena_get_team
    • First observedbalena_list_device_types
    • First observedbalena_list_devices
    • First observedbalena_list_fleets
    • First observedbalena_list_organization_memberships
    • First observedbalena_list_organizations
    • First observedbalena_list_releases
    • First observedbalena_list_services
    • First observedbalena_list_tags
    • First observedbalena_list_team_memberships
    • First observedbalena_list_teams
    • First observedbalena_list_variables
    • First observedbalena_move_device
    • First observedbalena_pin_device_release
    • First observedbalena_query_resource
    • First observedbalena_remove_organization_member
    • First observedbalena_remove_team_member
    • First observedbalena_rename_device
    • First observedbalena_rename_fleet
    • First observedbalena_set_device_note
    • First observedbalena_set_fleet_release
    • First observedbalena_set_release_note
    • First observedbalena_update_tag
    • First observedbalena_update_variable
    • First observedbalena_whoami

TDQS

B3/5.0

Scored across 41 tools

Disambiguation4/5

Most tools are clearly scoped to a single resource and action, such as list_fleets, create_tag, or pin_device_release, so an agent can usually tell them apart. The main ambiguity is balena_query_resource, which overlaps with every specific list/get tool, and the release-pinning tools also require careful reading.

Naming Consistency4/5

All tools share a consistent balena_ prefix and mostly follow a verb_noun snake_case pattern, which makes the set predictable. Minor inconsistencies between add and create, or update and set, are present but do not seriously harm usability.

Tool Count2/5

At 41 tools, the surface is well beyond the typical well-scoped range and will present agents with a long selection list. The generic query_resource tool also makes many of the specialized list/get tools feel like optional convenience wrappers rather than essential additions.

Completeness4/5

The set covers the main Balena workflows well: organizations, teams, fleets, devices, releases, tags, and variables, with solid CRUD-style coverage for tags and variables. Notable gaps such as organization creation, release deletion, and remote device actions are noticeable but not fatal to the core management workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers