Skip to main content
Glama
woofdogtw
by woofdogtw

sylvia-iot-mcp

An MCP server that exposes sylvia-iot-core management APIs as tools for AI assistants (Claude, etc.).

Note: This project is a practice ground for AI-assisted development using Claude Code with a spec-driven workflow powered by OpenSpec.

Features

66 tools across 10 capability areas:

Category

Tools

Auth

auth_tokeninfo, user_get, user_update

OAuth2 Clients

client_create/count/list/get/update/delete

Units

unit_create/count/list/get/update/delete

Applications

application_create/count/list/get/update/delete/stats, application_send_dldata

Networks

network_create/count/list/get/update/delete/stats, network_send_uldata

Devices

device_create/count/list/get/update/delete, bulk and range create/delete

Device Routes

device_route_create/count/list/delete, bulk and range create/delete

Network Routes

network_route_create/count/list/delete

Downlink Buffer

dldata_buffer_count/list/delete

Data

application/network uplink/downlink data counts and lists, coremgr operation logs

Related MCP server: OpenAPI MCP Server

Requirements

  • Node.js >= 18

  • A running sylvia-iot-core instance

  • An OAuth2 client with client_credentials grant enabled

Setup

1. Create an OAuth2 client

The MCP server authenticates to sylvia-iot-core using the client_credentials grant. You need a private (confidential) client with this grant enabled.

If you have admin access, you can create one via the sylvia-iot-auth API or management UI.

2. Configure environment variables

Copy .env.example to .env and fill in your values:

cp .env.example .env
SYLVIA_IOT_AUTH_URL=http://your-host/auth
SYLVIA_IOT_COREMGR_URL=http://your-host/coremgr
SYLVIA_IOT_DATA_URL=http://your-host/data
SYLVIA_IOT_CLIENT_ID=your-client-id
SYLVIA_IOT_CLIENT_SECRET=your-client-secret

The URL defaults point to a local sylvia-iot-core instance started with default settings.

3. Run the server

npm install
node src/index.js

Claude Code / Claude Desktop Integration

Add the server to your MCP config (e.g. ~/.claude.json for Claude Code).

Via npx (no installation required):

{
  "mcpServers": {
    "sylvia-iot": {
      "command": "npx",
      "args": ["-y", "github:woofdogtw/sylvia-iot-mcp"],
      "env": {
        "SYLVIA_IOT_AUTH_URL": "http://your-host/auth",
        "SYLVIA_IOT_COREMGR_URL": "http://your-host/coremgr",
        "SYLVIA_IOT_DATA_URL": "http://your-host/data",
        "SYLVIA_IOT_CLIENT_ID": "your-client-id",
        "SYLVIA_IOT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Via local checkout:

{
  "mcpServers": {
    "sylvia-iot": {
      "command": "node",
      "args": ["/path/to/sylvia-iot-mcp/src/index.js"],
      "env": {
        "SYLVIA_IOT_AUTH_URL": "http://your-host/auth",
        "SYLVIA_IOT_COREMGR_URL": "http://your-host/coremgr",
        "SYLVIA_IOT_DATA_URL": "http://your-host/data",
        "SYLVIA_IOT_CLIENT_ID": "your-client-id",
        "SYLVIA_IOT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Once connected, you can manage your IoT platform conversationally:

"List all units", "Create a new application for unit X", "Show me the latest uplink data from network Y"

Authentication

The server uses OAuth2 client_credentials grant to obtain a bearer token. The token is cached in memory and refreshed automatically on expiry or 401 responses. No user login is required.

Development

# Watch mode
npm run dev

# Run end-to-end tests (requires running sylvia-iot-core)
node test-mcp.mjs

Available Tools

66 tools
application_countA

Get the count of applications in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit ID (required for normal users).
containsNoFilter by code substring (case insensitive).

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates that this is a read-only counting operation, but it does not mention whether the count includes all applications in the unit, whether authorization affects results, how the contains filter interacts with the count, or what happens for unknown units. These details are left entirely to inference.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler. It front-loads the core operation and resource, making the tool's purpose immediately clear.

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

Completeness4/5

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

For a simple two-parameter count tool with 100% schema coverage, the description plus schema is mostly sufficient. The only notable gap is the absence of any mention of the return shape, but 'count' reasonably implies a numeric result, and no complex output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents that unit is the required unit ID and contains is a case-insensitive code substring filter. The description adds no extra parameter semantics beyond 'in a unit', but because the schema is fully self-explanatory, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get the count'), a specific resource ('applications'), and a scoping context ('in a unit'). This clearly distinguishes it from sibling count tools like unit_count or network_count, which target different resources, and from application_list/application_get, which return records rather than counts.

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

Usage Guidelines3/5

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

The purpose of counting is reasonably implied by the tool name and description, so an agent can infer when to use it. However, there is no explicit guidance about when to prefer application_count over application_list or application_stats, nor any mention of when not to use it.

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

application_createA

Create an application. Returns applicationId and the one-time default password.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoAMQP message TTL in milliseconds (0 = unlimited).
codeYesApplication code, pattern [A-Za-z0-9][A-Za-z0-9-_]*. Lowercased.
infoNoOther information.
nameNoDisplay name.
lengthNoAMQP max queue length (0 = unlimited).
unitIdYesAssociated unit ID.
hostUriYesApplication queue URI (e.g. amqp://host/vhost).

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does disclose the key effect (creating an application) and the important non-obvious return of a one-time default password. However, it does not mention permissions, idempotency, side effects, or duplicate handling, so the disclosure is adequate but minimal.

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

Conciseness5/5

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

The description is two short sentences with no filler, front-loaded with the action, and every sentence adds information: what the tool does and what it returns. This is appropriately sized.

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 schema covers parameter semantics thoroughly and the description states the return values, but there is no output schema, no annotation context, and no guidance on valid usage or constraints beyond the schema. For a creation tool with 7 parameters, the description alone is somewhat thin, though the schema compensates for parameter details.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters, required fields, and constraints. The tool description adds no parameter-level meaning beyond what the schema provides, which matches the baseline for full schema coverage.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Create an application.' It also names the unique return values (applicationId and one-time default password), making it clearly distinguishable from sibling tools like application_get, application_update, and application_delete.

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 imperative 'Create an application' implies this tool is used for creating applications, but there is no explicit guidance about when not to use it, prerequisites such as an existing unit, or how it relates to application_update for modifications. Usage is implied, not clearly contextualized.

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

application_deleteA

Delete an application and all its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesThe application ID to delete.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It clearly indicates a destructive action and, importantly, notes that deletion cascades to 'all its resources', which is a critical side effect. It does not mention reversibility or error behavior, but the core destructive trait is explicit.

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 adds value, especially the resource-scope qualifier 'and all its resources'.

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

Completeness4/5

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

For a one-parameter delete operation with no output schema, the description adequately covers the input and the effect of the call, including the cascade to all resources. It could add notes on permanence or expected response, but the low complexity makes the current description sufficient for safe invocation.

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

Parameters3/5

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

The schema already documents applicationId at 100% coverage with a clear description ('The application ID to delete'). The tool description adds no additional parameter-level meaning, so the baseline of 3 applies.

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

Purpose5/5

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

The description uses a clear imperative verb ('Delete') with a specific resource ('an application') and a meaningful scope qualifier ('and all its resources'). This makes the tool's function unambiguous and distinguishes it from siblings like application_update, application_get, and application_list.

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

Usage Guidelines3/5

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

Usage is implied by the verb: use this tool when an application should be removed. However, the description provides no explicit guidance on prerequisites, consequences, or when not to use it, leaving the agent to infer the decision context from the tool name and sibling tools.

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

application_getB

Get details of a specific application.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesThe application ID to retrieve.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states that a specific application is retrieved, with no mention of return format, error behavior, permissions, or any side effects. This is minimal and leaves key operational behavior undisclosed.

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, direct sentence with no filler. It is appropriately sized for a simple getter tool and the primary action is 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?

For a simple one-parameter read operation, the description is minimally workable, but it omits what 'details' include and any error or response expectations. The lack of an output schema and annotations means the description alone does not fully prepare the agent for runtime behavior.

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

Parameters3/5

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

The schema already covers the only parameter (applicationId) with a clear description, and schema description coverage is 100%. The tool description adds no additional parameter meaning beyond 'specific application,' so the baseline score applies.

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

Purpose4/5

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

The description states a clear verb ('Get') and resource ('details of a specific application'), which distinguishes it from list/count/create/update/delete siblings. It does not explicitly name alternatives or scope conditions, so it stops short of a top score.

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 application_list, application_stats, or other application tools. The agent must infer usage solely from the tool name and schema.

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

application_listB

List applications in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: code, created, modified, name.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
containsNoFilter by code substring.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'List applications in a unit' and does not disclose default behavior, pagination semantics, filtering behavior, authorization requirements, or whether this is a read-only operation.

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 or redundancy, which is strong for conciseness. It is slightly too terse to fully orient an agent, but it avoids unnecessary repetition of schema details.

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 no annotations, the description leaves out important contextual details such as return shape, pagination behavior, and any access constraints. For a tool with five parameters, a one-clause description is not enough to fully guide an agent.

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

Parameters3/5

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

Schema description coverage is 100%, and the input schema already documents all five parameters including sort, limit, offset, contains, and unit. The description adds no new parameter meaning beyond the contextual phrase 'in a unit,' which aligns with the required unit parameter, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('List'), a specific resource ('applications'), and a clear scope ('in a unit'), making the tool's purpose immediately understandable. It distinguishes itself from sibling tools like application_count and application_get, which clearly serve different operations.

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

Usage Guidelines2/5

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

No explicit guidance is given for when to use this tool versus alternatives such as application_count, application_get, or other list tools. The context implies a listing use case, but there is no stated condition, exclusion, or pointer to a sibling for different needs.

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

application_send_dldataA

Send downlink data to a device via an application.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesData payload in hexadecimal string format.
deviceIdYesTarget device ID.
applicationIdYesThe application ID.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the core action and does not explain side effects, delivery semantics, permissions, error behavior, or what happens after the downlink data is sent.

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. It expands the terse 'dldata' abbreviation into 'downlink data' and clearly front-loads the operation, target, and context.

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 tool with three fully documented parameters, the definition is minimally sufficient. However, with no annotations and no output schema, it lacks behavioral context such as delivery confirmation, failure modes, and whether the action is immediate or queued.

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

Parameters3/5

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

The input schema already provides 100% parameter coverage with clear descriptions: hex payload, target device ID, and application ID. The description adds no parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb, 'send,' and a specific resource, 'downlink data,' while also identifying the target ('a device') and the context ('via an application'). This clearly distinguishes it from the sibling tool network_send_uldata by direction and entity.

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 use case is implied by the description: use this tool when you need to send downlink data to a device through an application. However, it does not explicitly mention alternatives or state when not to use it, leaving some inference to the agent.

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

application_statsA

Get queue statistics for an application (uldata, dldataResp, dldataResult queues).

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationIdYesThe application ID.

TDQS

A3.7/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. 'Get' and 'statistics' imply a read-only inspection operation, and naming the queues adds scope context. However, it does not explicitly state that the tool has no side effects, what metrics are returned, or whether authentication or other preconditions apply.

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 action, target, and queue scope efficiently.

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 tool with full schema coverage, the description is minimally sufficient for an agent to identify and invoke it. However, there is no output schema and the description does not specify the shape or meaning of the returned statistics, leaving some ambiguity about what 'queue statistics' actually contains.

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

Parameters3/5

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

The schema already fully documents the only parameter, applicationId, with 100% coverage. The description adds no parameter-level detail beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('queue statistics'), and the target ('an application'), and explicitly names the three queues involved. This clearly differentiates it from sibling tools like network_stats and the various data_application_* list/count tools.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when you need queue statistics for an application, specifically for uldata, dldataResp, and dldataResult queues. However, it does not explicitly contrast it with alternatives such as network_stats or data_application_* tools, nor does it state when not to use it.

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

application_updateB

Update an application. password is required when changing hostUri.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoAMQP message TTL in milliseconds.
infoNoOther information (full replacement).
nameNoNew display name.
lengthNoAMQP max queue length.
hostUriNoNew queue URI. Triggers reconnection.
passwordNoNew queue connection password (required when changing hostUri).
applicationIdYesThe application ID to update.

TDQS

B3.3/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden for behavior. It only states that password is needed when changing hostUri; it does not mention whether the update is partial or full, whether changes are reversible, what side effects occur, or what response is returned.

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

Conciseness5/5

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

The description is a single opening sentence plus one high-value caveat; there is no repetition or filler. The most important fact about the operation is 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?

With a complete input schema, the agent has enough parameter-level information to invoke the tool. Still, for a mutating tool with no annotations and no output schema, the description does not convey the overall update semantics, authorization scope, or result, leaving meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including the hostUri/password dependency. The description repeats that dependency but adds essentially nothing beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb and resource ('Update an application'), so an agent knows this is a mutation targeting an existing application. However, it gives no details that distinguish application_update from the many sibling update tools other than the resource name, so it stops short of a 5.

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

Usage Guidelines3/5

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

The verb/resource pairing implies this tool is for modifying an existing application, and the hostUri/password note is a useful rule for one particular update. But it never says when to choose this over application_create, application_delete, or other application operations, and it does not state exclusions.

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

auth_tokeninfoA

Get information about the current access token (userId, account, name, roles, clientId, scopes).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. 'Get' clearly indicates a read-only operation, and 'current access token' signals that the tool relies on the caller's authentication context. It does not, however, disclose behavior for invalid or expired tokens, or the exact response structure beyond the listed field names.

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 wasted words. It front-loads the action and resource, then lists the relevant fields efficiently.

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

Completeness4/5

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

For a zero-parameter introspection tool, the description is largely complete: it says what the tool does, what context it uses, and what fields to expect. The only missing elements are notes about failure modes or authentication prerequisites, which are partially implied by the phrase 'current access token.'

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

Parameters4/5

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

There are zero parameters, so the schema is unambiguous and the baseline is 4. The description adds useful context by naming the token identity fields the agent can expect, reducing uncertainty about the return payload despite the absence of an output schema.

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

Purpose5/5

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

The description uses a specific verb ('Get information') and a precise resource ('current access token'), then enumerates the expected fields: userId, account, name, roles, clientId, scopes. This clearly distinguishes it from the user, client, network, and device CRUD siblings, which operate on different resources.

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

Usage Guidelines3/5

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

The phrase 'current access token' implies the use case: inspect details about the token authenticating the current request. However, there is no explicit statement of when to prefer this over alternatives like user_get or client_get, or what edge cases should route elsewhere.

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

client_countA

Get the count of OAuth2 clients owned by the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description must convey behavioral traits on its own. The verb 'Get' signals a read-only operation and the scope is explicit, but the description does not disclose authentication requirements, rate-limit implications, or whether the count can be filtered. For a zero-parameter count endpoint this is a minor gap.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. The action, resource, and scope are all present, and nothing is repeated from the name.

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

Completeness4/5

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

For a zero-parameter operation the description is nearly complete: it identifies the resource, scope, and operation. It does not explicitly state the return format, but the lack of an output schema and the simplicity of a count operation make this a minor omission.

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

Parameters4/5

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

There are no parameters, so the schema and description have nothing to elaborate. Baseline 4 applies because no parameter documentation is needed and the description does not introduce any confusion.

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

Purpose5/5

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

Description names a specific action (get count) on a specific resource (OAuth2 clients) with a scope qualifier (owned by current user). This clearly distinguishes it from sibling tools like client_list and client_get, which return collections or individual records rather than a count.

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

Usage Guidelines2/5

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

No guidance is provided about when to choose client_count over client_list or how the count relates to pagination or listing. The 'owned by current user' qualifier provides some context, but there are no explicit exclusions or alternatives.

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

client_createA

Create an OAuth2 client. Use credentials:true to create a private client with a secret.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesClient display name.
imageNoURI of the client icon.
scopesYesAllowed scopes.
credentialsNoSet true to create a private client with a secret (default false).
redirectUrisYesAllowed redirect URIs.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool creates a client and that credentials:true yields a private client with a secret, but this largely restates the schema's property description. It does not disclose side effects, authorization requirements, what happens on creation, or what the response contains. For a mutation tool with no annotation support, this is insufficient.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The core action is front-loaded, and the second sentence isolates the most important optional behavior. It is easily scannable and appropriately sized for a simple create 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?

The description plus fully covered schema is adequate for invoking the tool correctly, since all five parameters are documented. However, there is no output schema, no annotations, and the description does not mention return behavior, authentication expectations, or any post-creation effects. For a create tool, this leaves some operational context missing, though the core call is understandable.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even though the description adds little parameter meaning. The description's credentials:true note does add some clarity, but the schema already documents the same behavior in the credentials property description. Thus the description provides no significant additional semantic value beyond the schema.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'Create an OAuth2 client.' This clearly distinguishes the tool from its siblings (client_list, client_get, client_update, client_delete, client_count) because it is the only create-focused operation. The additional note about private clients adds useful specificity without obscuring the core purpose.

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 gives a clear parameter-level guideline: use credentials:true to create a private client with a secret. However, it does not explicitly state when to choose this tool over alternatives such as client_update, nor does it mention any prerequisites for creating a client. The usage context is implied by the create verb but not fully spelled out.

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

client_deleteB

Delete an OAuth2 client.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientIdYesThe client ID to delete.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It correctly signals a destructive action, but it does not mention irreversibility, cascading effects on related resources, authentication requirements, or result behavior. A delete tool needs more transparency about consequences.

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 filler or redundant phrasing. It is efficient, though slightly under-specified in behavioral terms; it leans toward terseness rather than rich, front-loaded context.

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 one-parameter delete tool with full schema coverage, the basic statement is close to sufficient. However, with no annotations and no output schema, the description omits important context about irreversibility and side effects, so it is not fully complete.

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

Parameters3/5

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

The schema fully documents the sole required parameter, clientId, with 100% description coverage, so the description does not need to add parameter-level detail. The baseline of 3 applies because the schema carries the load and the description adds no extra semantic value about the 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 states a specific verb ('Delete') and a precise resource ('OAuth2 client'), making it immediately clear what the tool does. It also distinguishes this tool from sibling client operations like create, update, get, list, and count, and from other resource delete 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 given about when to use this tool versus alternatives, such as client_update or client_create. There are no prerequisites, warnings, or context about when deletion is appropriate, so the agent must infer usage from the tool name alone.

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

client_getA

Get details of a specific OAuth2 client, including its secret if private.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientIdYesThe client ID to retrieve.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. The verb 'Get' signals a read operation, and 'including its secret if private' is a meaningful disclosure about sensitive return data that is absent from the schema. It stops short of describing permissions, error cases, or the full response, which keeps it just below a perfect score.

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 definition is a single concise sentence with the main action first and the important secret caveat appended without any filler. Every word contributes meaningful information, making it well-structured and easy 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 one-argument getter with no output schema, the description covers the resource, the action, and a key edge case (secret visibility). It lacks explicit sibling routing and details about the returned payload shape, but these are minor gaps for such a simple operation.

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

Parameters3/5

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

The schema already describes clientId as 'The client ID to retrieve' with 100% coverage, and the tool description adds no syntax, format, or example details. Since the schema carries the parameter meaning, the baseline of 3 applies without additional contribution from 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 names a specific verb ('Get'), a resource ('OAuth2 client'), and a scope ('specific'), which clearly distinguishes it from client_list (enumeration) and client_create/update/delete (mutations). The qualifier 'specific' plus the clientId parameter makes the tool's 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 Guidelines3/5

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

There is no explicit statement of when to prefer this tool over sibling tools, such as 'use client_list to enumerate clients' or 'use client_create/update/delete for changes'. The intended context is only implied by 'specific client' and the CRUD sibling family, so the agent gets modest but not explicit guidance.

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

client_listA

List OAuth2 clients owned by the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order, e.g. "name:asc". Keys: created, modified, name.
limitNoMax items to return; 0 for all (default 100).
offsetNoData offset (default 0).

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries full responsibility for behavioral disclosure. It conveys that this is a read-only listing scoped to the current user, which is useful, but it does not mention pagination behavior, default limits, or response format. For a simple list tool this is adequate but minimal.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant wording. Every word adds value: the verb, the resource, and the ownership scope.

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 simple and the parameters are fully documented in the schema. The scope qualifier 'owned by the current user' provides important access context. Without an output schema, a brief note on the return shape or pagination would improve completeness, but it is not critical for a list operation.

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

Parameters3/5

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

The input schema already documents all three parameters (sort, limit, offset) with descriptions, examples, and defaults, so the schema coverage is 100%. The description adds no additional parameter meaning, matching the baseline of 3.

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

Purpose5/5

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

The description states a specific verb ('List'), a clear resource ('OAuth2 clients'), and a scope ('owned by the current user'). This distinguishes it from sibling tools like client_get, client_count, and the many unit/application/network list tools.

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

Usage Guidelines4/5

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

The description gives clear context for when to use it: listing the calling user's OAuth2 clients. It does not explicitly mention exclusions or alternatives like client_get for a single client, but the scope and verb make the primary use case unambiguous.

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

client_updateB

Update an OAuth2 client. Provide at least one field to change.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew display name.
imageNoNew icon URI, or null to remove.
scopesNoNew allowed scopes.
clientIdYesThe client ID to update.
regenSecretNoSet true to regenerate the client secret.
redirectUrisNoNew allowed redirect URIs.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the update action and the field requirement; it does not mention side effects such as secret regeneration, permission needs, or what happens to existing client settings.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core action is front-loaded and the essential usage constraint is stated directly.

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 schema covers all parameters and the description gives the key invocation rule, which is adequate for a simple update call. However, with no annotations and no output schema, it leaves behavioral context such as response behavior and side effects of regenSecret unspecified.

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

Parameters4/5

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

The input schema already documents all six parameters with descriptions, providing full coverage. The description adds a meaningful non-schema rule: at least one field to change must be provided, which the schema does not enforce since only clientId is required.

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 ('Update') and resource ('OAuth2 client'), which clearly conveys what the tool does and differentiates it from create/delete/get client operations. It does not call out sibling tools by name, but the action-resource pair is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as client_create or client_delete. The instruction to 'provide at least one field to change' is a call-level requirement, not guidance about choosing this tool over siblings.

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

data_application_dldata_countB

Get the count of application downlink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
tfieldNoTime field for filtering: proc or resp. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations available, the description bears the full burden of disclosing behavior beyond the schema. It only states the operation and resource without mentioning return value format, pagination, time-range handling, or required field dependencies like tfield with tstart/tend. This leaves significant behavioral ambiguity.

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 conveys the essential purpose without any redundant words. It is appropriately sized for a simple counting 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?

Given the tool has eight parameters, no output schema, and no annotations, this one-sentence description is too thin to provide complete guidance. It does not explain how the count is calculated, the meaning of filters, or any constraints such as required parameters for specific user roles.

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

Parameters3/5

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

The input schema already provides 100% parameter descriptions, covering all eight parameters. The description adds no additional semantic value on top of the schema, so the baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action (get count), the resource (application downlink data records), and the operation type (count). It distinguishes itself from sibling tools like data_application_dldata_list and data_application_uldata_count by specifying 'count' and 'downlink'.

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 the list variant or the uplink count. No mention of intended use cases, typical workflows, or exclusion conditions is present.

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

data_application_dldata_listC

List application downlink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
sortNoSort key:order. Keys: proc, resp, network, addr.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
tfieldNoTime field for filtering: proc or resp. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'list', which implies a read operation, but it does not mention pagination behavior, default limits, offset semantics, time-filtering requirements, or what the response looks like. For an 11-parameter data tool, this is a significant gap.

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 precise six-word sentence with no filler, repetition, or unnecessary details. It is front-loaded and easy to parse, and it earns its place without wasting tokens.

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

Completeness2/5

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

Despite full schema coverage, the tool has 11 parameters, no output schema, and no annotations. The description omits important operational context such as conditional requirements, pagination defaults, and the intended retrieval semantics. An agent could invoke it correctly by reading the schema, but the description alone leaves important contextual gaps.

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

Parameters3/5

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

The input schema describes all 11 parameters with 100% coverage, including filter fields, limit, offset, sort, and time-range parameters. The description adds no parameter-level detail, but the schema already does the heavy lifting, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (List) and the resource type (application downlink data records), so an agent can tell it is a read-only listing operation for application downlink data. It distinguishes itself from uplink and network-scoped siblings through the explicit 'application downlink' resource, though it does not explicitly contrast with count variants.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as data_application_dldata_count, data_application_uldata_list, or data_network_dldata_list. The only usage signal is the resource name in the description, and the agent is left to infer the correct context from sibling names and schema alone.

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

data_application_uldata_countB

Get the count of application uplink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
tfieldNoTime field for filtering: proc, pub, or time. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It only says 'get the count' and does not disclose read-only expectations, required user context, filter behavior, or the return format. This is minimal disclosure for an unannotated tool.

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 clear sentence with no wasted words. It front-loads the core operation and resource, making it easy to scan.

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 absence of annotations and an output schema, the description does not fully explain what the tool returns, whether it is read-only, or how filters interact with the count. The schema covers parameters, but the description leaves important behavioral context unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description does not add any parameter-specific meaning, which is acceptable under the baseline for high schema coverage.

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

Purpose5/5

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

The description states a specific verb ('get'), resource ('application uplink data records'), and operation ('count'). It clearly distinguishes this tool from list-oriented siblings like data_application_uldata_list and dldata_count variants.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention that for details/records the list variant should be used instead, nor does it note prerequisites like the required unit.

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

data_application_uldata_listC

List application uplink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
sortNoSort key:order. Keys: proc, pub, time, network, addr.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
tfieldNoTime field for filtering: proc, pub, or time. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden and only the verb 'List' implies a read-only operation. It does not disclose return shape, pagination behavior, potential for unbounded results with limit=0, or filtering semantics. Schema covers parameter defaults, but behavioral context beyond that is absent.

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 five-word sentence with no wasted text and the core purpose front-loaded. It is efficient, though at the cost of not addressing sibling differentiation or usage context.

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

Completeness2/5

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

For a tool with 11 parameters, no output schema, and no annotations, the description covers only the basic purpose. Missing are the distinction from network-level and downlink siblings, what an uplink data record contains, and when to prefer count/list variants. The agent must rely on the schema and name alone.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. Each of the 11 parameters has a meaningful schema description including defaults (limit 100, offset 0), units (ms since epoch), and a dependency (tfield required with tstart/tend). The description adds no parameter detail, which is acceptable given coverage.

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

Purpose4/5

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

The description states a specific verb ('List') and resource ('application uplink data records'), which is grammatically clear and matches the tool name. It implicitly differentiates from application downlink (dldata) and network-level siblings via 'application' and 'uplink', though it does not name 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?

No guidance on when to use this tool versus the many siblings (data_application_dldata_list, data_network_uldata_list, data_application_uldata_count). No mention of when to apply time filters, sort keys, or the unit requirement. The agent is left to infer usage from the name.

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

data_coremgr_opdata_countA

Get the count of coremgr operation log records. Normal users see only their own logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
tendNoEnd time in milliseconds since epoch.
tfieldNoTime field for filtering: req or res. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds a meaningful access-scoping trait ('Normal users see only their own logs') that is not obvious from the schema. However, it does not disclose the return format, whether the count can be zero, or how the time filters interact with the result, leaving some behavioral gaps.

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

Conciseness5/5

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

The description is two short sentences with no filler. The purpose is front-loaded in the first sentence, and the scoping behavior is added in the second. Every sentence earns its place without redundantly restating the tool name or the schema.

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

Completeness4/5

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

For a simple count operation with three optional parameters and a fully documented schema, the description is largely sufficient. It explains the resource and the visibility rule. The only notable gap is the absence of an output schema or explicit return-shape statement, but 'Get the count' makes the primary outcome clear.

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

Parameters3/5

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

The input schema already describes all three parameters with 100% coverage, including the requirement that tfield must be provided when tstart/tend are used. The tool description adds no parameter-specific meaning beyond what the schema provides. A baseline of 3 is appropriate when schema documentation is complete.

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: 'Get the count of coremgr operation log records.' This clearly identifies what the tool does and distinguishes it from the sibling data_coremgr_opdata_list, which retrieves the actual records rather than a count. The count-vs-list difference is immediately evident without needing the schema.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool over alternatives. It does not reference data_coremgr_opdata_list or other count variants, nor does it state conditions such as 'use this when only a total is needed.' The note 'Normal users see only their own logs' is a scoping behavior, not an explicit usage directive or exclusion.

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

data_coremgr_opdata_listA

List coremgr operation log records. Normal users see only their own logs.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: req, res.
tendNoEnd time in milliseconds since epoch.
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
tfieldNoTime field for filtering: req or res. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.

TDQS

A3.6/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It does reveal an important behavior: normal users are scoped to only their own logs. However, it does not mention other relevant behaviors like default limit, time-filter behavior, or what fields the returned records contain.

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

Conciseness5/5

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

The description is a single, tight sentence that front-loads the action and resource, then adds the key access-control caveat. There is no wasted wording or redundancy.

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

Completeness4/5

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

For a listing tool with six optional, fully documented parameters, the description provides the essential semantic core and the important visibility constraint. It is slightly incomplete because it does not indicate what fields or record shape will be returned, which is more relevant given the absence of an output schema.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter already has a meaningful description in the schema. The tool description adds no additional parameter-level semantics, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states the verb 'List' and the resource 'coremgr operation log records', making the primary purpose clear. It adds the scoping detail that normal users only see their own logs, but it does not explicitly differentiate this from the sibling data_coremgr_opdata_count tool.

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

Usage Guidelines3/5

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

The description implies when the tool is useful by describing record listing and user-level visibility, but it provides no explicit guidance on when to choose this tool over alternatives such as the count variant. The 'normal users see only their own logs' note is a useful context cue but not a usage directive.

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

data_network_dldata_countB

Get the count of network downlink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
tfieldNoTime field for filtering: proc, pub, or resp. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get the count,' which implies a read operation returning a number, but it does not describe filtering semantics, default scope, time-window requirements, response shape, or any side-effect safety details.

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 or redundancy. It is concise and front-loaded with the core action and resource, though it could have provided a bit more structure without much added length.

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

Completeness2/5

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

This is an 8-parameter filtering tool with no annotations and no output schema, yet the description only states the basic count operation. It omits how filters interact, whether time bounds require tfield, what the default count scope is, and what the response looks like, so an agent cannot fully infer correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even though the description itself adds no parameter-level meaning. The description does not explain how filters combine or that tfield is required with tstart/tend, but the schema already documents these fields adequately.

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 ('count of network downlink data records'), making the operation immediately understandable. It also distinguishes this tool from sibling list and uplink variants such as data_network_dldata_list and data_network_uldata_count.

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

Usage Guidelines2/5

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

No explicit guidance is given for when to use this tool instead of alternatives like data_network_dldata_list or data_application_dldata_count. The word 'count' implies a total rather than a list, but there is no direct comparison, prerequisite, or use-case context.

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

data_network_dldata_listC

List network downlink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
sortNoSort key:order. Keys: proc, pub, resp, network, addr.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
tfieldNoTime field for filtering: proc, pub, or resp. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden, but it only states 'List network downlink data records.' It does not disclose pagination behavior (limit defaults to 100, offset 0), the tfield-required-with-time-filter constraint, or the read-only nature explicitly. The schema hints at these, but the description itself adds no behavioral context. There is no contradiction with annotations since none exist.

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 sentence with zero filler: verb plus resource plus scope qualifiers, front-loaded and easy to parse. It is genuinely concise rather than under-specified like a pure tautology, though it is brief enough that it could have comfortably carried a bit more useful context.

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

Completeness2/5

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

For an 11-parameter tool with no output schema and no annotations, the description is too thin. It doesn't explain what the returned records look like, how time filtering (tfield/tstart/tend) is meant to be combined, or the pagination model. The 100% schema coverage prevents a score of 1, but an agent gets almost no operational context from the description itself.

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

Parameters3/5

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

Schema description coverage is 100%, with all 11 parameters individually documented (addr, sort, tend, unit, limit, device, offset, tfield, tstart, network, profile). The description adds nothing about parameters, but at full coverage the baseline of 3 applies — the schema already does the heavy lifting.

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

Purpose4/5

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

The description uses a specific verb ('List') and a clearly scoped resource ('network downlink data records'). The qualifiers 'network' and 'downlink' implicitly distinguish it from siblings like data_network_uldata_list (uplink) and data_application_dldata_list (application-level data). It is clear, though terse — it doesn't elaborate on what a 'downlink data record' contains.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as data_network_dldata_count, data_network_uldata_list, or data_application_dldata_list. Nothing explains that this is the network-scoped downlink listing, while the uldata/count variants serve different needs. The agent must infer routing from the tool name alone.

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

data_network_uldata_countC

Get the count of network uplink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
tfieldNoTime field for filtering: proc or time. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description bears the full burden of behavioral disclosure. It only states that a count is returned, with no mention of required authentication, the unit requirement for normal users, time-range behavior, aggregation semantics, or what the response contains.

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 wasted words. It conveys the core action and resource immediately, though it is terse for a tool with 8 parameters.

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 8 parameters, no annotations, no output schema, and a large family of sibling data-count tools, the description is too minimal to be complete. It does not explain required-unit behavior, filter semantics, return format, or how this differs from related count/list tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even though the description adds no parameter-specific meaning. The description does not clarify relationships between parameters, such as tstart/tend requiring tfield, but the schema already documents each parameter individually.

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 ('get'), a specific resource ('count of network uplink data records'), and the scope ('network uplink'). It clearly distinguishes from downlink and list tools, though it does not explicitly name sibling 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?

No guidance is given on when to use this tool versus alternatives such as data_network_uldata_list, data_network_dldata_count, or data_application_uldata_count. The description merely states what it does, leaving the agent to infer usage context from sibling names.

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

data_network_uldata_listC

List network uplink data records.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
sortNoSort key:order. Keys: proc, time, network, addr.
tendNoEnd time in milliseconds since epoch.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
tfieldNoTime field for filtering: proc or time. Required when using tstart/tend.
tstartNoStart time in milliseconds since epoch.
networkNoFilter by network code.
profileNoFilter by device profile.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' suggests a read-only operation, but the description does not mention default limits, pagination behavior, time-filtering requirements, or what the returned records contain. For a tool with 11 parameters, this is a meaningful gap.

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

Conciseness4/5

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

The description is compact and front-loaded, with no filler or redundant words. It conveys the core operation immediately, though it is arguably thinner than ideal for a complex list tool.

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

Completeness2/5

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

Given 11 parameters, no annotations, and no output schema, this one-line description is insufficient for an agent to fully understand the tool's behavior, return shape, filtering options beyond the schema, or pagination semantics. The schema covers parameter meaning, but broader operational context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented in the schema and the description adds no additional parameter-level meaning. The baseline of 3 applies because the schema handles the heavy lifting.

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 gives a specific verb ('List') and a specific resource ('network uplink data records'), which clearly separates this from count tools and downlink-data tools in the sibling set. However, it does not explicitly describe the scope of the list, such as whether it returns all records or supports filtering/pagination.

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 alternative list/count tools in the sibling set, such as data_network_dldata_list or data_network_uldata_count. The description implies a list operation but never states when this tool is the right choice or when another sibling 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.

device_bulk_createA

Bulk create devices by address list (max 1024). Existing addresses are skipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesAssociated unit ID.
profileNoDevice profile.
networkIdYesAssociated network ID.
networkAddrsYesNetwork addresses (max 1024).

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose two useful traits — the 1024-item cap and the skip-existing-addresses behavior — which go beyond what 'bulk create' alone implies. However, it remains silent on partial failure semantics (whether an invalid address aborts the batch or is skipped) and on what is returned, leaving meaningful gaps for a mutating bulk 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 tight sentences with zero filler: the first states the core action and the second adds the key behavioral nuance. The most decision-relevant information (what, how, limit) is 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 core facts needed to select and invoke the tool are present — what is created, how addresses are passed, the limit, and skip behavior. But with no output schema, nothing hints at what the caller receives back (e.g., counts of created vs. skipped) or how partial failures are handled, which an agent orchestrating a large batch would reasonably want to know.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (unitId, networkId, networkAddrs, profile) are already documented in the schema. The description's 'max 1024' and 'address list' merely echo the schema's networkAddrs description rather than adding new parameter-level meaning, so the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource ('Bulk create devices') plus the mechanism ('by address list'), making the tool's role unambiguous. The 'Bulk' prefix differentiates it from the single-device sibling device_create, and the 'address list' mechanism implicitly contrasts it with device_range_create. An agent can tell what this tool does without opening the schema.

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

Usage Guidelines3/5

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

The usage context is implied — use when creating many devices from an address list up to 1024 — but no alternatives are named and no when-not-to-use conditions are given. Close siblings like device_range_create and device_create overlap in purpose, yet the description never explains when to prefer one over the other.

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

device_bulk_deleteA

Bulk delete devices by address list (max 1024).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesAssociated unit ID.
networkIdYesAssociated network ID.
networkAddrsYesNetwork addresses to delete (max 1024).

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It identifies that devices are deleted, but it does not state that deletion is irreversible, what permissions are required, whether associated routes or configuration are removed, or what the response indicates. For a destructive tool, this is a meaningful gap.

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

Conciseness5/5

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

The description is a single sentence with no filler; the core action, target resource, input method, and limit are all conveyed efficiently. The key information is front-loaded and easy to scan.

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 bulk operation, the description omits irreversibility, permission requirements, and the result/return behavior, and there is no output schema to fill that gap. However, the schema fully documents all inputs and the purpose and limit are clearly stated, making the definition minimally viable rather than seriously incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters (unitId, networkId, networkAddrs) already documented. The description only repeats the max-1024 constraint that appears in the schema, so it adds no significant semantic value beyond the schema.

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

Purpose5/5

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

The description states a specific operation ('Bulk delete'), a resource ('devices'), and a selection criterion ('by address list'), with the 1024-item limit. This clearly differentiates it from single-device deletion and range-based deletion among the sibling tools.

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

Usage Guidelines3/5

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

The phrase 'bulk delete by address list' implies the tool is for deleting multiple specific devices by their addresses, and the max-1024 note sets a capacity boundary. However, it does not explicitly say when to choose this over device_delete or device_range_delete, nor what happens if the list exceeds the limit.

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

device_countA

Get the count of devices in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address (case insensitive).
unitYesUnit ID (required for normal users).
networkNoFilter by network ID.
profileNoFilter by device profile (case insensitive).
containsNoFilter by name substring (case insensitive).

TDQS

A3.8/5.0
Behavior3/5

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

The description signals a read-only aggregate operation via 'Get the count', which is useful since no annotations are provided. However, it does not disclose whether the optional filters narrow the count, how unit scoping and permissions behave, or what exact response shape the caller should expect. For a simple count tool this is a modest but real gap.

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 earns its place. It is appropriately sized for a tool whose main behavior is simply counting devices within a unit.

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

Completeness4/5

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

The description conveys the essential outcome ('count') and the schema fully documents the five parameters, including the required unit. It does not explicitly state that the response is an integer or that filters apply to the count, but these are reasonably implied. No output schema exists, yet the description is mostly sufficient for a simple aggregate tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the description does not need to restate parameter meanings. It does highlight the central 'unit' scoping, but it adds no extra semantics about how the optional filters interact with the count. Baseline 3 is appropriate because the schema carries the parameter documentation.

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

Purpose5/5

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

The description states a clear action ('Get the count') with a specific resource ('devices') and scoping ('in a unit'). The word 'count' naturally distinguishes it from siblings like device_list and device_get, which return records rather than an aggregate.

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 does not mention alternative tools or explicitly state when to choose device_count over device_list or device_get. The counting purpose is implied, but an agent must infer that this tool is for aggregate counts rather than detailed listings. This 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.

device_createA

Create a single device.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoOther information.
nameNoDisplay name.
unitIdYesAssociated unit ID.
profileNoDevice profile for application servers.
networkIdYesAssociated network ID.
networkAddrYesNetwork address (lowercased).

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Create a single device,' with no mention of side effects, validation behavior, idempotency, or what a successful response looks like. There is no contradiction, but the description is too thin to meaningfully disclose behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant wording. Every word earns its place: verb, scope, and resource are all present. It is appropriately sized for the simplicity of the tool.

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

Completeness2/5

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

With no output schema and no annotations, the agent is left without information about the return value, error conditions, or post-create behavior. The schema documents required parameters, but the description does not explain the broader context of device creation, such as network/unit relationships or what happens on success. This is insufficient for a create operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters and their meanings. The description adds no additional parameter-level context. Per the baseline rule, this is adequate but not enhanced.

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

Purpose5/5

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

The description states a specific action and resource: 'Create a single device.' The word 'single' clearly distinguishes it from sibling tools like device_bulk_create and device_range_create. It is not a tautology and leaves no ambiguity about the tool's function.

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

Usage Guidelines4/5

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

The phrase 'single device' gives clear context for when to use this tool: for creating exactly one device. It does not explicitly mention alternatives such as device_bulk_create for multiple devices, but the contrast with sibling tool names is evident. This is clear context without formal exclusions.

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

device_deleteB

Delete a device and all its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID to delete.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure, and it does warn that deletion removes the device and all its resources. However, it does not mention irreversibility, required permissions, or what happens to dependent records, leaving a partially complete behavioral picture.

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

Conciseness5/5

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

One short sentence that front-loads the action and destructive scope. Every word contributes to the meaning, and there is no filler or redundant explanation.

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?

Adequate for a one-parameter delete operation: the device ID and destructive scope are covered, and there is no output schema that needs explanation. It could be more complete by noting irreversibility and when to use single deletion versus bulk or range deletion.

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

Parameters3/5

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

The input schema fully documents the single parameter (deviceId with description), so the description need not add parameter details. The phrase 'a device' maps to deviceId without adding extra semantic value.

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 ('Delete'), a target resource ('a device'), and broad scope ('all its resources'), so an agent knows this removes an individual device and its associated data. It does not explicitly contrast with sibling tools like device_bulk_delete or device_range_delete, but the singular 'a device' helps differentiate it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus device_bulk_delete or device_range_delete, nor any prerequisites or conditions. Usage is only implied by the tool name and the singular phrasing.

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

device_getB

Get details of a specific device.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID to retrieve.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get details' and does not mention return format, error behavior for unknown IDs, auth requirements, or absence of side effects. The verb implies a read operation, but little else is transparent.

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

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 operation and target.

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

Completeness3/5

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

The tool is simple and its sole parameter is fully documented, but there is no output schema and the description does not clarify what 'details' include or what happens when the deviceId is not found. It is minimally adequate for selection and invocation but leaves ambiguity.

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 fully documents the only parameter, deviceId, with a clear description. The tool description adds no additional parameter-level meaning, so the baseline score of 3 for high schema coverage applies.

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

Purpose4/5

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

The description clearly states the operation ('Get') and the resource ('specific device'), making its purpose obvious. It is distinguishable from device_list and device_count by the 'specific device' phrasing, though 'details' is somewhat generic.

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 like device_list or device_count. There are no conditions, prerequisites, or exclusions mentioned; only the singular 'specific device' implies a one-device lookup.

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

device_listB

List devices in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
addrNoFilter by network address.
sortNoSort key:order. Keys: network, addr, created, modified, profile, name.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
networkNoFilter by network ID.
profileNoFilter by device profile.
containsNoFilter by name substring.

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'List' clearly indicates a read-only retrieval rather than a mutation, but the description does not disclose pagination behavior, access constraints, default limit, or return shape. It is minimally transparent but not misleading.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. It states the action, resource, and scope efficiently and earns its place.

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

Completeness2/5

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

With 8 parameters, no annotations, and no output schema, a four-word description is sparse. It omits what the response looks like, how filtering/sorting/pagination behave, and any cautionary context, leaving the agent to rely almost entirely on the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented in the input schema. The description adds only the 'in a unit' scope, matching the required unit parameter, without adding extra semantics.

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

Purpose4/5

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

The description uses a clear verb and resource ('List devices') and scopes it to a unit, which distinguishes it from device_get, device_update, and device_delete. It does not explicitly differentiate from close siblings like device_count or device_route_list, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus device_count for counting, device_get for a single device, or device_route_list for routes. The context signal shows many sibling list/count tools, but the description leaves the selection decision entirely to inference.

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

device_range_createA

Bulk create devices by hex address range (max 1024). startAddr and endAddr must be same-length hex strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesAssociated unit ID.
endAddrYesEnd hex address (e.g. "800013ff"), same length as startAddr.
profileNoDevice profile.
networkIdYesAssociated network ID.
startAddrYesStart hex address (e.g. "80001000").

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the 1024-device limit and the same-length hex requirement, which are genuinely useful call-preconditions. It does not disclose conflict handling (existing addresses in the range), atomicity of partial failure, or endpoint inclusivity, which matter for a bulk mutation.

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 with zero filler: the first front-loads the core purpose and limit, the second states the critical format precondition. Every clause 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 5-parameter bulk mutation with no output schema and no annotations, the description covers purpose and key constraints but omits several things an agent needs: the shape of the response, behavior when addresses in the range already exist, and whether the range endpoints are inclusive. It is adequate but leaves meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all five parameters with examples. The description reinforces the same-length constraint and relates the 1024 cap to the startAddr/endAddr span, but adds little beyond the schema.

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

Purpose5/5

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

The description names a specific verb ('create'), resource ('devices'), and mechanism ('by hex address range'), and adds the 1024-device cap. This clearly differentiates it from sibling tools like device_create (single) and device_range_delete (delete). The purpose is unambiguous on its own.

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

Usage Guidelines3/5

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

The intended use is implied: call this when you need to bulk-create devices across a contiguous hex address range. However, it never explicitly contrasts with device_bulk_create or device_create, nor states when those would be preferred. The max-1024 limit is a capacity constraint rather than routing guidance.

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

device_range_deleteB

Bulk delete devices by hex address range (max 1024).

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesAssociated unit ID.
endAddrYesEnd hex address, same length as startAddr.
networkIdYesAssociated network ID.
startAddrYesStart hex address.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds the max-1024 batch constraint, which is useful, but it does not disclose atomicity, behavior when the range exceeds 1024 or startAddr > endAddr, side effects on associated routes/data, permission requirements, or the response format. For a destructive bulk operation, this is a significant transparency gap.

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

Conciseness5/5

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

A single sentence with the verb and resource front-loaded and zero filler. The only extra detail, the max-1024 limit, is directly relevant to invoking the tool correctly.

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?

An agent can construct a valid call: all required parameters are documented in the schema and the key operational constraint is in the description. However, with no output schema and no annotations, the agent has no guidance on expected return values, error behavior, or edge cases like range-too-large or mismatched address lengths for a bulk destructive operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters individually. The description adds relational meaning — startAddr and endAddr form a range capped at 1024 — which the schema does not express, but this is marginal on top of well-described parameters, so the 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), resource (devices), and selection mechanism (hex address range), which effectively distinguishes it from device_delete (single device) and device_bulk_delete (presumably an explicit list). It falls short of a 5 only because it names no sibling explicitly and leaves the contrast with device_bulk_delete implicit.

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 phrasing 'Bulk delete devices by hex address range' implies the use case: deleting a contiguous block of device addresses in one call. However, there is no explicit statement of when to prefer this over device_bulk_delete or device_delete, nor any when-not-to-use or boundary guidance, so the usage context is implied rather than stated.

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

device_route_bulk_createA

Bulk create device routes by address list (max 1024). Existing routes are skipped.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID of the devices.
networkAddrsYesNetwork addresses to create routes for (max 1024).
applicationIdYesThe application ID to route devices to.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose one useful trait: 'Existing routes are skipped,' which signals idempotent behavior. However, it does not cover what happens on partial failure, whether the operation is atomic, what response to expect, or how exceeding the max of 1024 addresses is handled.

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

Conciseness5/5

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

The description is two short sentences with no filler. The action and key constraint are front-loaded, and the additional behavioral detail about existing routes is concise and relevant.

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 bulk create operation with three required parameters that are fully documented in the schema, the description provides the core purpose, input mode, limit, and skip behavior. Minor gaps remain around failure semantics and return values, but the description is reasonably complete for an agent to invoke the tool correctly.

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

Parameters3/5

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

The input schema already documents all three parameters with descriptions, so the schema coverage is 100%. The description does not add meaning beyond the schema, aside from restating the 1024 max for the address list, which is already present 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 and resource ('Bulk create device routes') and clarifies the input method ('by address list'), with a concrete limit of 1024. This clearly distinguishes it from sibling tools like device_route_create (singular) and device_route_range_create (range-based).

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

Usage Guidelines3/5

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

The phrase 'Bulk create' implies this is for creating multiple device routes at once, but the description does not explicitly contrast it with alternatives like device_route_create or device_route_range_create. There is no when-to-use/when-not-to-use guidance beyond the word 'Bulk' and the address-list input.

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

device_route_bulk_deleteB

Bulk delete device routes by address list (max 1024).

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID of the devices.
networkAddrsYesNetwork addresses to delete routes for (max 1024).
applicationIdYesThe application ID of the routes to delete.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys a destructive operation but does not state whether the deletion is permanent, whether any associated data is affected, whether authorization is required, or what the outcome/response looks like. This is a meaningful gap for a mutating bulk operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero filler. It communicates the core action, the target resource, the key input mechanism, and a hard constraint in one compact clause.

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 bulk operation with no annotations and no output schema, the description is thin. It omits important operational context such as whether the delete is permanent, whether route entries are removed from all devices in the list, and what the agent should expect after success. The schema fully covers parameters, but behavioral context is lacking.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents networkId, networkAddrs, and applicationId. The description reinforces the 'address list' aspect and the 1024 limit, but adds little beyond the schema. Baseline 3 is appropriate because the schema carries the parameter documentation burden.

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

Purpose4/5

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

The description states a specific verb ('bulk delete'), a specific resource ('device routes'), and a method ('by address list'). It clearly indicates this is the mass-deletion counterpart to device_route_delete, though it does not explicitly name the sibling tool.

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 word 'bulk' implies this is for deleting multiple device routes at once, and 'max 1024' sets a volume boundary. However, there is no explicit guidance about when to prefer this over device_route_delete or device_route_range_delete, nor any when-not-to-use conditions.

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

device_route_countB

Get the count of device routes in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation, but the description does not state whether filters affect the count, how the count is returned, or any permission or error considerations. This is minimal disclosure for a tool with no structured safety hints.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. Every word contributes to stating the action and the target resource, making it highly efficient.

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

Completeness3/5

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

For a simple count operation with fully documented parameters, the description conveys the core operation adequately. However, with no annotations, no output schema, and no alternative routing guidance, it leaves open the result shape and when to prefer related route tools. It is minimally viable but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so unit, device, network, and application are already documented in the schema. The description only echoes the unit concept and does not add extra meaning about filter behavior or parameter formats, landing at the baseline expected when the schema does the heavy lifting.

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 ('count of device routes') plus a scope ('in a unit'), making the operation unmistakable. This clearly differentiates it from sibling count tools like device_count and network_route_count, as well as from device_route_list.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as device_route_list or network_route_count, and no exclusions or prerequisites are mentioned beyond what the schema already states. An agent is left to infer the appropriate context from the name and description alone.

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

device_route_createB

Create a device route linking a device to an application. Both must belong to the same unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
deviceIdYesThe device ID to route.
applicationIdYesThe application ID to receive the device data.

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing side effects and constraints. It indicates a mutating create operation and the same-unit rule, but does not mention permissions, whether the operation fails on unmet constraints, idempotency, or what happens if a route already exists. This is a significant gap for a write operation.

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

Conciseness5/5

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

The description is compact, using two short sentences that front-load the primary action and then add the essential constraint. Every sentence contributes meaningful information with no filler or redundancy.

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

Completeness4/5

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

For a simple two-parameter creation tool, the description conveys the action, the involved resources, and a critical precondition. With no output schema and no annotations, a brief note on the response or failure behavior would improve completeness, but the core information needed to attempt the call correctly is present.

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

Parameters3/5

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

The input schema provides complete descriptions for both deviceId and applicationId (100% coverage), so the schema documents the parameters adequately. The description adds minimal parameter-level meaning beyond naming the entities involved, which aligns with the baseline expectation when schema coverage is high.

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

Purpose4/5

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

The description states a clear action ('Create a device route') and explicit resources ('device' and 'application'), making the tool's function unmistakable. It distinguishes itself from bulk/range variants by focusing on a single route, 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 provides a useful prerequisite ('Both must belong to the same unit'), giving context for when the call may be valid. However, it does not explicitly state when to prefer this tool over device_route_bulk_create or device_route_range_create, leaving usage differentiation to inference from the name.

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

device_route_deleteC

Delete a device route.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe route ID to delete.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Delete a device route' without mentioning permanence, side effects, permission requirements, or behavior when the route does not exist. For a destructive operation, this is a significant transparency gap.

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 with no filler and front-loads the verb and resource. It is appropriately sized for a one-parameter tool, though it provides no extra structural context such as behavior or alternatives.

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 single-route delete with no output schema and no annotations, the description lacks critical context: permanence of deletion, whether bulk/range siblings should be considered, and expected result or error behavior. The simple schema helps, but the description does not fully equip an agent to use the tool safely and correctly.

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

Parameters3/5

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

The schema already documents the only parameter, routeId, as 'The route ID to delete,' providing 100% coverage. The description adds no additional meaning beyond that schema, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a clear verb ('Delete') and resource ('device route'), so the core operation is obvious. However, it does not explicitly differentiate from sibling tools like device_route_bulk_delete or device_route_range_delete; the singular 'a device route' only implicitly suggests a single-route operation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the bulk or range delete variants. No prerequisites, conditions, or exclusions are mentioned, so an agent must infer usage purely from the tool name and schema.

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

device_route_listB

List device routes in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: network, addr, created.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral disclosure. It only restates that the tool lists routes and limits scope to a unit; it does not mention pagination defaults, filter combination behavior, response shape, or whether the operation is safe beyond what 'List' implies. This leaves the agent to infer important behavioral details.

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

Conciseness5/5

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

The description is a single short sentence with no filler, placing the action, object, and scope immediately. It is as concise as possible while remaining meaningful.

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 schema fully documents all parameters, so an agent can construct a valid request with confidence. However, given the large sibling tool set and the absence of an output schema or annotations, the description does not clarify return shape, default sorting/pagination semantics, or when to choose this list tool over route count or network route list tools.

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?

All seven parameters already have descriptions in the schema, giving 100% coverage, so the baseline is 3. The description's 'in a unit' reinforces the required unit parameter but does not add any meaning beyond what the schema already provides.

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

Purpose4/5

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

The description names a concrete action ('List') and object ('device routes') and bounds the scope to a unit, so an agent can tell what it does. It does not explicitly contrast with network_route_list or device_route_count, so it loses the fifth point.

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 usage guidance is provided: nothing says when to prefer this over device_route_count, device_route_create, network_route_list, or other route-related siblings. The verb 'List' implies a read operation, but the description does not state when this tool is the right choice or when an alternative would be better.

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

device_route_range_createA

Bulk create device routes by hex address range (max 1024). Existing routes are skipped. startAddr and endAddr must be same-length hex strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
endAddrYesEnd hex address (e.g. "800013ff"), same length as startAddr.
networkIdYesThe network ID of the devices.
startAddrYesStart hex address (e.g. "80001000").
applicationIdYesThe application ID to route devices to.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden and does well by revealing that existing routes are skipped and that the request size is capped at 1024. It also exposes the input constraint that startAddr and endAddr must be same-length hex strings. It does not mention response details or failure modes, but the core behavioral traits are covered.

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

Conciseness5/5

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

The description is compact and front-loaded: the primary purpose appears in the first clause, followed by the two most important constraints. Every sentence delivers useful information with no filler or repetition.

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

Completeness4/5

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

Given the simple parameter set and full schema coverage, the description is reasonably complete: it explains the range-based bulk operation, the size cap, idempotent handling of existing routes, and the address format requirement. A minor gap is the lack of detail about the return value or error behavior, but this is not critical for calling 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?

Schema description coverage is 100%, so the baseline is 3. The description adds the range-wide max of 1024 and reinforces the same-length hex requirement, but the individual parameter meanings are already fully documented in the schema, and the description does not add significant new per-parameter semantics.

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

Purpose5/5

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

The description states a specific action ('Bulk create'), a clear resource ('device routes'), and the key distinguishing mechanism ('by hex address range'). It also includes the maximum batch size, making it easy to separate from sibling tools like device_route_create and device_route_bulk_create.

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

Usage Guidelines4/5

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

The description clearly indicates when to use this tool: when bulk-creating device routes across a contiguous hex address range. It also communicates a practical constraint (max 1024) and idempotent behavior (existing routes are skipped), but it does not explicitly name alternatives or state when not to use it.

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

device_route_range_deleteB

Bulk delete device routes by hex address range (max 1024).

ParametersJSON Schema
NameRequiredDescriptionDefault
endAddrYesEnd hex address, same length as startAddr.
networkIdYesThe network ID of the devices.
startAddrYesStart hex address.
applicationIdYesThe application ID of the routes to delete.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal a maximum of 1024 deletions, but it does not explain whether the range is inclusive, whether deletion is permanent, what happens when the limit is exceeded, or what response/errors to expect. For a destructive bulk operation, this is a meaningful gap.

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, focused sentence that front-loads the core operation and includes the key limit. Every word adds value, and there is no redundant or filler content.

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

Completeness2/5

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

This is a destructive bulk operation with no annotations and no output schema, so more context is needed. The description omits boundary behavior, failure semantics, and expected effects beyond 'delete'. These are important for an agent to confidently invoke and interpret the result.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds the 'hex address range' framing and the 1024 cap, which gives context to startAddr/endAddr, but it does not add substantive meaning beyond what the schema already provides.

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

Purpose4/5

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

The description states a specific operation (bulk delete), a clear resource (device routes), and the method of selection (hex address range). This distinguishes it from single delete and bulk create/range create siblings, though it doesn't explicitly name any sibling.

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

Usage Guidelines3/5

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

The phrase 'by hex address range' implies this is the right tool when deleting many routes selected by range rather than by explicit route IDs. However, the description does not explicitly say when not to use it or point to alternatives like device_route_bulk_delete, leaving some interpretation to the agent.

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

device_updateC

Update a device.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoOther information (full replacement).
nameNoNew display name.
profileNoNew device profile.
deviceIdYesThe device ID to update.
networkIdNoNew associated network ID.
networkAddrNoNew network address.

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Update a device' signals a mutation but says nothing about partial vs full replacement, side effects, destructive potential, permission requirements, or response behavior, leaving significant ambiguity for a write operation.

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 only three words long, essentially echoing the tool name. It is under-specified rather than efficiently concise; a tool with six parameters and a nested object needs at least a sentence outlining scope, fields affected, or operational context.

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

Completeness1/5

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

Given six parameters, a nested 'info' object, no output schema, and no annotations, a three-word description is completely inadequate. The agent lacks context about preconditions, side effects, return values, or relationships to sibling device tools, making correct and safe invocation very difficult.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents each parameter, earning a baseline of 3. The description adds no additional parameter-level meaning and does not clarify how the parameters interact, such as whether each field is patched independently or the entire device object is replaced.

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

Purpose3/5

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

Description states the action (update) and the resource (device), so it is minimally informative. However, it adds no detail about which properties can be modified or how it differs from sibling device operations such as device_create or device_delete, making it a vague statement of purpose that mostly restates the tool name.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites, scenarios, or exclusions, leaving the agent to infer usage solely from the tool name and parameter names.

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

dldata_buffer_countA

Get the count of buffered downlink data items waiting to be sent to devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit ID (required for normal users).
deviceNoFilter by device ID.
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

A3.6/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. 'Get the count' makes clear this is a read-only, non-destructive operation, and 'waiting to be sent' clarifies the state of the data. However, it does not describe the response format, filter combination semantics, or whether permissions are required beyond the schema's mention of 'normal users'.

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

Conciseness5/5

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

The description is a single focused sentence that front-loads the action and resource. It contains no filler or redundant information and is easy to parse quickly.

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 count operation with fully documented parameters and no nested objects, the description is nearly complete. The only notable gap is that no output schema is provided and the description does not state the exact return shape, though 'count' reasonably implies a numeric result.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are already fully documented. The description adds no extra meaning about how unit, device, network, and application filters relate to the count, giving it the baseline score.

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

Purpose5/5

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

The description clearly identifies the action ('get the count') and the specific resource ('buffered downlink data items waiting to be sent to devices'). This distinguishes it from sibling tools like dldata_buffer_list and dldata_buffer_delete, 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?

The description implies this is the count counterpart to dldata_buffer_list, but it does not explicitly state when to use this tool versus alternatives. No mention is made of when list/delete or the other data count tools 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.

dldata_buffer_deleteC

Delete a buffered downlink data item.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataIdYesThe buffered data ID to delete.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The verb 'Delete' communicates destructiveness, but the description doesn't state whether the operation is irreversible, how it behaves for a non-existent dataId (error vs no-op), or whether any cascading effects occur. For a destructive tool with zero annotation coverage, this is a meaningful gap.

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?

One short sentence with zero filler and the verb front-loaded. It is efficient for a single-parameter tool, though it misses the opportunity to add a second sentence with behavioral or usage guidance that would have raised the overall quality.

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

Completeness2/5

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

For a destructive tool with no annotations and no output schema, the description is thin. An agent cannot infer whether deletion is final, how errors are surfaced, or what the operation returns on success. The tool is simple, so it doesn't need much, but it needs more than this to be operationally complete.

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

Parameters3/5

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

Schema description coverage is 100% — the single dataId parameter already has a clear description ('The buffered data ID to delete'), so the baseline is 3. The tool description adds no parameter-level detail beyond the schema, but none is needed given the schema fully documents the only parameter.

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

Purpose4/5

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

States a specific verb ('Delete') and a specific resource ('buffered downlink data item'), which clearly conveys the operation. It is naturally distinguishable from the sibling dldata_buffer_count and dldata_buffer_list tools, though it doesn't explicitly differentiate itself from the many other *_delete tools in the family.

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 doesn't mention prerequisites such as looking up the dataId via dldata_buffer_list, nor does it caution that the deletion is permanent or that this tool is the right choice only under certain conditions. All usage context is left implied.

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

dldata_buffer_listA

List buffered downlink data items waiting to be sent to devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: application, created, expired.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
deviceNoFilter by device ID.
offsetNoData offset (default 0).
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It conveys a read-only listing of pending items, but it does not explicitly state that listing does not consume or delete the buffered items, nor does it clarify whether only not-yet-sent items are included.

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 action, resource, and state without filler. Every word contributes meaning, and there is no unnecessary repetition of schema details.

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

Completeness3/5

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

For a list tool with seven parameters, no output schema, and no annotations, the description provides only a high-level return-type statement. It does not describe the shape of returned items, pagination behavior, or how the buffer relates to the delete/count sibling tools. The schema mitigates parameter gaps, but broader context is still lacking.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already fully documented. The tool description adds no parameter-level meaning, but the baseline 3 applies because the schema handles the parameter-documentation burden.

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

Purpose5/5

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

The description names a specific action ('List') and resource ('buffered downlink data items') and clarifies their state ('waiting to be sent to devices'). This clearly distinguishes the tool from dldata_buffer_delete and dldata_buffer_count, and from historical data_*_dldata_list siblings.

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

Usage Guidelines3/5

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

The phrase 'waiting to be sent to devices' implies this is for pending buffered items, but the description does not explicitly say when to use this tool over alternatives like data_application_dldata_list or dldata_buffer_count. No exclusions or alternative-routing guidance is provided.

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

network_countC

Get the count of networks in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit ID (required for normal users).
containsNoFilter by code substring (case insensitive).

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden for behavioral disclosure. 'Get' implies a read-only operation, but the description does not mention required permissions, error behavior, or whether the count is affected by the 'contains' filter; it also lacks an explicit no-side-effects statement.

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 appropriately short, though it could have earned a 5 by also noting a sibling alternative or filter behavior.

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 count tool with full parameter schema coverage, the description plus schema is minimally sufficient: the caller knows the resource, scope, required unit, and optional filter. However, with no annotations and no output schema, some behavioral context such as permissions and response shape is left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; the schema already documents the unit ID and the case-insensitive contains filter. The description adds no parameter-specific meaning beyond the phrase 'in a unit'.

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

Purpose4/5

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

The description states a clear action ('Get the count'), a specific resource ('networks'), and a scoping condition ('in a unit'). It does not explicitly distinguish counting from listing, but the noun 'count' makes the operation unambiguous relative to network_list.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool instead of network_list or the other count tools. The only context is the scoping phrase 'in a unit', which is also present in the parameter schema.

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

network_createA

Create a network. Returns networkId and the one-time default password.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoAMQP message TTL in milliseconds (0 = unlimited).
codeYesNetwork code, pattern [A-Za-z0-9][A-Za-z0-9-_]*. Lowercased.
infoNoOther information.
nameNoDisplay name.
lengthNoAMQP max queue length (0 = unlimited).
unitIdYesAssociated unit ID for a private network.
hostUriYesNetwork queue URI (e.g. amqp://host/vhost).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It adds the useful detail that a one-time default password is returned, which is significant because there is no output schema. However, it does not disclose side effects, prerequisites, or what happens to the created network beyond being a basic create operation.

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

Conciseness5/5

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

The description is two short sentences with no filler: it states the operation and immediately gives the key return value. Every word adds value, and the useful return information is 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 rich schema covers parameters well, and the description covers the return value, which is helpful given the absence of an output schema. Still, for a mutating create tool with no annotations, the description could say more about when a network is private, whether creation is idempotent, or how the one-time password should be handled. It is adequate but not complete.

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

Parameters3/5

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

The input schema already provides 100% coverage with meaningful descriptions for all seven parameters, so the baseline is 3. The description itself adds no parameter-level meaning, such as clarifying how unitId or hostUri relate to the created network.

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 clear action and resource: 'Create a network.' It also states what the call returns, namely networkId and a one-time default password. The verb 'create' cleanly distinguishes this from sibling network_get, network_update, network_delete, network_list, and network_count 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?

The description gives no guidance about when to use this tool versus alternatives, nor does it mention prerequisites such as needing an existing unit or host URI. An agent must infer usage entirely from the verb and parameter names.

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

network_deleteA

Delete a network and all its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID to delete.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It does disclose the cascading destructive nature ('and all its resources'), which is useful. However, it does not mention irreversibility, permission requirements, or any side effects beyond resource deletion.

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, front-loaded sentence that communicates the core purpose and the complete destructive scope without wasted words.

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

Completeness3/5

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

For a simple, single-parameter tool, the description is reasonably complete, but it lacks important operational context such as whether the deletion is permanent, immediate, or requires confirmation. Without an output schema or annotations, a bit more cautionary context would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100% and the only parameter, networkId, is adequately described in the schema. The tool description does not need to add parameter detail, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Delete'), the specific resource ('a network'), and the destructive scope ('and all its resources'). This distinguishes it from sibling tools like network_update or network_stats, so an agent can confidently select it.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description simply restates the action without providing context such as 'Use when permanently removing a network and its associated resources.'

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

network_getB

Get details of a specific network.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID to retrieve.

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of indicating behavior. 'Get' implies a read-only, idempotent operation, which is useful. However, it does not disclose authentication requirements, behavior for missing or invalid IDs, error responses, or response format, leaving meaningful gaps for a tool with no annotation support.

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 or redundancy. It is front-loaded with the action and resource, and every word earns its place.

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

Completeness2/5

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

This is a simple one-parameter get tool, but there is no output schema and no annotations. The description does not explain what 'details' are returned, what happens when the network does not exist, or whether special permissions are needed. For an agent to invoke it correctly, more context is needed.

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

Parameters3/5

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

Schema coverage is 100% because the only parameter, networkId, is described as 'The network ID to retrieve.' The description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get details of a specific network.' The word 'specific' helps distinguish it from list or count operations. However, it does not explicitly reference the networkId parameter or contrast with siblings like network_list, so it is clear but not maximally differentiating.

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 instead of network_list, network_get, network_stats, or other network-related tools. No exclusions, prerequisites, or alternative references are provided, leaving the selection decision entirely to the agent.

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

network_listC

List networks in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: code, created, modified, name.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
containsNoFilter by code substring.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'List networks in a unit,' revealing a read-only intent but not disclosing pagination defaults, filtering behavior, sorting semantics, permission requirements, or possible result limits. This is a minimal but shallow disclosure.

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 filler or redundancy. It is front-loaded and easy to parse, though it could carry more useful 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?

With five parameters, no annotations, no output schema, and a large sibling set, a one-sentence description is insufficient. It does not explain return shape, pagination behavior, filter semantics, or how it differs from nearby network tools. Agents would need to infer too much.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description adds the 'unit' scoping context, reinforcing the required unit parameter, but provides no additional meaning beyond that. 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 clear verb and resource: 'List networks in a unit.' This distinguishes it from network_get (single item), network_count (count), and mutation tools like network_create/update/delete. It does not explicitly contrast with network_route_list, but the 'networks' resource is clearly identified.

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 network_count or network_get. The phrasing implies listing use cases, but there are no explicit when-to-use rules, exclusions, or references to sibling tools.

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

network_route_countC

Get the count of network routes in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitYesUnit ID (required for normal users).
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the operation is a count but does not mention return format, permission requirements, whether filters affect the count, or any other behavioral traits. This is minimal for a read-only tool.

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

Conciseness4/5

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

The description is a single clear sentence with no wasted words. It is front-loaded and immediately conveys the core action, though it could have included additional context without becoming verbose.

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 count tool, the description is adequate but thin. No output schema exists, and the description does not state the exact return shape or how optional filters interact with the count. This is a functional but not complete definition.

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

Parameters3/5

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

Schema coverage is 100%: unit, network, and application each have descriptions. The tool description adds no extra parameter meaning beyond what the schema already provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the verb ('Get'), the resource ('network routes'), and the scope ('in a unit'). It is distinct from sibling tools like network_route_list because it returns a count rather than a list, though it does not explicitly name an alternative.

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

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 network_route_list or other count tools. The description implies count-only usage but does not explain when filters should be applied or when a different tool 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.

network_route_createA

Create a network route linking a network to an application. All uplink data from the network will be forwarded to the application.

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID to route.
applicationIdYesThe application ID to receive network data.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses the consequence that all uplink data from the network will be forwarded to the application. It does not discuss idempotency, duplicate behavior, permissions, or response behavior, which leaves some transparency gaps for a create 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, no filler, and the core operation and relationship are front-loaded. The additional data-flow consequence earns its place by clarifying the tool's effect.

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?

This is a simple tool with two required parameters, no nested objects, and no output schema. The description adequately explains what the route does and what data it carries. It could mention duplicate or overwrite behavior, but that is not essential 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 input schema already documents both parameters with 100% coverage. The description adds useful context about the network-to-application linkage and the uplink data flow, but it does not significantly extend the meaning beyond the 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 action ('create'), a specific resource ('network route'), and the relationship ('linking a network to an application'). It is clearly distinguishable from sibling tools like device_route_create and network_route_delete/list/count.

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

Usage Guidelines3/5

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

The description implies the use case: use this when you want to forward a network's uplink data to an application. However, it does not explicitly mention alternatives or state when not to use it, leaving the agent to infer routing context from the tool name and sibling list.

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

network_route_deleteC

Delete a network route.

ParametersJSON Schema
NameRequiredDescriptionDefault
routeIdYesThe route ID to delete.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral disclosure burden. It reveals only that the operation deletes a route; it does not state whether deletion is permanent, whether it cascades, whether it fails if the route does not exist, or what permissions are required.

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 or repetition. For a one-parameter operation it is appropriately brief, though the brevity partly reflects missing behavioral detail rather than pure conciseness.

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

Completeness3/5

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

With one well-documented parameter and no nested objects, the core operation and its input are clear. However, the absence of annotations, deletion semantics, and usage guidance versus sibling tools leaves the context only minimally complete.

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

Parameters3/5

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

The schema already documents the single required parameter routeId as 'The route ID to delete' with 100% coverage, so the description adds no parameter-level meaning beyond identifying the target resource. This meets the baseline for complete schema coverage.

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

Purpose4/5

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

The description names a specific action ('Delete') and a specific resource ('a network route'), making the operation clear and distinguishing it from related siblings like network_delete or device_route_delete. It relies heavily on the tool name and adds no scope detail, which keeps it from a 5.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as network_route_create, network_route_list, or network_delete. The agent must infer the appropriate context entirely from the tool name and sibling list.

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

network_route_listC

List network routes in a unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: network, created.
unitYesUnit ID (required for normal users).
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
networkNoFilter by network ID.
applicationNoFilter by application ID.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation, but the description does not state whether it is non-mutating, describe pagination or sorting behavior, or indicate what the response contains. For a 6-parameter tool with no annotations, this is insufficient behavioral context.

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

Conciseness4/5

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

The description is one short, front-loaded sentence with no filler or redundant wording. It communicates the core purpose immediately. However, it is so terse that it omits context that would be useful for call selection, so it does not earn a 5.

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 no annotations and no output schema, a one-sentence purpose-only description leaves important gaps: the return format is not described, pagination behavior is not summarized, and there is no guidance distinguishing this from similar route tools. The complete parameter schema helps, but the description alone is not enough for an agent to confidently know what to expect or when to prefer 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 description coverage is 100%, so the schema already documents all six parameters, including unit, sort, limit, offset, network, and application. The description adds no new parameter meaning beyond noting the unit scope, which matches the required unit parameter. Baseline 3 is appropriate because the schema does the heavy lifting.

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 network routes in a unit.' It clearly indicates that the operation is a list action and that it is scoped to a unit, which separates it from route create/count/delete tools. It does not explicitly contrast with sibling tools such as device_route_list or network_route_count, but the resource and verb are clear enough for basic differentiation.

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 alternatives like network_route_count or device_route_list. The description provides only the action itself, with no mention of limitations, prerequisites, or conditions that would make this tool the right choice.

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

network_send_uldataB

Simulate uplink data from a device via a network.

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesData payload in hexadecimal string format.
deviceIdYesSource device ID.
networkIdYesThe network ID.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only says 'simulate' without disclosing side effects such as whether the data is stored, whether it appears in uplink data lists, whether the network/device must already exist, or what the response looks like. This is too sparse for an action that creates data.

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 definition is a single front-loaded sentence with no filler words. It is easy to parse and appropriately short, though it is slightly too terse to fully support an agent's decision-making.

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

Completeness2/5

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

For a 3-parameter simulation action with no annotations and no output schema, the description is under-specified. It does not explain return values, prerequisites, verification steps, or whether the simulated data can later be read via sibling tools like data_network_uldata_list.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents payload, deviceId, and networkId, including the hexadecimal payload format. The description adds no additional parameter-level meaning, so it earns the baseline score for high schema coverage.

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

Purpose4/5

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

The description uses a specific verb ('Simulate') and identifies the resource/action ('uplink data from a device via a network'). It clearly conveys the tool's operation and is distinguishable from downlink-oriented siblings such as application_send_dldata because it explicitly targets uplink.

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 word 'Simulate' implies the tool is for testing or injecting uplink data rather than sending real traffic. However, it does not explicitly state when to prefer this over alternatives, nor does it mention exclusions or selection criteria.

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

network_statsB

Get queue statistics for a network (dldata queue).

ParametersJSON Schema
NameRequiredDescriptionDefault
networkIdYesThe network ID.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get,' which implies read-only, but it does not disclose what statistics are returned (queue depth, counts, rates), whether the call has performance implications, or what the response format looks like. There is no contradiction, but the transparency beyond the basic action is minimal.

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 nine-word sentence with the verb and core resource front-loaded, and zero filler or redundancy. 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 tool with one required parameter, the input side is fully covered by the schema. However, with no output schema and no annotations, the description's vague term 'statistics' leaves the return value undefined, and the read-only nature is only implied by the word 'Get.' Adequate for a simple tool, but a short phrase describing what metrics are returned would complete it.

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

Parameters3/5

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

Schema coverage is 100% and networkId is already documented as 'The network ID,' so the baseline of 3 applies. The description contributes only marginal context by indicating the network owns a dldata queue, which slightly clarifies what networkId refers to, but adds no format, constraints, or selection guidance for the parameter.

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

Purpose4/5

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

The description uses a specific verb ('Get') and a specific resource ('queue statistics for a network'), and the parenthetical '(dldata queue)' narrows the scope beyond the tool name alone, helping distinguish it from siblings like network_get (network entity settings) and data_network_dldata_list (data records). However, it never defines what 'statistics' actually includes, so the resource noun remains somewhat vague.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus closely related siblings such as network_get, data_network_dldata_count, data_network_dldata_list, or dldata_buffer_list. No exclusions, no alternatives, and no decision context are provided, leaving the agent to guess which of the many network/data tools is appropriate.

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

network_updateC

Update a network. password is required when changing hostUri.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoAMQP message TTL in milliseconds.
infoNoOther information (full replacement).
nameNoNew display name.
lengthNoAMQP max queue length.
hostUriNoNew queue URI. Triggers reconnection.
passwordNoNew queue connection password (required when changing hostUri).
networkIdYesThe network ID to update.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only mentions that password is required when changing hostUri, but does not disclose that hostUri triggers reconnection, that info is a full replacement, or any side effects, permissions, or idempotency considerations.

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

Conciseness5/5

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

The description is compact and front-loaded, with two short sentences and no filler. The first sentence states the core action and the second adds a critical conditional requirement.

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 7 parameters, a nested object, no annotations, and no output schema, this description is too sparse. It omits the reconnection behavior of hostUri, the full-replacement semantics of info, and any return or error information, leaving important context to be inferred.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters, including the hostUri/password relationship. The description merely repeats that condition and adds no additional semantic value beyond what the input schema provides.

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 ('Update a network'), which is sufficient to distinguish it from sibling tools like network_create and network_delete. However, it largely restates the tool name and does not specify which fields are updatable, leaving that to the schema.

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

Usage Guidelines2/5

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

The description provides almost no guidance about when to choose this tool over alternatives such as network_create or network_get. The only usage hint is the password condition when changing hostUri, which is a prerequisite rather than a selection guideline.

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

unit_countA

Get the count of units owned by the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault
containsNoFilter by code substring (case insensitive).

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the disclosure burden. It usefully discloses the ownership scope ('owned by the current user') and implies a read-only count operation. However, it does not state the return format or clarify whether the optional contains filter affects the count, leaving some behavioral details implicit.

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 of nine words conveys the operation, resource, and scope with no redundancy or filler. 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 simple one-optional-parameter count tool, the description plus schema is largely sufficient. It covers what is counted and whose units are counted. The main gap is the lack of an explicit output format, but 'count' strongly implies a numeric result, so the definition is still reasonably complete.

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

Parameters3/5

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

Schema description coverage is 100%: the contains parameter is already documented as a case-insensitive code substring filter. The description adds no additional parameter semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('count of units'), and clearly scopes the operation to units 'owned by the current user.' This distinguishes it from sibling tools like unit_list, which would return record details rather than a count.

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

Usage Guidelines4/5

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

The description gives clear context: use this tool when you need a count of the current user's units. It does not explicitly mention alternatives or exclusions, but the count-versus-list distinction is clear enough from the description and naming pattern among siblings.

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

unit_createA

Create a unit. The calling user becomes the owner.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesUnit code, pattern [A-Za-z0-9][A-Za-z0-9-_]*. Lowercased.
infoNoOther information.
nameNoDisplay name.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It adds a real behavioral consequence beyond the verb: the calling user becomes the owner. It does not cover duplicate-code handling, permission requirements, or return behavior, but the ownership context is genuine added value.

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

Conciseness5/5

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

The description is two short sentences with zero filler. The action is front-loaded and the ownership consequence is placed right after, so an agent can quickly understand the 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 create operation with no output schema and no annotations, it would be helpful to state what the call returns, such as a generated unit ID, and whether duplicate codes cause an error. The ownership statement partially compensates, but the missing return and error behavior leaves the description incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents code, name, and info including the code pattern and lowercasing. The description adds no parameter-specific meaning, but none is needed because the schema handles the semantics.

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

Purpose5/5

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

The description names a specific action and resource: 'Create a unit.' It also adds a meaningful consequence, ownership by the calling user, which distinguishes this from other unit_* operations. The create verb clearly separates it from unit_get, unit_update, unit_list, and unit_delete.

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

Usage Guidelines3/5

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

The description implies this tool is for creating a brand-new unit, and the ownership note gives useful context. However, it does not explicitly say when not to use it or point to alternatives such as unit_update for modifying an existing unit. The usage guidance is mostly left to inference from the tool name.

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

unit_deleteA

Delete a unit and all its resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesThe unit ID to delete.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose a meaningful behavioral side effect: deleting the unit cascades to 'all its resources'. However, it does not state whether deletion is permanent or irreversible, what those resources exactly are, or any authorization requirements.

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

Conciseness5/5

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

The description is a single sentence with no filler. 'Delete a unit' is front-loaded, and 'all its resources' adds critical scope without unnecessary detail.

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

Completeness3/5

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

For a one-parameter destructive operation with no annotations or output schema, the description covers the core action and scope. However, it omits return behavior, irreversibility, and the exact set of affected resources, leaving meaningful gaps for an agent evaluating the consequences of invocation.

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

Parameters3/5

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

Schema description coverage is 100%, and the only parameter unitId is already documented as 'The unit ID to delete'. The description adds no additional parameter semantics beyond the schema, but the schema alone is sufficient for this single-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 uses the specific verb 'Delete', names the resource 'unit', and adds the important scope 'and all its resources'. This distinguishes it from sibling unit tools like unit_get, unit_update, and unit_list.

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

Usage Guidelines2/5

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

The description provides no guidance about when to use this tool versus alternatives, nor does it mention prerequisites, conditions, or exclusions. The agent is left to infer usage solely from the tool name and the generic delete phrasing.

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

unit_getA

Get details of a specific unit.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitIdYesThe unit ID to retrieve.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. 'Get details' indicates a read-only, non-mutating operation and that a response containing unit details is expected, but it does not disclose error behavior, authentication needs, or which fields are returned.

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

Conciseness5/5

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

The description is a single, short sentence with no filler, front-loaded with the action and object. It is appropriately sized for a simple getter.

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

Completeness4/5

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

For a one-parameter read tool with no output schema, the description plus schema are sufficient for correct invocation. It could mention not-found or error conventions, but nothing essential is missing.

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

Parameters3/5

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

The only parameter, unitId, is already fully documented in the schema as 'The unit ID to retrieve.' The tool description adds no further semantic or format detail, so with 100% schema coverage it sits at the baseline.

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

Purpose5/5

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

The verb 'Get' plus the resource phrase 'details of a specific unit' clearly identifies a read operation for a single unit. The qualifier 'specific' separates it from list- and count-style siblings like unit_list and unit_count.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving one unit's details rather than creating, updating, deleting, or listing units. However, it does not explicitly name alternatives or state when not to use this tool, so the routing decision is left to inference.

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

unit_listA

List units owned by the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort key:order. Keys: code, created, modified, name.
limitNoMax items; 0 for all (default 100).
offsetNoData offset (default 0).
containsNoFilter by code substring (case insensitive).

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds the ownership scoping and implies a read-only list operation, but says nothing about authentication needs, default ordering, pagination behavior, or the shape of the returned data.

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

Conciseness5/5

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

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

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

Completeness3/5

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

This is a simple list operation with four optional parameters, so the description plus schema covers the basic call contract. However, with no output schema and no behavioral notes, an agent cannot tell whether the response is a plain array or a paginated envelope, leaving a notable gap.

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

Parameters3/5

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

The input schema documents all four parameters (sort, limit, offset, contains) with 100% coverage, so the description does not need to repeat them. The description adds no extra parameter-level meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List'), a clear resource ('units'), and a precise scope ('owned by the current user'). This distinguishes it from sibling tools like unit_get, unit_count, and unit_create without ambiguity.

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving a collection of the current user's units, which gives some usage context. However, it never explicitly says when not to use this tool or names alternatives for single-unit lookup or counting, leaving routing to inference.

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

unit_updateC

Update a unit's display name or info.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoOther information (full replacement).
nameNoNew display name.
unitIdYesThe unit ID to update.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits itself. It only says 'update' and does not mention that the info field is a full replacement, how partial updates behave, or any side effects or requirements. This is a significant gap for a mutation tool.

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. It is concise and scannable, though the brevity comes at the cost of behavioral nuance.

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 three-parameter mutation tool with a nested full-replacement object and no output schema, the description is too thin. It does not communicate the full-replacement behavior, the required unitId, or any operational context, leaving the agent to infer too much.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description loosely maps to the name and info parameters but adds little beyond the schema, and it does not mention the required unitId parameter or the full-replacement semantics of info.

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

Purpose4/5

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

The description states a clear action ('Update'), a resource ('unit'), and the specific attributes being changed ('display name or info'). It is distinguishable from the create/get/delete sibling tools, though 'info' is vague and not elaborated.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like unit_create, unit_get, or unit_delete. No prerequisites, exclusions, or conditions are mentioned.

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

user_getA

Get the current user's profile (account, name, info, roles, createdAt, modifiedAt, verifiedAt).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations present, the description carries the burden for behavioral disclosure. 'Current user' conveys that the operation is tied to the caller's authentication context, and 'Get' implies a read-only action, but it does not state auth requirements, error behavior, or that no state is changed.

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

Conciseness5/5

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

The entire description is one front-loaded sentence with no filler, and the parenthetical field list efficiently communicates the returned data without unnecessary prose.

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

Completeness4/5

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

For a zero-parameter, read-only-looking getter, the description is nearly complete: it names the resource and the returned fields. It could add an explicit note about authentication requirements or potential error responses, but those are largely inferable from the tool's simple nature.

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

Parameters4/5

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

There are zero parameters, so the schema provides no work beyond its empty properties object. The description's listed output fields add contextual value by showing what the retrieved profile contains.

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

Purpose4/5

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

The description uses a specific verb ('Get'), names the exact resource ('the current user's profile'), and enumerates the returned fields, making the tool's purpose unmistakable. It doesn't explicitly differentiate from sibling auth_tokeninfo, though the resource scope ('profile' vs token info) is clear.

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

Usage Guidelines3/5

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

'Get the current user's profile' implies this is the tool to call when a caller needs their own account/profile data, and it requires no arguments. However, it offers no explicit when-not-to-use guidance or comparison to sibling retrieval tools like auth_tokeninfo.

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

user_updateA

Update the current user's profile. Provide at least one of: password, name, info.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoNoOther information (full replacement).
nameNoNew display name.
passwordNoNew password.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals that the tool mutates the profile and enforces a partial-update rule ('Provide at least one of'), but it omits details such as required authentication context, what happens when the password changes, or the success/error response shape. For a mutating tool with no annotation support, this is thin.

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 with no filler. The core action and resource appear first, and the key parameter constraint is front-loaded. 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 three-parameter update with a complete schema, the essential invocation information is present: what to update, which parameters are allowed, and the minimum-input rule. However, with no output schema and no annotations, the agent receives no guidance on return values, error behavior, or side effects, so completeness is adequate but not thorough.

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

Parameters4/5

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

Schema description coverage is 100%, and each parameter already has a meaningful schema description. The description adds the important 'at least one of' constraint that is not encoded in the schema's required list, which helps prevent no-op calls. It only lists the fields otherwise, but the added constraint gives real value beyond the schema.

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

Purpose5/5

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

The description states a specific action ('Update') and a specific resource ('the current user's profile'), which clearly distinguishes it from sibling tools that act on clients, units, applications, networks, and devices. It is not a tautology and tells an agent exactly what operation will be performed.

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

Usage Guidelines4/5

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

The intended context is clear: modify the profile of the currently authenticated user, as opposed to user_get (read-only) or the other resource-scoped update tools. It does not explicitly name alternatives or say when not to use it, but the narrow scope makes the use case unambiguous.

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. 66 tool updatesv0.1.0
    • First observedapplication_count
    • First observedapplication_create
    • First observedapplication_delete
    • First observedapplication_get
    • First observedapplication_list
    • First observedapplication_send_dldata
    • First observedapplication_stats
    • First observedapplication_update
    • First observedauth_tokeninfo
    • First observedclient_count
    • First observedclient_create
    • First observedclient_delete
    • First observedclient_get
    • First observedclient_list
    • First observedclient_update
    • First observeddata_application_dldata_count
    • First observeddata_application_dldata_list
    • First observeddata_application_uldata_count
    • First observeddata_application_uldata_list
    • First observeddata_coremgr_opdata_count
    • First observeddata_coremgr_opdata_list
    • First observeddata_network_dldata_count
    • First observeddata_network_dldata_list
    • First observeddata_network_uldata_count
    • First observeddata_network_uldata_list
    • First observeddevice_bulk_create
    • First observeddevice_bulk_delete
    • First observeddevice_count
    • First observeddevice_create
    • First observeddevice_delete
    • First observeddevice_get
    • First observeddevice_list
    • First observeddevice_range_create
    • First observeddevice_range_delete
    • First observeddevice_route_bulk_create
    • First observeddevice_route_bulk_delete
    • First observeddevice_route_count
    • First observeddevice_route_create
    • First observeddevice_route_delete
    • First observeddevice_route_list
    • First observeddevice_route_range_create
    • First observeddevice_route_range_delete
    • First observeddevice_update
    • First observeddldata_buffer_count
    • First observeddldata_buffer_delete
    • First observeddldata_buffer_list
    • First observednetwork_count
    • First observednetwork_create
    • First observednetwork_delete
    • First observednetwork_get
    • First observednetwork_list
    • First observednetwork_route_count
    • First observednetwork_route_create
    • First observednetwork_route_delete
    • First observednetwork_route_list
    • First observednetwork_send_uldata
    • First observednetwork_stats
    • First observednetwork_update
    • First observedunit_count
    • First observedunit_create
    • First observedunit_delete
    • First observedunit_get
    • First observedunit_list
    • First observedunit_update
    • First observeduser_get
    • First observeduser_update

TDQS

B3.2/5.0

Scored across 66 tools

Disambiguation5/5

Each tool targets a distinct resource-action pair, such as user, client, unit, application, network, device, routes, buffers, and data records. Even with 66 tools, the resource prefix clearly separates concerns and prevents misselection.

Naming Consistency4/5

Tool names consistently follow a snake_case resource_action pattern (e.g., client_create, device_list, network_route_delete). A few outliers like auth_tokeninfo and data_coremgr_opdata_list are slightly less verb-driven but remain predictable within their context.

Tool Count2/5

66 tools is far above the typical well-scoped range and will burden an agent with a large surface to navigate. While the platform covers many entities, the count is excessive and could likely be consolidated.

Completeness4/5

The toolset provides thorough CRUD coverage across users, clients, units, applications, networks, devices, routes, and data buffers, plus logging and data queries. Minor gaps exist, such as no network_route_get or update operation, but these are not critical to core workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers