Skip to main content
Glama

mcp-remnawave

MCP server for the Remnawave VPN panel — tools generated from the panel's own API contract

Remnawave 3.4 Node.js 22+ MCP License: MIT Version

English · Русский


Lets an MCP client — Claude Code, Claude Desktop, Cursor or any other — read and manage users, nodes, hosts, config profiles, squads, subscriptions, node plugins, traffic statistics, billing and HWID devices through the panel's REST API.

Every tool is built from @remnawave/backend-contract — the package the panel itself validates requests with. Route, HTTP method and arguments come from the contract, so a tool cannot drift away from the API: updating for a new panel version means bumping one dependency.

Maintained fork of TrackLine/mcp-remnawave.

✨ Highlights

📜 Generated from the contract

203 tools cover the whole API of Remnawave 3.4. A test fails when the contract gains a command that has no tool

🚦 Three access levels

Read only · read + write · read + write + destructive. Tools above the chosen level are not registered at all

🧩 Toolsets

Register only the groups you need (users, nodes, hosts, …) to keep the client's tool list short

🧾 Nothing is dropped silently

An argument the endpoint does not know is an error, not an update that quietly did nothing. Validation errors name the field

🗂 One install, many panels

Panel config is looked up in the current project first — the active panel is whichever project you are working in

🪶 Compact answers

List tools leave out xray configs and raw inbound objects unless asked (full: true)

Related MCP server: remnawave-mcp

🚀 Quick start

git clone https://github.com/Maaagiic/mcp-remnawave.git
cd mcp-remnawave
npm install && npm run build

cp .env.example .env          # set REMNAWAVE_BASE_URL and REMNAWAVE_API_TOKEN

# Claude Code — available in every project:
claude mcp add --scope user remnawave -- node "$PWD/dist/index.js"

That's it. Ask your client to call system_metadata — it should answer with the panel version.

{
  "mcpServers": {
    "remnawave": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-remnawave/dist/index.js"]
    }
  }
}

The server speaks MCP over stdio, so the client starts one container per session — there is no port to expose and nothing to keep running.

docker build -t remnawave-mcp .
claude mcp add --scope user remnawave -- docker run -i --rm --env-file /absolute/path/to/.env remnawave-mcp

Any stdio MCP client works — point it at node dist/index.js and pass the environment variables from the table below (or rely on the config file lookup).

⚙️ Configuration

Variable

Default

Description

REMNAWAVE_BASE_URL

— (required)

Panel URL, e.g. https://panel.example.com

REMNAWAVE_API_TOKEN

— (required)

API token (Bearer) — Panel → API tokens

REMNAWAVE_READONLY

false

true = only tools that read are registered (recommended to start with)

REMNAWAVE_ALLOW_DESTRUCTIVE

true

false = tools that delete data or act on every user/node are not registered

REMNAWAVE_TOOLSETS

all

Comma-separated toolsets to register, e.g. users,nodes,hosts

REMNAWAVE_TOOLS_EXCLUDE

—

Comma-separated tool names to leave out; * is a wildcard (users_bulk_*)

REMNAWAVE_TIMEOUT_MS

30000

Timeout for one request to the panel

REMNAWAVE_API_KEY

—

X-Api-Key for a reverse proxy in front of the panel

REMNAWAVE_ENV_FILE

—

Explicit path to a config file

Where the config comes from

The server stops at the first file that provides REMNAWAVE_BASE_URL and REMNAWAVE_API_TOKEN:

1. $REMNAWAVE_ENV_FILE          explicit path
2. <cwd>/.remnawave.env         per-project — add it to .gitignore
3. <cwd>/.env
4. <package>/.env               fallback

MCP clients launch stdio servers with cwd set to the project root, so with a single global install the active panel is whichever project you are working in. To add a panel, drop a .remnawave.env into its project — nothing to change on the server side. Variables already present in the environment are never overridden, so env passed by the client registration always wins. If nothing is found, the server exits with a message that lists the files it looked at.

Access levels

Every tool has a kind, shown to the client as MCP annotations (readOnlyHint, destructiveHint):

Kind

What it is

Registered when

read

Does not change the panel (includes POST endpoints that only look things up)

always

write

Creates or changes something

REMNAWAVE_READONLY is not true

destructive

Deletes data, or acts on every user or node at once

write mode and REMNAWAVE_ALLOW_DESTRUCTIVE is not false

Tools above the chosen level are not registered, so the client cannot even attempt them; calling one by name answers with the reason it is off. A sensible setup for daily work is write mode with REMNAWAVE_ALLOW_DESTRUCTIVE=false.

🧰 Tools

203 contract tools in 12 toolsets, plus api_request.

Toolset

Read

Write

Destructive

users

users_list, users_stream, users_get, users_get_by_username, users_get_by_short_uuid, users_resolve, users_tags_list, users_accessible_nodes, users_subscription_request_history

users_create, users_update, users_enable, users_disable, users_revoke_subscription, users_reset_traffic, users_extend_expiration, users_bulk_update, users_bulk_update_squads, users_bulk_extend_expiration, users_bulk_reset_traffic, users_bulk_revoke_subscription

users_delete, users_bulk_delete, users_bulk_delete_by_status, users_bulk_all_update, users_bulk_all_reset_traffic, users_bulk_all_extend_expiration

nodes

nodes_list, nodes_get, nodes_tags_list, keygen_get, node_integrations_list, node_integrations_get

nodes_create, nodes_update, nodes_enable, nodes_disable, nodes_restart, nodes_reset_traffic, nodes_reorder, nodes_bulk_actions, nodes_bulk_update, nodes_bulk_profile_modification, node_integrations_create, node_integrations_update

nodes_delete, nodes_restart_all, node_integrations_delete

hosts

hosts_list, hosts_get, hosts_tags_list

hosts_create, hosts_update, hosts_clone, hosts_reorder, hosts_bulk_enable, hosts_bulk_disable, hosts_bulk_update

hosts_delete, hosts_bulk_delete

config_profiles

config_profiles_list, config_profiles_get, config_profiles_get_computed_config, config_profiles_get_inbounds, inbounds_list, config_profiles_tags_list, snippets_list

config_profiles_create, config_profiles_update, config_profiles_set_tags, config_profiles_reorder, snippets_create, snippets_update, snippets_sync

config_profiles_delete, snippets_delete

squads

squads_list, squads_get, squads_accessible_nodes, squads_tags_list, external_squads_list, external_squads_get, external_squads_tags_list

squads_create, squads_update, squads_set_tags, squads_reorder, squads_add_many_users, squads_remove_many_users, external_squads_create, external_squads_update, external_squads_set_tags, external_squads_reorder

squads_add_all_users, squads_remove_all_users, squads_delete, external_squads_add_all_users, external_squads_remove_all_users, external_squads_delete

hwid

hwid_devices_list, hwid_devices_list_all, hwid_stats, hwid_top_users

hwid_device_create

hwid_device_delete, hwid_devices_delete_all

subscriptions

subscriptions_list, subscriptions_get_by_user_id, subscriptions_get_by_username, subscriptions_get_by_short_uuid, subscriptions_get_raw_by_short_uuid, subscriptions_get_connection_keys, subscription_info, subscription_request_history_list, subscription_request_history_stats, subscription_settings_get, subscription_templates_list, subscription_templates_get, subscription_templates_tags_list, sub_page_configs_list, sub_page_configs_get, sub_page_configs_tags_list

subscription_settings_update, subscription_templates_create, subscription_templates_update, subscription_templates_set_tags, subscription_templates_reorder, sub_page_configs_create, sub_page_configs_update, sub_page_configs_clone, sub_page_configs_set_tags, sub_page_configs_reorder

subscription_templates_delete, sub_page_configs_delete

node_plugins

node_plugins_list, node_plugins_get, node_plugins_tags_list, node_plugins_torrent_reports, node_plugins_torrent_stats, shared_lists_list, shared_lists_get

node_plugins_create, node_plugins_update, node_plugins_clone, node_plugins_set_tags, node_plugins_reorder, node_plugins_sync, node_plugins_execute, shared_lists_create, shared_lists_update, shared_lists_sync

node_plugins_delete, node_plugins_torrent_truncate, shared_lists_delete

connections

connections_by_user_request, connections_by_user_result, connections_by_node_request, connections_by_node_result, connections_geocheck_request, connections_geocheck_result

—

connections_drop

stats

system_stats, system_stats_recap, system_stats_digest, system_http_stats, system_bandwidth_stats, system_nodes_statistics, system_nodes_metrics, bandwidth_nodes_usage, bandwidth_node_users, bandwidth_nodes_users, bandwidth_nodes_usage_threshold, bandwidth_user_usage, bandwidth_squad_usage, bandwidth_squad_user_usage

—

—

system

system_health, system_metadata, system_configuration, system_generate_x25519, system_srr_matcher, auth_status, settings_get, api_tokens_list, api_tokens_scopes, metadata_node_get, metadata_user_get

settings_update, api_tokens_create, metadata_node_upsert, metadata_user_upsert

api_tokens_delete

billing

billing_providers_list, billing_provider_get, billing_nodes_list, billing_history_list

billing_provider_create, billing_provider_update, billing_node_create, billing_node_update, billing_history_create

billing_provider_delete, billing_node_delete, billing_history_delete

raw

api_request (GET)

—

api_request (any method)

Good to know:

  • Users are identified by a numeric id, not a uuid. To search by telegramId, email, tag or status use users_list with filters: [{"id": "telegramId", "value": 123456789}].

  • A tool takes exactly the fields of its endpoint. Unknown arguments are rejected before anything is sent; values are forwarded as given, with no defaults added.

  • config_profiles_update with config replaces the whole xray config of the profile — read it, patch it, write it back. Nodes using the profile restart xray to apply it.

  • Compact lists: nodes_list, config_profiles_list, squads_list and inbounds_list leave out bulky parts by default; pass full: true for the raw panel response.

  • squads_add_all_users / squads_remove_all_users act on every user. For selected users use squads_add_many_users / squads_remove_many_users.

  • connections_*_request start a job on the node and return a jobId; fetch the outcome with the matching *_result tool.

  • api_request sends a raw request for endpoints the installed contract does not describe yet. GET works in every mode; other methods need write mode with destructive tools allowed.

  • api_tokens_* and settings_* need an API token with the matching scope — otherwise the panel answers Forbidden.

🔁 Panel versions

Tools describe the API of contract 3.4.15 (checked against a live 3.4.4 panel). The server targets Remnawave 3.4; for a 2.x or 3.0–3.3 panel use release v2.1.0.

To follow a new panel release:

npm install --save-exact @remnawave/backend-contract@<version> zod@<the zod version it depends on>
npm run check

npm run check fails with the list of contract commands that have no tool yet (add them to src/tools/registry.ts) and shows every changed argument as a snapshot diff.

⬆️ Upgrading from 2.x

3.0 is a breaking release: tools now follow the 3.4 API exactly.

  • Removed: ip_control_* (the panel moved these routes — use connections_*), hosts_bulk_set_inbound / hosts_bulk_set_port (use hosts_bulk_update), subscriptions_get_subpage_config.

  • Renamed, because the old names promised something else: squads_add_users / squads_remove_users and external_squads_add_users / _remove_users → *_add_all_users / *_remove_all_users. The endpoints take no user list and affect every user; selected users go through the new squads_add_many_users / squads_remove_many_users.

  • Arguments changed wherever 2.x had drifted from the panel: hosts take tags (array) and internalSquads instead of tag and excludedInternalSquads; nodes_restart takes forceRestart; nodes_bulk_* take uuids; *_reorder take a list of {uuid, viewPosition}; *_clone take cloneFromUuid; HWID tools take userId; tools that address one user (users_get, users_delete, …) take userId instead of id.

  • New: traffic statistics (bandwidth_*), geocheck, shared lists, node integrations, subscription settings, tags for profiles/squads/templates, hosts_clone, hosts_reorder, hosts_bulk_update, users_stream, api_request.

  • docker-compose.yml is gone: the server is a stdio process, see the Docker section above.

🛠 Development

npm run dev         # tsup --watch
npm run build       # tsup → dist/index.js
npm run check       # typecheck + tests

The tests run the real server in-process against a mocked panel: they snapshot the tool surface (names, schemas, annotations) and the HTTP request of every tool, so any change to what a tool sends shows up in review. Accept intended changes with UPDATE_SNAPSHOTS=1 npm test.

Two scripts check a real panel, without changing anything on it:

node scripts/smoke.mjs path/to/.env         # calls every read tool, reports routes the panel does not serve
node scripts/stdio-check.mjs path/to/project   # starts dist/index.js over stdio like a client would

The source is small on purpose: src/tools/registry.ts maps tool names to contract commands, src/tools/contract.ts turns a command into a tool.

📄 License

MIT. Upstream authorship: TrackLine/mcp-remnawave.

Available Tools

204 tools
api_requestA
Destructive

Send a raw request to the panel REST API with the configured token. Use it only for endpoints no dedicated tool covers. All methods are allowed.

NameRequiredDescriptionDefault
bodyNoJSON request body
pathYesPath starting with /api/, e.g. /api/system/metadata
queryNoQuery parameters; objects and arrays are sent as JSON strings
methodNoGET

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description reinforces this with 'All methods are allowed,' flagging that mutating verbs are reachable. However it omits genuinely useful context the annotations do not cover: whether the token's scopes restrict what can be called, how upstream error statuses are surfaced, and that mutations here bypass the validation of dedicated tools.

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?

Three short sentences, front-loaded with purpose then the usage restriction. 'All methods are allowed' is mildly redundant with the method enum but usefully signals the tool's breadth, so it largely 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?

With no output schema, the description should say something about what comes back, and it does not (raw JSON passthrough? error shape?). For a destructive-capable proxy tool, an agent also benefits from knowing whether it validates paths or scopes. The core purpose and usage rule are present, so it is adequate but with clear 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 75% and the schema already documents path format with an example, query JSON-string encoding, and the method enum with a GET default. The description adds only that the request is authenticated 'with the configured token,' which explains the absence of a token parameter but nothing about the parameters themselves. Baseline 3 fits.

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

Purpose5/5

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

States a specific verb and resource ('send a raw request to the panel REST API') and immediately scopes it against the ~150 sibling tools with 'Use it only for endpoints no dedicated tool covers.' An agent can tell exactly what this tool is and is not for 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 Guidelines4/5

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

Gives a clear negative selection rule ('only for endpoints no dedicated tool covers'), which is the key routing decision for an escape-hatch tool. It does not name specific alternatives, but with a sibling list this size that is impractical; a preference hint such as 'prefer read-only use' would have earned a 5.

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

api_tokens_createA

Create a new API token. This endpoint is forbidden to use via "API-key". It can only be used with an admin JWT-token.

NameRequiredDescriptionDefault
nameYesName of the API token
scopesNoScopes of the API token
expiresInDaysYesExpiration days of the API token

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, which the description does not contradict. The description adds genuine behavioral context beyond the annotations by disclosing the authentication constraint (admin JWT only, API-key forbidden), which is exactly the kind of operational detail the annotations cannot convey.

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?

Two tight sentences with the core action front-loaded and the auth caveat following. No wasted words; the definition is easily parsed.

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?

No output schema exists, and the description does not explain what is returned (e.g., whether the token secret is revealed only once), which is a notable gap for a token-creation tool. Still, it covers the purpose and the critical auth constraint needed 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?

Schema description coverage is 100%, so all three parameters (name, scopes, expiresInDays) are already documented in the schema. The description adds no parameter-level meaning beyond what the schema 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?

States a specific verb and resource ("Create a new API token"), so an agent immediately knows the operation. It does not explicitly differentiate from siblings like api_tokens_list or api_tokens_delete, but the create action is unambiguous from the name plus description.

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?

Provides one important usage precondition: the endpoint is forbidden via API-key and requires an admin JWT-token. However, it offers no guidance on when to use this versus api_tokens_list (e.g., check for existing tokens first) or any workflow context.

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

api_tokens_deleteA
Destructive

Delete API token. This endpoint is forbidden to use via "API-key". It can be used only with an admin JWT-token.

NameRequiredDescriptionDefault
uuidYesUUID of the API token

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is covered structurally. The description adds genuinely new behavioral context beyond that: the authentication constraint (admin JWT only, API-key forbidden), which affects whether an agent can invoke it at all. It does not say whether deletion is recoverable or what happens to the credential immediately.

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, zero filler, with the action front-loaded and the constraint immediately behind it. Nothing needs to be reordered or trimmed.

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 destructive call with annotations covering the safety profile and no output schema required, the description supplies the action plus the critical auth gate. It is largely complete; an explicit statement of irreversibility or whether the token is immediately invalidated would close the remaining gap.

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

Parameters3/5

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

Schema description coverage is 100% and there is exactly one parameter (uuid) whose format and meaning are fully documented in the schema. The description adds no parameter-level detail, so the schema carries the burden and a baseline 3 applies.

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

Purpose4/5

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

The description opens with a specific verb+resource pair, "Delete API token," which is unambiguous and clearly distinct from siblings like api_tokens_create, api_tokens_list, and api_tokens_scopes. It never explicitly names an alternative or scope boundary, so it differentiates by resource name rather than by exclusion.

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

Usage Guidelines4/5

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

It states an explicit precondition for invocation: the endpoint is forbidden via "API-key" and usable only with an admin JWT-token. That is real usage guidance an agent must honor before calling. It stops short of when-to-use/when-not guidance relative to siblings (e.g. revoke vs delete semantics).

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

api_tokens_listA
Read-only

Get all API tokens. This endpoint is forbidden to use via "API-key". It can only be used with admin JWT-token.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, giving the safety profile. The description adds meaningful behavioral context beyond that: the authentication requirement (admin JWT only, not API-key), which is a real gate on invocation. It doesn't mention pagination or return shape, but the auth disclosure is substantive.

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?

Two sentences, front-loaded with the primary action before the auth caveat. Efficient and readable, with only minor awkwardness in the quoting of "API-key".

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

Completeness4/5

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

For a zero-parameter read-only listing, the description covers purpose and the critical auth constraint. No output schema exists, but a list-returning endpoint needs little explanation of return shape; nothing essential to invoking it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to document. Baseline for a no-parameter tool is 4.

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+resource ('Get all API tokens'), clearly distinguishing it from siblings like api_tokens_create, api_tokens_delete, and api_tokens_scopes. It does not explicitly name those siblings, but the list semantics are unambiguous.

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

Usage Guidelines4/5

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

It provides an explicit usage constraint: forbidden via API-key, must be used with an admin JWT-token. This tells the agent the conditions under which the call will succeed, though it doesn't name alternatives or say when to prefer a more filtered listing.

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

api_tokens_scopesA
Read-only

Get available API token scopes. Returns the catalog of scopes that can be granted to an API token, grouped by resource. Forbidden via "API-key", admin JWT only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true/destructiveHint=false, so safety is covered. The description adds meaningful context beyond that: the authentication constraint (admin JWT only, not API-key) and the shape of what is returned (scopes grouped by resource).

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

Conciseness5/5

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

Three short sentences, front-loaded with the purpose, followed by return shape and the auth restriction. No filler or redundancy.

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

Completeness5/5

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

For a zero-parameter, annotation-covered read tool with no output schema, the description supplies everything an agent needs: what it returns, how it's organized, and the caller authentication required to invoke it.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly signals a parameterless catalog read.

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

Purpose5/5

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

States a specific verb and resource ('Get available API token scopes') and clarifies the return content ('catalog of scopes that can be granted to an API token, grouped by resource'). This clearly separates it from siblings like api_tokens_list/create/delete, which operate on tokens rather than the scope catalog.

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

Usage Guidelines4/5

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

Provides the key selection context that this is the read path for discovering grantable scopes (implicitly feeding api_tokens_create), and explicitly states the access constraint 'Forbidden via API-key, admin JWT only.' It does not name a sibling alternative outright, but the when-to-use context is clear.

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

auth_statusC
Read-only

Get the status of the authentication

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds nothing — no indication of whether it hits the network, whether it validates the supplied API key, or what constitutes a 'valid' vs 'invalid' status. With annotations present the bar is lower, but zero added context earns only a 2.

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 short sentence with no waste and the key concept front-loaded. It is efficient, though the brevity tips into under-specification rather than crispness.

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?

There is no output schema, so the description carries the burden of conveying what comes back — yet it gives no indication of the return shape (boolean authenticated, token expiry, user identity, scopes). For a diagnostic tool whose whole value is the returned status, this is a real gap.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is no parameter semantics to describe and the schema is trivially complete.

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

Purpose3/5

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

The description states a verb and resource ('Get the status of the authentication'), so it is not a bare tautology, but 'the authentication' is vague: it doesn't say whose auth (API key? current session? global system auth state?) or what 'status' comprises. No sibling tool overlaps this name, so differentiation is not the problem — specificity is.

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 when-to-use guidance, no precondition (e.g., 'call before other operations to verify the API key is valid'), and no mention of alternatives. The agent must infer the trigger condition entirely.

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

bandwidth_nodes_usageC
Read-only

Get Nodes Usage by Range

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
startYesStart date (YYYY-MM-DD)
topNodesLimitNoLimit of top nodes to return

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing further: no aggregation granularity, no scoping, no note on whether the result is per-node or totaled, and no indication of result size behavior despite the topNodesLimit parameter.

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

Conciseness3/5

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

Five words, front-loaded, no filler or redundancy. However, brevity here reflects under-specification rather than disciplined conciseness; the single phrase has no room to earn its place beyond restating the name.

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?

There is no output schema, so the description would need to characterize what the tool returns, and it does not; 'usage' is left undefined. Given a three-parameter analytics tool sitting among many overlapping bandwidth siblings, an agent lacks enough context to invoke it confidently or interpret its results.

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%: start, end, and topNodesLimit all carry their own descriptions and formats, so the schema does the heavy lifting. The description's 'by Range' only loosely gestures at the date parameters and adds no syntax, timezone, or limit semantics beyond what the schema already states. Baseline 3 applies.

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

Purpose2/5

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

The description restates the tool name ('bandwidth_nodes_usage' -> 'Get Nodes Usage') and adds only the modifier 'by Range', which merely echoes the required start/end dates. It gives no indication of what 'usage' means (traffic, bytes, requests, connections) and does nothing to separate it from bandwidth_node_users, bandwidth_nodes_users, bandwidth_nodes_usage_threshold, bandwidth_user_usage, or bandwidth_squad_usage.

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 when-to-use guidance, no stated conditions, and no mention of any alternative. With roughly a dozen bandwidth/system stat siblings in the list, an agent has no basis in the description for choosing this tool over bandwidth_nodes_users or system_bandwidth_stats.

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

bandwidth_nodes_usage_thresholdA
Read-only

Get users exceeding a traffic threshold on the given nodes for a period. Returns users whose total usage over the period on the given nodes is >= minTotalBytes. Underlying usage data is flushed to the database roughly every 2 minutes.

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
startYesStart date (YYYY-MM-DD)
nodesUuidsYesNode UUIDs to include
minTotalBytesNoOnly include users whose total usage over the period is >= this (bytes)

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare a safe read operation, so the bar is lower; the description adds genuinely useful behavior beyond that — a ~2 minute data-flush latency caveat that tells the agent results may lag by up to two minutes, and an exact restatement of the aggregation rule (total usage over the period on the given nodes).

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?

Three short sentences, front-loaded with the core purpose and with no filler. Sentence 2 slightly restates sentence 1's threshold idea, a minor redundancy, but it earns its place by tying the rule to the minTotalBytes parameter.

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?

There is no output schema, but the description tells the agent what is returned (the set of users meeting the threshold). It stops short of describing the return fields (e.g., identifier and usage amount) or any result cap, which would fully close the gap for a 4-parameter query tool.

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

Parameters4/5

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

Schema coverage is 100%, so the 3 baseline applies, but the description adds real meaning: minTotalBytes is applied to the user's total usage summed across the given nodes over the period, not per-node, which is aggregation semantics the schema does not express.

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 (Get) plus resource (users exceeding a traffic threshold) and scope (on the given nodes for a period), which distinguishes it from the other bandwidth_* siblings that lack a threshold concept. It does not explicitly name an alternative tool, so it falls just short of the 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 Guidelines3/5

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

The threshold framing implies when the tool is useful (finding heavy users), and the flush-latency note implies when the data is not suitable, but there is no explicit when-to-use vs. when-not guidance or reference to siblings like bandwidth_nodes_usage.

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

bandwidth_nodes_usersC
Read-only

Get Nodes Users Usage by Nodes UUIDs

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
startYesStart date (YYYY-MM-DD)
nodesUuidsYes
topUsersLimitNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say how the date range scopes the results, how many records come back, or what 'topUsersLimit' actually controls.

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 short sentence with no filler and the scoping key front-loaded. It is efficient, though its brevity is partly under-specification rather than disciplined trimming.

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 four-parameter read tool with no output schema and a confusingly similar sibling set, the description is far too thin. It should at minimum clarify what is being aggregated, how the date window applies, and what topUsersLimit does.

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

Parameters2/5

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

Schema coverage is only 50%: 'start' and 'end' are documented in the schema, but 'nodesUuids' and 'topUsersLimit' have no description anywhere. The only parameter-related text ('by Nodes UUIDs') merely restates the required array param already visible in the schema, and the semantics of the top-N limit are left entirely unstated.

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

Purpose3/5

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

The description gives a verb ('Get'), a resource ('Nodes Users Usage') and a scoping key ('by Nodes UUIDs'), so the general shape is understandable. However, 'Nodes Users Usage' is ambiguous — it could mean per-user traffic on nodes or top-user rankings per node (the 'topUsersLimit' param hints at the latter) — and it makes no attempt to distinguish itself from the near-identically named sibling 'bandwidth_node_users' or from 'bandwidth_nodes_usage'.

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 when-to-use guidance at all. Given siblings such as 'bandwidth_node_users', 'bandwidth_nodes_usage', 'bandwidth_user_usage' and 'bandwidth_squad_user_usage', the agent has no stated basis for choosing this tool over the others.

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

bandwidth_node_usersC
Read-only

Get Node Users Usage by Node UUID

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
uuidYes
startYesStart date (YYYY-MM-DD)
topUsersLimitNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds nothing beyond that — it does not say the result is a ranking of top users, whether topUsersLimit truncates results, or how the start/end window is interpreted. With annotations carrying the safety profile, the remaining behavioral burden is unaddressed.

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

Conciseness3/5

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

A single short phrase, so nothing is wasted and the keying parameter is front-loaded. But its brevity is under-specification rather than discipline — the phrase carries too little information to be a useful definition.

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

Completeness2/5

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

For a 4-parameter, 3-required analytics tool with no output schema and only 50% schema coverage, the description leaves the return shape (top-users list?) and the meaning of topUsersLimit and the date window unstated. Too incomplete for the tool's complexity.

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

Parameters2/5

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

Schema description coverage is only 50%: uuid and topUsersLimit have no schema descriptions. The description only gestures at the uuid parameter ("by Node UUID") and says nothing about topUsersLimit's role in limiting/ranking returned users, which is the one parameter that most changes behavior.

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?

"Get Node Users Usage by Node UUID" names a verb and resource and keys it to the node UUID parameter, so the basic operation is inferable. However, "Node Users Usage" is vague — it does not say the usage is bandwidth, nor does it distinguish this from siblings like bandwidth_nodes_usage or bandwidth_user_usage, so an agent cannot confidently pick it without reading 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?

There is no when-to-use guidance at all: no mention of the date-range requirement, how it differs from bandwidth_nodes_usage (whole-node) or bandwidth_user_usage (per-user across nodes), and no exclusions. The agent must infer selection entirely from the name.

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

bandwidth_squad_usageA
Read-only

Get internal squad users traffic usage for a period. Returns users whose total usage over the period on the given nodes is >= minTotalBytes, scoped to the nodes reachable via the internal squad inbounds. Underlying usage data is flushed to the database roughly every 2 minutes.

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
uuidYesInternal squad UUID
limitNoNumber of users to return, no more than 1000
startYesStart date (YYYY-MM-DD)
cursorNoPass the nextCursor from the previous response. Omit on the first request.
minTotalBytesNoOnly include users whose total usage over the period is >= this (bytes)

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely non-schema context: that the listing is threshold-filtered, that scope is restricted to nodes reachable through the squad's inbounds, and — most valuable — that usage data is only flushed to the database roughly every 2 minutes, which tells the agent results can lag. It stops short of describing pagination or the shape of returned user records.

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?

Three compact sentences, front-loaded with the core purpose and followed by the most decision-relevant detail. Minor noise: "on the given nodes" references nodes that are not actually a parameter, which slightly muddies an otherwise efficient phrasing.

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

Completeness5/5

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

With a fully described six-parameter schema and no output schema, the description covers what an agent needs: what is returned, the inclusion threshold, the node scoping derived from the squad, and the data-freshness caveat. Nothing about correct invocation is left unresolved, aside from sibling disambiguation handled in the usage dimension.

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 every parameter is already documented in the schema. The description restates minTotalBytes semantics ("total usage over the period on the given nodes is >= minTotalBytes") but adds no format, unit, or edge-case detail beyond it, 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?

States a specific verb and resource: "Get internal squad users traffic usage for a period," and clarifies the result scope (users above minTotalBytes, limited to nodes reachable via the squad's inbounds). However, it does not distinguish itself from the near-identically named sibling bandwidth_squad_user_usage or from bandwidth_user_usage, so an agent still has to guess which of the two squad-usage tools to pick.

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 when-to-use, when-not-to-use, or alternative-tool guidance at all. Given a sibling literally named bandwidth_squad_user_usage plus bandwidth_user_usage and bandwidth_nodes_usage, the absence of disambiguation is a real selection hazard rather than a minor omission.

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

bandwidth_squad_user_usageC
Read-only

Get a single user daily traffic usage on the internal squad nodes for a period. Returns users whose total usage over the period on the given nodes is >= minTotalBytes, scoped to the nodes reachable via the Internal Squad inbounds. Every day in the range is present (zero-filled). Underlying usage data is flushed to the database roughly every 2 minutes.

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
startYesStart date (YYYY-MM-DD)
userIdYes
squadUuidYesInternal squad UUID

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful operational context — zero-filled days and a ~2 minute flush cadence — but also asserts a minTotalBytes threshold that does not exist in the schema, which muddies the 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.

Conciseness3/5

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

Purpose is front-loaded and the sentences carry real information, but the minTotalBytes sentence is wasted at best and misleading at worst, and 'Get a single user' conflicts with 'Returns users whose total usage...', signaling a list result.

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

Completeness3/5

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

With no output schema, the description does explain return semantics (per-day, zero-filled, threshold-filtered), which is valuable. However the singular/plural mismatch leaves the cardinality of the result ambiguous, and the phantom threshold parameter is unexplained.

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

Parameters2/5

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

Schema coverage is 75% (userId is undocumented), so the description should compensate, yet it says nothing about userId and instead introduces minTotalBytes, a parameter absent from the schema. That phantom parameter can send an agent hunting for an argument it cannot supply, which is worse than silence.

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 and resource: 'Get a single user daily traffic usage on the internal squad nodes for a period.' This distinguishes it from squad-level (bandwidth_squad_usage) and node-level (bandwidth_nodes_users) siblings, though no sibling is named explicitly. The scope 'internal squad nodes' is concrete.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternative tools such as bandwidth_squad_usage or bandwidth_user_usage for other granularities. The agent must infer applicability from the resource name alone.

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

bandwidth_user_usageC
Read-only

Get User Usage by Range

NameRequiredDescriptionDefault
endYesEnd date (YYYY-MM-DD)
startYesStart date (YYYY-MM-DD)
userIdYesID of the user
topNodesLimitNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered externally. The description itself adds no behavioral context beyond that – no return shape, no pagination, no mention of what the topNodesLimit affects – so it contributes nothing over the structured fields.

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

Conciseness3/5

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

The description is a single front-loaded fragment with no wasted words, but it is under-specified rather than genuinely concise – it is effectively a restated title rather than a purposeful one-liner.

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 four-parameter read tool with no output schema, the description is far too thin: it omits what is returned, how the range and topNodesLimit shape the result, and any usage context. Annotations cover only the safety hint, so the description should do more.

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

Parameters2/5

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

Schema coverage is 75%, with userId, start, and end documented in the schema, but topNodesLimit has no description at all. The description provides no parameter meaning whatsoever, leaving the undocumented parameter unexplained in both places.

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

Purpose3/5

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

The phrase 'Get User Usage by Range' restates the tool name (bandwidth_user_usage) and only adds the notion of a date range. It conveys a read of per-user bandwidth over a time window, but it does not differentiate from close siblings such as bandwidth_squad_user_usage or bandwidth_node_users, which an agent must distinguish by name alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives like bandwidth_squad_user_usage. Usage is only weakly implied by the 'by Range' phrasing.

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

billing_history_createC

Create infra billing history

NameRequiredDescriptionDefault
amountYes
billedAtYesBilling date. Format: 2025-01-17T15:38:45.065Z
providerUuidYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already state readOnlyHint=false and destructiveHint=false, telling the agent this is a non-destructive mutation. The description adds nothing beyond that: no permission requirements, no uniqueness or duplicate-handling behavior for providerUuid+billedAt, and no disclosure of side effects such as provider balance recalculation.

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

Conciseness3/5

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

A single four-word sentence is certainly concise and front-loaded, but brevity here is under-specification rather than efficiency — there is no second sentence to carry any of the missing behavioral or parameter context.

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

Completeness2/5

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

For a mutation tool with no output schema, 33% schema coverage, and three required parameters, the description is too thin. An agent cannot determine required permissions, duplicate-handling rules, or what the created record's identifier looks like from this definition.

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

Parameters2/5

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

Schema description coverage is only 33% — billedAt is documented in the schema, but providerUuid and amount carry no description in either place. The description says nothing about these parameters, so it fails to compensate for the coverage gap in a tool where providerUuid (which provider the entry belongs to) and amount semantics matter.

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

Purpose3/5

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

The verb 'create' plus resource 'billing history' makes the basic operation identifiable and distinguishable from siblings billing_history_list and billing_history_delete. However, 'infra billing history' is oddly phrased and the description never explains what a billing history record represents (a charge entry? a line item tied to a provider?), leaving the purpose only partially clear.

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

Usage Guidelines2/5

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

No guidance on when to create a billing history entry versus alternatives, no prerequisites, and no mention of related siblings such as billing_provider_get or billing_node_create. The agent must infer all usage context from the name alone.

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

billing_history_deleteC
Destructive

Delete infra billing history

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.6/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, and the description merely restates 'Delete' without adding anything beyond that. It does not say whether the deletion is permanent/irreversible, what the uuid identifies, or what protections or permissions apply.

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

Conciseness3/5

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

Four words, front-loaded with the verb, so there is no padding to trim. But the terseness is under-specification rather than efficiency for a destructive one-parameter 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?

For a destructive tool with no output schema and an undocumented parameter, the description leaves key facts unstated: permanence of deletion, what the uuid selects, and any prerequisite step. An agent could call it, but not confidently.

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

Parameters2/5

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

Schema description coverage is 0% for the single uuid parameter, and the description does not compensate by explaining what the uuid refers to (a billing history entry). The bare 'infra billing history' phrase gives no mapping between the parameter and the record to delete.

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 resource ('infra billing history'), which distinguishes it from the sibling billing_history_create and billing_history_list. It does not, however, say what a single deletion targets (a record identified by uuid) or add any differentiation beyond what the name already conveys.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is given. The destructive nature is never acknowledged, and there is no hint about confirming intent or using billing_history_list first to find the target record.

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

billing_history_listC
Read-only

Get infra billing history

NameRequiredDescriptionDefault
sizeNoNumber of billing records to return, no more than 500
startNoStart index (offset) of the billing history records to return, default is 0

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds nothing beyond that—no note on pagination, authentication requirements, or what the returned history contains. It is consistent with the annotations but contributes almost no behavioral context of its own.

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

Conciseness4/5

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

A single, front-loaded sentence with no wasted words. While extremely terse, it is structurally clean and appropriately sized for a simple read tool, though it leaves no room for useful scoping 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?

The description is minimally complete for a simple read-only list with full schema documentation and safety annotations. It still lacks sibling disambiguation and does not describe the return shape or pagination behavior, which are minor gaps given the schema and annotations.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters (size, start) are fully documented in the schema. The description mentions no parameters and adds no meaning beyond what the schema already provides, making the baseline 3 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?

States a specific verb (Get) and resource (infra billing history), so the agent can identify it as a read/list operation. However, it does not explicitly differentiate from siblings like billing_history_create/delete or billing_providers_list, leaving some ambiguity about scope.

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?

Provides no guidance on when to use this tool versus its siblings, such as billing_history_create, billing_history_delete, or other billing list tools. An agent must infer usage from the name alone.

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

billing_node_createC

Create infra billing node

NameRequiredDescriptionDefault
nameYes
nodeUuidYes
providerUuidYes
nextBillingAtYesNext billing date. Format: 2025-01-17T15:38:45.065Z

TDQS

C2.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, which tells the agent this is a non-destructive write. Beyond that the description adds nothing: it does not say whether the referenced provider/node must pre-exist, whether the call is idempotent, what happens on duplicate nodes, or what a successful creation returns.

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

Conciseness2/5

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

The phrase is four words with no structure to speak of. It is not verbose, but as with a bare one-word description, the problem is under-specification rather than conciseness — for a four-required-parameter mutation tool this is far too terse to front-load anything useful.

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?

A four-parameter, all-required mutation tool with 25% schema coverage and no output schema needs the description to explain the relationship between provider, node, and billing schedule. The description supplies none of that, leaving the agent to infer the entire semantics of the operation.

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

Parameters2/5

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

Schema description coverage is only 25% (only nextBillingAt is documented), so the description carries the burden for providerUuid, nodeUuid, and name — and it says nothing about them. It does not explain that providerUuid/nodeUuid are references to existing billing providers and nodes, nor what the nextBillingAt timestamp drives.

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

Purpose3/5

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

The description names a verb (Create) and a resource (billing node), so the basic operation is inferable. However, "infra billing node" is vague domain jargon, and nothing distinguishes this from siblings like billing_nodes_list, billing_node_update, billing_node_delete, or billing_provider_create — the agent must guess whether 'infra billing node' means a billing-enabled node, a provider association, or something else.

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 indication of when to use this tool versus the many adjacent billing and node tools (billing_nodes_list, billing_node_update, billing_provider_create, nodes_create). No prerequisites, no exclusions, no alternatives are mentioned.

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

billing_node_deleteC
Destructive

Delete infra billing node

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.4/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond the word 'Delete' — no indication of irreversibility, whether associated billing history or node records are cascaded, or what authorization is required. For a destructive mutation, this is a meaningful gap even with the lower bar set by annotations.

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

Conciseness3/5

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

It is a single front-loaded fragment with no filler, which is good, but it is under-specified rather than genuinely concise. There is no room wasted, yet no useful structure or detail is provided either.

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, one-parameter tool with no output schema and no annotation detail beyond hints, the description should carry more weight — consequences, scope of deletion, and parameter meaning. It leaves all of that unaddressed.

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

Parameters2/5

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

Schema description coverage is 0%, and the description never references the single required parameter. The agent must infer that 'uuid' identifies the billing node to delete purely from the schema's type and format, with no confirmation of whether it is the node UUID or a billing-record UUID.

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?

It names a specific verb (Delete) and resource (infra billing node), so the basic operation is identifiable. However, it does not differentiate from adjacent siblings such as nodes_delete, billing_history_delete, or billing_node_update, and the term 'infra billing node' is not clarified anywhere. An agent cannot tell from the text alone whether this targets a Remnawave node record or a billing-specific entity.

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 when-to-use guidance, no prerequisites, and no mention of alternatives. With siblings like billing_history_delete and nodes_delete in the list, the description should explain which entity this removes versus those, but it offers nothing.

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

billing_nodes_listC
Read-only

Get infra billing nodes

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds essentially nothing beyond that: no pagination behavior, no filtering/scope limits, no indication of how many nodes or what fields come back. It is close to a restatement of the name.

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 short sentence with no filler, and the resource is front-loaded. It is efficient, though the brevity borders on under-specification rather than true 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?

The tool is simple (no params, read-only annotations), but there is no output schema, so the agent has no idea what a 'billing node' record contains. The description does not fill that gap or note whether results are paged, leaving it minimally viable.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a no-parameter tool applies.

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

Purpose3/5

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

The phrase 'Get infra billing nodes' does name a verb and a resource, so the agent can tell it is a read/list operation over billing node entities. However, it never clarifies how this differs from the very similar 'nodes_list' or from 'billing_history_list'/'billing_providers_list', and 'infra billing nodes' is a loosely defined object. Adequate but with clear sibling-differentiation gaps.

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 when-to-use guidance at all: no statement of when to call this versus nodes_list, billing_providers_list, or billing_history_list, and no prerequisites. The agent must infer usage purely from the name.

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

billing_node_updateC

Update infra billing nodes

NameRequiredDescriptionDefault
uuidsYes
nextBillingAtYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already establish readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it doesn't say whether the update is partial or full-replacement, what happens on unknown UUIDs, whether the operation is idempotent, or what permission level is needed.

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

Conciseness4/5

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

A single front-loaded clause with no filler or redundancy. It is efficient, though its brevity borders on under-specification rather than tight conciseness.

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

Completeness2/5

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

For a mutation tool that reschedules billing across a set of nodes, the description omits essential context: what field is being changed, whether it is a bulk operation, side effects, and error behavior. Annotations cover safety but not operational semantics, and there is no output schema to fill the gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining 'uuids' and 'nextBillingAt'. It mentions neither, nor does it explain the array semantics (bulk update) or the date-time format expectations. Only the self-explanatory parameter names provide any signal.

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+resource ('Update ... billing nodes'), so an agent knows this mutates billing node records. It does not differentiate itself from siblings like billing_node_create or billing_node_delete, but the tool name and the verb+resource combination make the purpose legible.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as billing_node_create, billing_node_delete, or billing_nodes_list. The agent must infer usage entirely from the name.

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

billing_provider_createC

Create infra provider

NameRequiredDescriptionDefault
nameYes
loginUrlNo
faviconLinkNo

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, covering the basic safety profile. The description adds no behavioral context beyond that: no auth requirements, no uniqueness/duplicate-name behavior, no statement about what is created or returned.

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?

Three words is not conciseness but under-specification; the single fragment is front-loaded but earns no informational value beyond the tool name.

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

Completeness2/5

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

For a mutation tool with no output schema, zero schema coverage, and three undocumented parameters, the description is far too thin. It does not tell the agent what is required (the 'name' field) or what constitutes a valid provider.

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

Parameters1/5

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

Schema description coverage is 0% and the description mentions no parameters. The three fields (name with min/max length, loginUrl, faviconLink) are entirely undocumented, leaving the agent to guess formats and constraints.

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?

States a verb and a resource ('Create infra provider'), so the operation type is clear. However, the resource is named 'infra provider' while the tool and siblings are named 'billing_provider_*' and a separate 'billing_node_create' exists, so the agent cannot be confident whether this creates a billing provider or a node-level infra entity.

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

Usage Guidelines2/5

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

No when-to-use guidance at all. Nothing distinguishes this from billing_node_create or tells the agent what preconditions (e.g., existing provider listing via billing_providers_list) must hold before creating.

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

billing_provider_deleteC
Destructive

Delete infra provider by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so irreversibility is largely covered by structured data. The description adds nothing beyond the identifier — it does not say whether the delete is permanent, what happens to billing nodes/history referencing the provider, or whether the call fails if dependencies 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 front-loaded sentence with no filler. It is terse to the point of under-specification, but nothing in it is wasted.

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 mutation with no output schema and no annotations beyond the destructive flag, so the description should carry the burden of dependency/irreversibility context. It delivers none, leaving an agent unable to predict side effects on related billing resources.

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

Parameters3/5

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

With only one parameter and 0% schema description coverage, the phrase 'by uuid' is the sole signal, and it does tell the agent the identifier is a UUID rather than a name or numeric id. Beyond that it adds no format, validation, or sourcing guidance, so it sits at the baseline.

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

Purpose4/5

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

States a specific verb (Delete) and resource (infra provider, identified by uuid), which is enough for an agent to distinguish it from the get/create/update/list siblings. It does not explicitly name those alternatives, and the term 'infra provider' sits slightly at odds with the 'billing_provider_*' namespace, but the intent is unambiguous.

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

Usage Guidelines2/5

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

No statement of when to use this versus billing_provider_update (e.g., deactivate vs. remove) or billing_providers_list, and no prerequisites such as whether dependent billing nodes must be cleared first. Usage is only implied by the verb.

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

billing_provider_getC
Read-only

Get infra provider by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond those annotations: it does not mention auth requirements, error behavior, or what the call returns. No annotation contradiction.

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 terse sentence with zero wasted words and the key info front-loaded. It is appropriately sized for a one-parameter lookup, though it could be slightly more structured.

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, the description plus annotations cover the essential action and safety. However, with no output schema it does not say what is returned or how not-found errors behave, leaving some 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?

Schema description coverage is 0%, so the description must compensate, and it only names 'uuid' as the lookup key. That is a marginal semantic addition over the schema, which already declares a required uuid string with uuid format.

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 (Get) and resource (infra provider) plus the lookup key (uuid), so the fundamental action is clear. It does not explicitly distinguish itself from the sibling billing_providers_list or billing_provider_create/update/delete, keeping it from a 5.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as billing_providers_list or billing_provider_create. No prerequisites or context conditions are stated.

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

billing_providers_listB
Read-only

Get all infra providers

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered by structured data. The description adds nothing beyond that: no note on whether results are paginated, how many providers are returned, or whether the list needs auth scoping.

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 four-word sentence with no padding and the scope word front-loaded after the verb. It is efficient, though arguably under-specified rather than genuinely concise.

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

Completeness3/5

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

For a no-argument read-only list tool with annotation coverage, the essentials are present. With no output schema, a hint about what the returned provider objects contain or how many to expect would round it out, but the gap is modest.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. The description's 'all' correctly signals there are no filter inputs.

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 clear verb ('Get') and resource ('providers') scoped to everything ('all'), which distinguishes it from the singular sibling billing_provider_get. Minor friction: the description calls them 'infra providers' while the tool and siblings use 'billing provider', so terminology does not perfectly align.

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 'all' implies this is the unfiltered list tool to use when no specific provider is targeted, which is enough to route the agent away from billing_provider_get. However, no alternative is named explicitly and there are no stated conditions or exclusions.

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

billing_provider_updateD

Update infra provider

NameRequiredDescriptionDefault
nameNo
uuidYes
loginUrlNo
faviconLinkNo

TDQS

D1.8/5.0
Behavior2/5

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

Annotations declare a non-destructive write, and the description adds nothing on top: it does not say whether this is a full replace or partial update, whether the uuid target must already exist, what permissions are required, or what happens to omitted fields. For a mutation tool the description carries meaningful unanswered behavioral questions.

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?

It is short, but this is under-specification rather than conciseness: a three-word fragment with no front-loaded distinction between required and optional fields or return behavior. Brevity here costs information rather than saving it.

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?

With four undocumented parameters, no output schema, and no description-level behavioral detail, an agent cannot confidently construct a call. Everything an agent needs beyond the bare field names is absent.

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

Parameters1/5

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

Schema description coverage is 0% across four parameters (name, uuid, loginUrl, faviconLink), and the description mentions none of them. No format, constraint, or validation context is supplied beyond what the raw schema types already show.

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

Purpose2/5

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

"Update infra provider" restates the tool name with only the thinnest verb+resource framing and never says what a provider entity actually holds or which fields become mutable. Against siblings like billing_provider_create/delete/get, it gives no distinguishing detail beyond the operation word.

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 when-to-use guidance, no prerequisites, and no mention of alternative siblings such as billing_provider_create or billing_provider_delete. The agent is left to infer applicability entirely from the name.

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

config_profiles_createC

Create config profile

NameRequiredDescriptionDefault
nameYes
configYes

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already state readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write. The description adds nothing beyond that: no note on whether name collisions fail, whether tags/inbounds must be set separately, or what the created profile returns. With annotations present the bar is lower, but the description contributes essentially zero 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.

Conciseness3/5

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

Four words with no padding and the verb is front-loaded, which is structurally fine. But at this length the brevity reads as under-specification rather than efficiency, especially given the free-form config payload.

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

Completeness2/5

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

The tool has a nested, unconstrained object parameter, no output schema, and no annotations beyond the safety hints. The description supplies none of the missing guidance an agent needs to construct a valid 'config' payload or understand the result, so it is incomplete for the tool's complexity.

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

Parameters1/5

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

Schema description coverage is 0% and the description says nothing about either parameter. Critically, 'config' is a nested free-form object with empty properties and additionalProperties allowed, meaning the agent has no idea what keys or structure to supply. This is the exact case where the description must compensate, and it does not.

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

Purpose3/5

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

The description names a specific verb and resource ("Create config profile"), so the basic operation is unambiguous. However, it offers no differentiation from close siblings like config_profiles_update or config_profiles_get, and nothing about what a 'config profile' contains. Clear but minimally viable.

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 when-to-use guidance, no mention of prerequisites (e.g. that name must be unique, that a profile typically needs inbounds/tags afterwards), and no routing to or away from siblings. The agent is given no context for selecting this tool over alternatives.

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

config_profiles_deleteC
Destructive

Delete config profile

NameRequiredDescriptionDefault
uuidYesUUID of the config profile

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description only restates 'Delete' and adds nothing beyond the annotations – no note on permanence, cascading effects on nodes using the profile, or failure conditions.

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

Conciseness3/5

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

Extremely short and waste-free, but the brevity is under-specification rather than disciplined conciseness – it is a two-word restatement of the name.

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

Completeness2/5

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

For a destructive mutation tool with no output schema, the description omits what an agent needs: whether deletion is irreversible, whether profiles attached to nodes can be deleted, and what a successful or failed call returns.

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 a single well-documented uuid parameter ('UUID of the config profile'), so the schema carries the semantic load. The description adds no format, lookup, or resolution detail beyond it, which is the baseline-3 case.

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?

Names a specific verb and resource ('Delete config profile'), so an agent can distinguish it from siblings like config_profiles_update or config_profiles_create. However, it offers no differentiation among the many other delete tools in the ecosystem (squads_delete, hosts_delete, etc.) beyond the resource 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 on when to use this versus alternatives, and no prerequisites stated. It does not say whether the profile must be detached from nodes first, nor what happens if the UUID is in use.

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

config_profiles_getB
Read-only

Get config profile by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context such as required permissions, error behavior, or what the returned profile contains.

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 is appropriately sized for a simple get-by-identifier operation.

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

Completeness3/5

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

For a simple read operation, the description identifies the resource and lookup key, which is enough to invoke the tool correctly. However, it provides no output shape and no routing guidance among the several config_profiles_get* siblings, leaving some 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 0%, so the one uuid parameter has no schema-level documentation. The description says 'by uuid', which identifies the parameter's role but adds no constraints or format details beyond the type and format already in the schema.

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

Purpose4/5

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

The description states a specific verb (Get) and resource (config profile) and the lookup key (uuid). It does not explicitly distinguish itself from sibling tools such as config_profiles_get_computed_config or config_profiles_get_inbounds, so it is clear but lacks sibling 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 on when to use this tool versus alternatives like config_profiles_list or config_profiles_get_computed_config. The description only restates the basic operation, leaving usage context implied at best.

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

config_profiles_get_computed_configB
Read-only

Get computed config profile by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one behavioral nuance—that the config profile is 'computed' rather than raw—but omits auth, caching, computation timing, or reproducibility 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?

Extremely concise and front-loaded: one imperative clause with no filler. For a single-parameter lookup, nothing is wasted, though the brevity contributes to gaps captured in other dimensions.

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 simple read-only lookup: annotations cover safety, the schema covers the single required field, and no output schema means return values need not be described. Still, the key sibling distinction (computed vs raw config profile) is absent, so completeness is only minimal.

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

Parameters2/5

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

Schema description coverage is 0%: the only parameter is a required uuid string with no schema description. The description merely restates 'by uuid' and does not explain the UUID's source, expected format beyond the schema's format, or its role in selecting the profile.

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 ('Get'), a specific resource ('computed config profile'), and the required key ('by uuid'), so the core action is clear. However, it does not differentiate this computed-profile variant from sibling config_profiles_get, so an agent cannot infer the distinction from the description alone.

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?

Provides no when-to-use guidance, no exclusions, and does not name config_profiles_get or config_profiles_get_inbounds as alternatives. Usage is only implied by the name and UUID parameter, leaving the agent to infer the intended scenario.

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

config_profiles_get_inboundsC
Read-only

Get inbounds by profile uuid

NameRequiredDescriptionDefault
uuidYesUUID of the config profile

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing further — no note on whether the profile must exist, whether the result is paginated, or what an inbound record 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?

A single front-loaded sentence with zero filler. It is tight, though the brevity edges toward under-specification rather than optimal economy.

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

Completeness3/5

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

For a one-parameter read tool with no output schema, the definition is minimally viable but thin: it doesn't describe the returned inbound structure or ordering, and there are many sibling get/list tools it could have been disambiguated from.

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%: the single uuid parameter is fully documented in the schema as "UUID of the config profile". The description only restates that the uuid selects a profile, adding no syntax, format, or edge-case detail beyond the schema. Baseline 3 applies 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.

Purpose4/5

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

The description pairs a specific verb ("Get") with a specific resource ("inbounds") and a scope qualifier ("by profile uuid"), so the operation is unambiguous. However, it never names the closely related siblings config_profiles_get or inbounds_list, so an agent must infer the division of labor from names alone.

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 over inbounds_list (list all inbounds) or config_profiles_get (get the profile itself). The scoping phrase implies a use case but no alternative or exclusion is stated.

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

config_profiles_listA
Read-only

List config profiles with their inbounds and nodes. The xray config itself is left out: use config_profiles_get for one profile, or full=true.

NameRequiredDescriptionDefault
fullNoReturn the raw panel response, including config, rawInbound

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful response-shape context: the xray config is deliberately omitted from the default payload, which tells the agent what it will and won't receive. It stops short of describing pagination, ordering, or payload size for what is presumably a large list.

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, zero waste. The inclusion/exclusion scoping is front-loaded and the routing information follows immediately, so the most decision-relevant facts come first.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing the return shape, and it does disclose the key contents (inbounds and nodes) and the key exclusion (xray config). It omits ordering, pagination, and volume expectations for a list endpoint, which is a minor but real gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter's schema text already explains that full returns the raw panel response including config and rawInbound. The description's 'or full=true' merely re-frames that same fact as a use case, adding little semantic detail beyond the schema. Baseline 3 applies 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?

States a specific verb and resource (list config profiles) and immediately scopes what is included (inbounds and nodes) and what is not (the xray config). It differentiates itself from the sibling config_profiles_get and from its own full=true mode, so an agent can tell it apart without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the alternative for a single profile ('use config_profiles_get for one profile') and the alternative mode for getting the omitted xray config ('or full=true'). The condition that selects each alternative is stated, leaving nothing to inference.

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

config_profiles_reorderC

Reorder config profiles

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is partially covered. Beyond that, the description says nothing about whether the supplied list must contain all profiles or only the moved ones, whether positions are absolute or relative, or whether the operation is idempotent — all material 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.

Conciseness3/5

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

At three words it is maximally front-loaded and wastes nothing, but this is under-specification rather than true conciseness — the brevity removes information the agent needs rather than trimming redundant text.

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

Completeness2/5

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

For a mutation tool with an undocumented nested-array payload, no output schema, and annotations covering only read/write safety, the description should at minimum explain the reorder semantics (full ordering vs. partial moves). It is not complete enough to call the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0% for the single, non-trivial "items" array parameter. The description never mentions the uuid/viewPosition payload, its ordering semantics, or the maximum position range, so it fails to compensate for the schema's silence on meaning.

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

Purpose4/5

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

The description pairs a specific verb ("Reorder") with a specific resource ("config profiles"), so an agent knows the operation type without opening the schema. It does not differentiate itself from config_profiles_update or explain that this affects display/ordering position, so it falls short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus config_profiles_update or the other *_reorder siblings. The name implies a reordering intent, but the description offers no prerequisites, no conditions, and no exclusions.

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

config_profiles_set_tagsC

Set tags of Config Profile

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say whether existing tags are overwritten, whether the call is idempotent, or what happens to the profile's other settings.

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 short sentence with the verb and resource front-loaded and no filler. It is efficient, though its brevity is partly under-specification rather than genuine crispness.

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 two required parameters, 0% schema description coverage, and no output schema, this description is far too thin. Replacement-vs-merge behavior, required uuid, and tag constraints all go unexplained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden and fails to compensate. It mentions 'tags' only implicitly via the word 'tags' and never mentions the required 'uuid' parameter, the tag character pattern, or the 10-item cap that the schema enforces.

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

Purpose3/5

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

The description names a verb ('Set') and resource ('Config Profile'), so the domain is clear, but it never clarifies whether 'set' replaces the existing tag list or merges into it, nor does it distinguish this from sibling config_profiles_update. It is adequate but leaves a real ambiguity an agent would care about.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of the natural alternative (config_profiles_update or config_profiles_tags_list), and no prerequisites such as needing the profile uuid. The agent must infer usage purely 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.

config_profiles_tags_listB
Read-only

Get tags of Config Profiles

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that—it doesn't say whether it returns all distinct tags across profiles, pagination, or ordering—so it is adequate but thin against an already-covered behavior surface.

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

Conciseness4/5

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

A single front-loaded clause with no filler or redundancy. It is arguably too terse rather than verbose, but every word earns its place and the verb-resource ordering is correct.

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 zero-parameter, read-only list tool with no output schema, the description is minimally sufficient to identify the call. It leaves open whether tags are global or per-profile and what the response contains, which is acceptable but not complete.

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

Parameters4/5

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

The schema declares zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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 ('Get') and resource ('tags of Config Profiles'), so an agent knows it returns tag data for the config-profile domain. It does not distinguish itself from sibling list/get tools such as config_profiles_list, config_profiles_get, or config_profiles_set_tags, which is the main gap.

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

Usage Guidelines2/5

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

No when-to-use, no when-not-to-use, and no mention of alternatives such as config_profiles_get or config_profiles_set_tags. The agent must infer the context entirely from the name.

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

config_profiles_updateA

Update a config profile: name and/or the full xray config. Nodes that use the profile restart xray to apply it.

NameRequiredDescriptionDefault
nameNo
uuidYes
configNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare it is a non-read, non-destructive write. The description adds real behavioral context beyond that: the config is replaced in full (not merged) and 'Nodes that use the profile restart xray to apply it,' a meaningful side effect. It still omits permission requirements and whether partial config edits are possible.

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, zero filler, with the action and its scope front-loaded before the side-effect note.

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 3-parameter mutation tool with a nested object, no output schema, and 0% schema coverage, the description covers purpose, replacement semantics, and the node-restart consequence. It is nearly sufficient, missing only per-parameter detail (especially the required uuid) and any permission caveats.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It clarifies that the 'config' argument is the 'full' xray config (replacement semantics), which adds value beyond the bare object schema, but leaves the required 'uuid' and the 'name' constraints entirely to the schema.

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

Purpose4/5

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

States a specific verb and resource ('Update a config profile') and enumerates the mutable fields (name and/or the full xray config), which implicitly distinguishes it from tag-oriented siblings like config_profiles_set_tags. It does not explicitly name any sibling, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies when it applies (changing a profile's name or config) but gives no explicit when-to-use/when-not-to-use guidance or alternative routing, e.g. pointing tag changes to config_profiles_set_tags. Usage 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.

connections_by_node_requestA
Read-only

Request the active connections on a node. Starts a job on the node(s) and returns a jobId — fetch the outcome with connections_by_node_result.

NameRequiredDescriptionDefault
nodeUuidYesNode UUID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, and the description adds the non-obvious async behavior: it starts a job and returns a jobId rather than the data inline. This is meaningful context beyond the annotations. It doesn't detail job lifetime or polling, but the key behavioral trait is disclosed.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the purpose followed immediately by the action and the follow-up tool. No wasted words.

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 async tool with no output schema, the definition covers purpose, the job-based mechanism, and where the result lives. The plural 'node(s)' phrasing is a small ambiguity, but nothing an agent needs to call it correctly 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?

With a single parameter at 100% schema coverage, the schema already documents nodeUuid, so the description adds nothing parameter-specific. The only note is a minor mismatch: the description says 'node(s)' plural while the schema accepts a single nodeUuid. 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?

States a specific verb and resource ('Request the active connections on a node') and explicitly distinguishes itself from the companion tool connections_by_node_result. An agent knows exactly what this tool does and how it differs from the result/other connection siblings.

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

Usage Guidelines4/5

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

Describes the async job pattern and names the alternative for retrieving the outcome ('fetch the outcome with connections_by_node_result'), which is strong next-step routing. It doesn't clarify when to prefer this over connections_by_user_request, but the workflow guidance is clear.

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

connections_by_node_resultC
Read-only

Get Connections for Node by Job ID

NameRequiredDescriptionDefault
jobIdYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not explain that the jobId originates from a separate request call, whether results may still be pending, or how the result set behaves.

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

Conciseness4/5

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

A single front-loaded phrase with no wasted words. Its terseness is efficient, though it borders on under-specification given the tool's role in a request/result pair.

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

Completeness3/5

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

For a one-parameter read tool with annotations covering safety and no output schema, the description is minimally adequate. However, it omits the crucial async context (that the jobId comes from connections_by_node_request), which is exactly the kind of information a 'result' tool needs.

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 0%, so the description must carry the parameter burden. It clarifies that jobId is a job identifier used as the lookup key, which is useful, but adds nothing about format, source, or valid ranges beyond the parameter name.

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 (Get) plus resource (Connections for Node) and the lookup key (by Job ID), so an agent knows it retrieves node connection data keyed on a job. It does not distinguish itself from the sibling connections_by_node_request, leaving the request/result relationship to inference, so it falls short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance and no mention of alternatives such as connections_by_node_request, which is presumably what produces the jobId. The async pairing is only weakly implied by the word 'result' in the name, not stated in the description.

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

connections_by_user_requestA
Read-only

Request the active connections (IPs) of a user. Starts a job on the node(s) and returns a jobId — fetch the outcome with connections_by_user_result.

NameRequiredDescriptionDefault
userIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare a safe read (readOnlyHint=true, destructiveHint=false), and the description adds the important non-obvious trait that the operation is asynchronous — a job is started on the node(s) and a jobId is returned. That async contract is exactly the kind of behavior annotations cannot express and is the main reason an agent would otherwise misuse the tool. It does not mention latency, per-node fan-out behavior, or failure modes.

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, zero filler, and the core purpose is front-loaded ahead of the follow-up instruction. Every clause earns its place by either defining the operation or directing the next call.

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 async read tool with no output schema, the description supplies the essentials: what is returned conceptually (active connection IPs), that a jobId comes back, and where to fetch results. It is slightly thin on the multi-node aspect ('node(s)') and any timing expectations, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 0% for the single userId parameter, so the description must compensate. It only implies the identifier via 'of a user' and adds no format, type, or resolution guidance (e.g. numeric ID vs uuid) beyond what the schema already declares. For a trivial single-identifier param this is acceptable but not additive.

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 and resource — 'Request the active connections (IPs) of a user' — which cleanly separates it from the node-scoped sibling connections_by_node_request. It also names its result companion, so an agent can place it in the workflow without opening schemas. It stops short of 5 only because the distinction from the node variant is implied by 'of a user' rather than stated.

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?

Gives clear workflow context: this call starts a job and the outcome must be retrieved via connections_by_user_result. That is actionable routing guidance. It does not, however, state when to prefer this over connections_by_node_request or connections_geocheck_request, so there is no explicit alternative-selection rule.

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

connections_by_user_resultC
Read-only

Get Connections for User by Job ID

NameRequiredDescriptionDefault
jobIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not explain that this consumes a job ID produced by connections_by_user_request, whether the job must be complete, or how pending/failed jobs are handled.

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 short sentence with no filler, front-loading the retrieval key. It is efficiently stated, though the brevity comes at the cost of the missing context noted elsewhere.

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 read tool with one undocumented parameter and no output schema, the description is very thin. It omits the essential async-job relationship to connections_by_user_request and connections_by_node_result, which is the key context an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 0% for the single jobId parameter, so the description must carry weight. "by Job ID" does at least connect the parameter to the job concept, but adds no format, source, or validity detail beyond what the property name already implies.

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?

"Get Connections for User by Job ID" names a verb (get) and a resource (connections for a user) and adds the lookup key (job ID). However, it largely restates the tool name and does not distinguish itself from its close siblings connections_by_user_request and connections_by_node_result, so an agent cannot tell this is the result/retrieval half of an async job pattern.

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 statement of when to use this tool versus connections_by_user_request (the request that presumably produces the job ID) or connections_by_node_result. The pairing is only inferable from the name, not the description.

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

connections_dropC
Destructive

Drop Connections for Users or IPs

NameRequiredDescriptionDefault
dropByYes
targetNodesYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, so the safety profile is partially covered by structured data. But for a destructive operation that terminates live sessions, the description says nothing about impact (immediate disconnect of active users/IPs), reversibility, or scope of effect, leaving 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.

Conciseness3/5

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

It is short and front-loaded with the action, so there is no wasted text. However, this brevity stems from under-specification rather than disciplined concision, so it does not earn a high score.

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 a two-parameter, destructive, nested-schema tool with no output schema, the description is far too thin. It omits when to use it, what the parameters mean, and what the destructive action actually does, leaving the agent to infer nearly everything from the schema alone.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions only 'Users or IPs' generically, with no explanation of the dropBy / targetNodes oneOf branches. The nested schema consts (allNodes, specificNodes, userIds, ipAddresses) carry most of the meaning, and the description adds nothing beyond the users/IPs mention.

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

Purpose3/5

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

The phrase 'Drop Connections for Users or IPs' gives a verb (drop) and resource (connections) and hints at the two targeting modes (users/IPs). However, it reads as a title fragment rather than a stated purpose, and it does not differentiate itself from the read-side siblings like connections_by_user_result or connections_by_node_result beyond the word 'drop'.

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 sibling connection-lookup tools, no prerequisites, and no warning about the destructive action. The only usage cue is the imperative verb 'Drop', which an agent must interpret on its own.

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

connections_geocheck_requestA
Read-only

Check how a node's exit IP is geolocated. Starts a job on the node(s) and returns a jobId — fetch the outcome with connections_geocheck_result.

NameRequiredDescriptionDefault
ipNoCheck from this IP address
nodeUuidYesNode UUID
interfaceNoCheck from this network interface

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds important non-obvious behavior: it starts an async job on the node(s) and returns a jobId rather than the final result, which the agent must know before calling.

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

Conciseness5/5

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

Two tightly written sentences with no waste. The purpose is front-loaded and the async follow-up instruction comes second, matching how an agent reads and acts on it.

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

Completeness5/5

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

For a three-parameter async job-starter with no output schema, the description covers what an agent needs: what is checked, that a job starts, that a jobId is returned, and which tool retrieves the result. No critical calling information is missing.

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

Parameters3/5

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

Schema description coverage is 100% (nodeUuid, ip, interface each have descriptions), so the schema carries the parameter semantics. The description does not add meaning beyond what the schema already provides, making the baseline 3 appropriate.

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

Purpose5/5

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

States a specific verb and resource: checking how a node's exit IP is geolocated. It cleanly distinguishes itself from the sibling connections_geocheck_result and from other connections tools by focusing on geolocation of an exit IP rather than listing connections.

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 tells the agent to call this tool to start the geolocation check and explicitly routes it to connections_geocheck_result to fetch the outcome. It lacks an explicit when-not statement or comparison to other connections_* job starters, but the async workflow condition is clear.

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

connections_geocheck_resultC
Read-only

Get Geocheck for Node by Job ID

NameRequiredDescriptionDefault
jobIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that the description adds nothing: for a job-result tool the critical behaviors are whether the job may still be pending, whether results expire, or whether the call blocks, and none of these are disclosed.

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 short, front-loaded sentence with no filler. It is efficient, though the brevity is partly under-specification rather than tight editing.

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?

No output schema, no annotations beyond readOnly, and no parameter documentation in the schema. For a tool whose entire value is retrieving the outcome of a prior request, the definition omits the request/result relationship and the state of the returned result, leaving the agent to guess at the workflow.

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

Parameters3/5

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

Schema description coverage is 0% for the single jobId parameter, so the schema gives no type/format/source context. The description does add real meaning by tying jobId to a Job (implying it comes from the request call), but it stops short of naming the source tool or the ID format.

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?

States a verb ('Get') and a resource ('Geocheck for Node') qualified by 'Job ID', which is more than a tautology. But 'Geocheck' is unexplained jargon and the description never signals that this is the result-fetching half of an async pair with connections_geocheck_request, so an agent cannot cleanly distinguish it from that sibling.

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

Usage Guidelines2/5

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

No when-to-use guidance at all. There is no mention of the connections_geocheck_request tool that presumably creates the job, nor of when the result is ready, so the agent must infer the two-step flow entirely from naming conventions.

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

external_squads_add_all_usersB
Destructive

Add EVERY user to an external squad

NameRequiredDescriptionDefault
uuidYesUUID of the external squad

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is carried by structured data. The description adds only the "EVERY user" scale emphasis and says nothing about whether existing members are preserved, whether the operation is undoable, or what volume of users it touches — leaving the destructive mass-mutation semantics largely unelaborated.

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 short sentence with no filler, and the scope keyword is front-loaded. The capitalized "EVERY" is mildly stylized but functional, and nothing is wasted.

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 annotations and no output schema, the definition is minimally sufficient, but for a destructive all-users bulk operation it omits key context such as reversibility and the effect on current squad membership. An agent can call it, but cannot fully predict the blast radius.

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 single uuid parameter is fully documented in the schema as the external squad identifier. The description adds no information about the parameter (e.g. that it targets the squad being populated), so this is the baseline 3 where the schema does all the work.

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

Purpose4/5

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

The description states a specific verb ("Add") and resource ("an external squad") plus the scope ("EVERY user"), so an agent immediately knows this is a mass-membership mutation rather than a per-user add. It does not name the counterpart external_squads_remove_all_users, so it falls short of full sibling differentiation, but the purpose 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 when-to-use guidance, no statement of prerequisites, and no mention of the alternative (adding specific users, or the remove_all counterpart). The agent gets no help deciding between this global operation and a targeted membership change.

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

external_squads_createC

Create external squad

NameRequiredDescriptionDefault
nameYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations only declare that this is a non-read-only, non-destructive write. The description adds nothing beyond that: no mention of permissions, whether names must be unique, whether the new squad is empty, or what a successful call returns. For a mutation tool with no output schema, that is a 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.

Conciseness3/5

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

At three words it is maximally front-loaded and wastes nothing, but the terseness is under-specification rather than efficiency — there is no content to trim because almost nothing was said.

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?

A write tool with an undocumented required parameter, no output schema, and ambiguous positioning against the `squads_*` and other `external_squads_*` siblings. The description does not supply enough context for an agent to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the single `name` parameter is documented only by its regex and length bounds. The description does not mention the parameter at all, so any naming constraints or semantics beyond the pattern are left to the agent to reverse-engineer.

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

Purpose3/5

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

The description gives a specific verb ('Create') and resource ('external squad'), so the basic action is unambiguous. However, it does not explain what an 'external squad' is or how it differs from the sibling `squads_create`, leaving the agent unable to tell the two resources apart beyond the name.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus `squads_create` or any other sibling, nor any stated prerequisites (e.g., required scopes or that the squad is for external users). The agent must infer all selection criteria.

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

external_squads_deleteC
Destructive

Delete external squad

NameRequiredDescriptionDefault
uuidYesUUID of the external squad

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the bare word 'Delete' restates what structured data already provides. The description adds no context about irreversibility, whether members/assignments are orphaned on delete, or required permissions.

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

Conciseness3/5

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

A single short phrase that is trivially front-loaded and wastes no words. However, its brevity here reflects under-specification rather than efficient communication of needed 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 delete with a complete schema and annotations covering the safety profile, the minimum is met and no output schema needs explaining. It still omits any caveat about permanence or side effects, which a destructive operation would benefit from.

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 single uuid parameter is fully documented in the schema, so the schema does the heavy lifting. The description adds no syntax, format, or semantic detail beyond it, making 3 the correct baseline.

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

Purpose4/5

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

Clear specific verb+resource: 'Delete external squad'. The 'external' qualifier implicitly separates it from the sibling squads_delete, but the description never states that distinction explicitly, so the agent must infer it from the name alone.

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

Usage Guidelines2/5

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

No when-to-use, prerequisites, or alternative guidance. With both squads_delete and external_squads_delete present, the description offers nothing to route the agent between them or to warn that deletion is intended for externally-managed squads.

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

external_squads_getC
Read-only

Get external squad by uuid

NameRequiredDescriptionDefault
uuidYesUUID of the external squad

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on error behavior for unknown UUIDs, permissions, or what an 'external squad' is.

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 short sentence with no filler, and the resource is front-loaded. It is arguably too terse rather than bloated, which the other dimensions penalize.

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

Completeness3/5

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

For a one-parameter read by UUID the definition is minimally sufficient, and the annotations cover safety. However, with no output schema there is no indication of what a returned squad contains, so the description could do more for a fetch 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% and the single uuid parameter is fully documented with format=uuid, so the schema carries the weight. The description only restates that the lookup is by uuid, adding no new meaning; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (get) and resource (external squad) keyed by uuid, and the 'external_' prefix distinguishes it from the sibling squads_get. It is clear but does not itself explain how an external squad differs from a regular squad.

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 versus squads_get, external_squads_list, or the other external_squad endpoints. The reader must infer that it is the single-item fetch counterpart to external_squads_list.

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

external_squads_listB
Read-only

Get all external squads

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, which fully covers the behavioral risk profile of a zero-parameter listing tool. The description adds nothing beyond that (no scope, ordering, or pagination context), but also contradicts nothing, so it sits at the minimum-viable level.

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 short sentence with zero filler, front-loaded on the verb and resource. It is terse but not padded, though it borders on under-specification rather than true efficiency.

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 trivial zero-param list tool this is nearly adequate, but with no output schema the description does not indicate the shape of the returned collection (e.g. an array of external squads with tags), and it never clarifies its relationship to the internal squads toolset.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case: there is nothing for the description to disambiguate, and the empty schema is self-explanatory.

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 clear verb ("Get") and resource ("external squads"), so an agent knows exactly what is returned. However, it offers no differentiation from closely named siblings such as squads_list (internal squads) or external_squads_get, leaving the distinction to the tool name alone.

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 statement of when to use this tool versus external_squads_get, squads_list, or external_squads_tags_list. No prerequisites, exclusions, or alternatives are mentioned, so usage must be inferred entirely from the name.

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

external_squads_remove_all_usersB
Destructive

Remove EVERY user from an external squad

NameRequiredDescriptionDefault
uuidYesUUID of the external squad

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is carried by structured data. The description's 'EVERY' adds a genuine behavioral nuance (full sweep vs. subset), but it says nothing about reversibility, whether the squad itself survives, or authorization needs.

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 where the scope qualifier 'EVERY' arrives before the object, with zero filler or redundancy. Nothing could be trimmed without losing the one distinction that matters.

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 whose annotations already flag destructiveness and which returns no structured output, the description is minimally sufficient. However, a bulk destructive operation warrants at least a note on irreversibility or post-condition (e.g., squad remains but is emptied), which is absent.

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?

There is a single required parameter with 100% schema description coverage ('UUID of the external squad'), so the schema already does the work. The description adds no format, sourcing, or lookup guidance beyond what the schema states, which matches the baseline 3 for a fully documented 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 (remove), resource (external squad), and scope ('EVERY user'), which cleanly separates it from subset-removal siblings like squads_remove_many_users. It does not explicitly name or contrast itself with the near-identical squads_remove_all_users or external_squads_add_all_users, so an agent must infer the difference from the resource noun alone.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no alternatives are offered. There is no guidance on when to prefer external_squads_add_all_users or a subset-removal tool, nor any warning about irreversibility before an all-users purge.

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

external_squads_reorderC

Reorder external squads

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations cover only readOnlyHint=false and destructiveHint=false, so the description still owes the agent an explanation of what reordering actually does. It does not say whether the 'items' list must be complete, whether omitted squads keep their position, or how 'viewPosition' is interpreted — all essential for a mutation.

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

Conciseness3/5

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

Three words, front-loaded and waste-free, but the brevity is under-specification rather than economy — there is no second sentence to add value because no value was added.

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?

A mutation tool with no output schema, no meaningful annotations beyond the safety hints, and a 0%-documented nested parameter cannot be invoked correctly from this description alone; the agent knows neither the payload contract nor the side effects.

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

Parameters1/5

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

Schema description coverage is 0% for a nested array parameter whose element shape (uuid + viewPosition pair) carries the entire semantics of the operation. The description never mentions the items array, the required fields, or whether the list is a full replacement, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

States a verb and resource ('Reorder external squads'), so the basic intent is legible. However, it offers no scope detail and no differentiation from the very similar sibling squads_reorder (internal squads), leaving the agent to infer the distinction from the name alone.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as squads_reorder or the other *_reorder siblings. The agent must guess the intended context entirely.

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

external_squads_set_tagsC

Set tags of External Squad

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, covering the basic safety profile. The description adds no behavioral context, such as whether existing tags are overwritten, what permissions are required, or what the return behavior is, so it provides little beyond the annotations.

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

Conciseness2/5

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

The single sentence is front-loaded with the verb and contains no wasted words, but it is under-specified rather than appropriately concise. For a mutation tool, this brevity leaves critical usage and parameter details unstated.

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 a 2-parameter mutation tool with no output schema and minimal annotations, the description should cover usage guidance and parameter meaning. It covers neither, and the annotations only address safety, so the definition is incomplete for correct agent invocation.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate but does not. It mentions 'tags' generically and never addresses uuid, nor does it explain the tags pattern, maxItems, or maxLength constraints, leaving both required parameters semantically undocumented.

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

Purpose4/5

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

The description 'Set tags of External Squad' states a specific verb and resource, making it distinguishable from sibling set_tags tools for other resources. However, it lacks scope details such as whether tags are replaced or appended, and it does not mention the uuid parameter, so it falls short of the highest clarity.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus alternatives like external_squads_update or external_squads_get. The description provides no context, prerequisites, or exclusions, leaving usage entirely to inference.

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

external_squads_tags_listB
Read-only

Get tags of External Squads

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing further: it doesn't say whether this returns the global tag vocabulary across all external squads or tags for a specific squad, nor anything about ordering or pagination.

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 four-word sentence with no filler and the resource front-loaded. It is efficient, though borderline under-specified rather than deliberately compact.

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

Completeness3/5

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

With no output schema, no parameters, and a trivial read operation, the description is close to sufficient, but it leaves the scope of the returned tag set genuinely ambiguous for an agent that must decide how to use the result.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter knowledge is missing that the description could supply.

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 ('Get') and resource ('tags of External Squads'), which is enough to distinguish it from the many sibling tag-list tools (squads_tags_list, nodes_tags_list, hosts_tags_list). It stops short of explaining what the tag collection actually represents, but the resource is unambiguous.

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

Usage Guidelines2/5

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

The description offers no when-to-use context, no prerequisites, and no reference to alternatives such as external_squads_set_tags or squads_tags_list. An agent must infer from the name alone that this is a read-only listing call.

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

external_squads_updateD

Update external squad

NameRequiredDescriptionDefault
nameNo
uuidYesUUID of the external squad
templatesNo
hwidSettingsNo
customRemarksNo
hostOverridesNo
subpageConfigUuidNo
responseHeadersAddNo
subscriptionSettingsNo
responseHeadersRemoveNo

TDQS

D1.8/5.0
Behavior2/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, which tells the agent it is a non-destructive mutation but nothing more. The description adds no behavior: it does not say whether this is a partial (PATCH) or full-replace update, whether omitted fields are cleared, or what permissions are required for a 10-parameter mutation.

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 single sentence is technically concise with no filler, but it is under-specified rather than economical — three words that carry no information beyond the tool name.

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?

A 10-parameter mutation with nested objects, 10% schema coverage, and no output schema requires a description to carry the load, and this one is empty. An agent has no basis to invoke the tool correctly beyond passing a UUID.

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

Parameters1/5

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

Schema description coverage is 10% (only uuid is documented), yet the description explains none of the nine other parameters: name, templates, hwidSettings, customRemarks, hostOverrides, subpageConfigUuid, responseHeadersAdd/Remove, and subscriptionSettings. With nested objects and no compensating prose, an agent cannot know what these fields mean or how to populate them.

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

Purpose2/5

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

"Update external squad" is essentially a restatement of the tool name external_squads_update. It names a verb and resource but provides no scope, no hint of what parts of the squad are updatable, and no differentiation from sibling squads_update or external_squads_set_tags.

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 external_squads_set_tags, external_squads_reorder, or the internal squads_update. No prerequisites or context are given, leaving the agent to guess from the name alone.

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

hosts_bulk_deleteC
Destructive

Delete hosts by UUIDs

NameRequiredDescriptionDefault
uuidsYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say whether deletion is permanent, whether it cascades to related records, or how partial failures are handled, which matters for a destructive 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.

Conciseness4/5

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

Three words, front-loaded with the verb and resource, no filler. The brevity is efficient, though it shades into under-specification rather than tight conciseness.

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

Completeness2/5

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

For a destructive bulk mutation with no output schema and 0% parameter documentation, the description should carry more: batch limits, irreversibility, partial-success behavior. Annotations cover only the destructive flag, so key operational detail is missing.

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

Parameters2/5

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

Schema description coverage is 0% and there is one parameter. The phrase 'by UUIDs' restates what the schema already encodes via property name 'uuids' and format 'uuid', adding no format, ordering, or limit semantics beyond structured data.

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 and resource ('Delete hosts') plus the identifier type ('by UUIDs'), so the agent knows exactly what operation is performed. It does not distinguish itself from siblings like hosts_delete (single) or hosts_bulk_disable, leaving the bulk-vs-single routing to be inferred from the name alone.

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 bulk delete versus the singular hosts_delete, nor any stated preconditions, limits on batch size, or confirmation requirements. The agent must infer usage entirely 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.

hosts_bulk_disableC

Disable hosts by UUIDs

NameRequiredDescriptionDefault
uuidsYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is partly covered, but the description adds nothing: it does not say whether disabling is reversible, whether it affects active connections, or how partially invalid UUID lists are handled in a 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.

Conciseness4/5

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

A single front-loaded sentence with no filler; it is appropriately sized for the operation, though there is essentially nothing beyond the minimum statement.

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 mutation with no output schema and a bulk scope, the description is adequate but thin — it omits reversibility, bulk failure semantics, and any permission requirement.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the param burden. 'By UUIDs' correctly identifies the input as a list of host identifiers, but adds no format, limit, or failure-mode detail beyond the schema's uuid array type.

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?

Names a specific verb ('Disable') and resource ('hosts'), plus the scoping mechanism ('by UUIDs'), so it is immediately distinguishable from hosts_bulk_enable and hosts_bulk_delete. It stops short of explicitly contrasting with those siblings.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of the single-host counterpart or the enable/disable pairing. The bulk nature is implied only by the name and the plural 'UUIDs'.

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

hosts_bulk_enableC

Enable hosts by UUIDs

NameRequiredDescriptionDefault
uuidsYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already establish this is a non-read, non-destructive write, so safety is partly covered. The description adds nothing beyond that: no idempotency, no permission requirements, no partial-failure behavior for a batch call, and no statement of what 'enabling' actually changes on a host.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler; the verb and scope come first. It is efficient, though its brevity is part of the problem rather than a virtue here.

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 bulk mutation tool with no output schema and no annotation coverage of operational details, the description should say something about batch semantics, failure handling, or resulting state. None of that 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?

There is only one parameter and schema description coverage is 0%, so the description must carry the load. 'By UUIDs' does identify the identifier type, but the schema already declares format: uuid, leaving no added detail on array limits, batching, or behavior for unknown IDs.

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 (enable), resource (hosts), operation mode (bulk) and identifier type (UUIDs), which is enough to distinguish it from hosts_bulk_disable or hosts_bulk_delete by name alone. It does not explicitly call out the sibling it complements, but the purpose 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 when-to-use guidance, no prerequisites, and no mention of the natural alternative (hosts_bulk_disable) or how this differs from single-host or non-bulk enabling. The intended usage is only inferable from the name.

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

hosts_bulk_updateB

Update many hosts at once: the given fields (same as hosts_update) are applied to every host in uuids

NameRequiredDescriptionDefault
sniNo
alpnNo
hostNo
pathNo
portNo
tagsNo
nodesNo
uuidsYes
mapperNo
remarkNo
addressNo
inboundNo
isHiddenNo
finalMaskNo
muxParamsNo
isDisabledNo
fingerprintNo
shuffleHostNo
keepSniBlankNo
mihomoX25519No
vlessRouteIdNo
securityLayerNo
sockoptParamsNo
internalSquadsNo
mihomoIpVersionNo
xhttpExtraParamsNo
serverDescriptionNo
pinnedPeerCertSha256No
verifyPeerCertByNameNo
xrayJsonTemplateUuidNo
overrideSniFromAddressNo
excludeFromSubscriptionTypesNoOptional. Subscription types from which the host will be excluded from.

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is covered. The description adds the genuine bulk trait that the fields are applied to every host in `uuids`, but says nothing about partial-failure handling, reversibility, or whether fields merge vs. replace — relevant for a bulk mutation with no output schema.

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

Conciseness4/5

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

A single tight sentence with the scope constraint front-loaded and zero filler. It is efficient, though arguably under-sized for a 32-parameter bulk mutation.

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 complex bulk mutation with 32 parameters, 3% schema coverage, no output schema, and no annotations describing outcomes, the description is too thin. It leaves the bulk semantics (per-host application, failure behavior, field semantics) largely to inference.

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

Parameters2/5

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

Schema description coverage is only 3% across 32 parameters, so the schema does essentially no work and the description carries the full burden. Pointing to hosts_update for the field semantics is a clever compensation, but it only names `uuids` and gives no syntax or detail for the 31 other parameters.

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

Purpose4/5

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

States a specific verb (Update), resource (hosts), and scope (many at once), and explicitly ties the field semantics to the sibling hosts_update. An agent can distinguish it from the singular hosts_update and from other bulk host operations like hosts_bulk_enable/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?

Usage is implied: 'many hosts at once' signals this is the bulk counterpart to hosts_update, and 'same as hosts_update' anchors which fields apply. However, it never states when to prefer this over hosts_update, nor any exclusions or preconditions for the bulk path.

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

hosts_cloneC

Clone host

NameRequiredDescriptionDefault
cloneFromUuidYes

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is partly known. However, the description adds no behavioral context beyond the annotations: it does not say what gets copied, whether the original host is modified, whether the clone is enabled, 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.

Conciseness2/5

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

At two words, it is extremely short and front-loaded, but it is under-specified rather than appropriately concise. It fails to include information an agent needs to select and invoke the tool confidently.

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/clone operation with one parameter and no output schema, the description is too sparse. It does not explain what a cloned host inherits or how the clone is named/configured, leaving major behavioral gaps that annotations do not fill.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but does not mention cloneFromUuid or explain its role. The parameter name is somewhat self-explanatory, but the description adds no meaning beyond the raw schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Clone host'. It clearly identifies the operation, but adds no detail about what cloning entails (copying configuration, tags, inbounds, etc.) and does not differentiate from siblings like hosts_create or hosts_update.

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 hosts_create. No prerequisites, exclusions, or contextual conditions are provided.

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

hosts_createC

Create a new host

NameRequiredDescriptionDefault
sniNo
alpnNo
hostNo
pathNo
portYes
tagsNo
nodesNo
mapperNo
remarkYes
addressYes
inboundYes
isHiddenNo
finalMaskNo
muxParamsNo
isDisabledNo
fingerprintNo
shuffleHostNo
keepSniBlankNo
mihomoX25519No
vlessRouteIdNo
securityLayerNoDEFAULT
sockoptParamsNo
internalSquadsNo
mihomoIpVersionNo
xhttpExtraParamsNo
serverDescriptionNo
pinnedPeerCertSha256No
verifyPeerCertByNameNo
xrayJsonTemplateUuidNo
overrideSniFromAddressNo
excludeFromSubscriptionTypesNoOptional. Subscription types from which the host will be excluded from.

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is known. The description adds zero behavioral context: no required permissions, no uniqueness constraints on address/port, no statement of side effects, and no indication of what happens to the created host afterward.

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?

Four words, single sentence, no waste — but the brevity reflects under-specification rather than information density. Like the 'Process' calibration case, it is too terse to be useful, so it does not earn its place.

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?

For a 31-parameter mutation with nested objects, no output schema, and undocumented required fields, this description is completely inadequate. An agent cannot determine required inputs, parameter meaning, or how the new host relates to hosts_list/hosts_get from it.

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

Parameters1/5

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

The tool has 31 parameters with only 3% schema description coverage and four required fields (inbound, remark, address, port), plus deeply nested mapper objects. The description mentions no parameters at all, so it fails to compensate for the near-total absence of schema documentation.

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?

States a clear verb and resource ('Create a new host'), so the basic action is unambiguous. However, it adds nothing beyond the tool name: it does not define what a 'host' is in this API, give any scope, or distinguish the operation from siblings like hosts_clone or hosts_update.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternatives are provided. The only signal is the trivial implication that you use it when you want a host created; siblings such as hosts_clone (copy an existing host) and hosts_update are never mentioned for routing.

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

hosts_deleteC
Destructive

Delete a host by UUID

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds nothing beyond that — no mention of irreversibility, whether dependent nodes/users are affected, or any confirmation requirement for an irreversible delete.

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 five-word sentence with the action and its key qualifier front-loaded and zero filler. Nothing is wasted.

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 tool with no output schema, the safety hint from annotations is the only substantive context and the description duplicates it. It is minimally adequate but omits the consequences of deletion that an agent would want before invoking an irreversible operation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the parameter burden, but it only restates the identifier as "UUID" while the schema already encodes format=uuid. No format, source, or lookup guidance is added for the single required 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 and resource ("Delete a host") plus the identifier used, so the agent knows exactly what the tool does. However, it does nothing to distinguish itself from the sibling hosts_bulk_delete, which also deletes hosts.

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 single-host deletion versus hosts_bulk_delete, nor any prerequisites or warnings about when not to use it. The agent must infer the distinction purely from the tool names.

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

hosts_getC
Read-only

Get a host by UUID

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond the name - no mention of behavior when the UUID is unknown (error vs empty), permissions required, or whether the response includes tags/config relationships. For a one-line description this is minimal but not contradictory.

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 the key information front-loaded and zero filler. It is appropriately sized for a simple single-parameter read, though it is arguably under-specified rather than truly concise.

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

Completeness3/5

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

For a one-param read tool with annotations and no output schema, the description covers the minimum needed to invoke correctly. It lacks any error behavior, permission notes, or cross-reference to how to obtain a UUID, leaving some gaps for an agent operating among ~20 host-related siblings.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter meaning; it does identify the input as a host UUID, which is the essential semantic. However, it adds nothing about format expectations or the identifier's origin (e.g. from hosts_list) beyond what the name already implies.

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 (Get) and resource (host) plus the lookup key (UUID), so the agent knows exactly what the call returns. It does not differentiate itself from siblings like hosts_list or hosts_get-equivalents (e.g. node_integrations_get, squads_get), but the retrieval-by-identifier intent is unambiguous.

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

Usage 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 versus hosts_list (enumerating hosts) or hosts_update/hosts_delete which also take a host identifier. The agent must infer the situation 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.

hosts_listC
Read-only

Get hosts

NameRequiredDescriptionDefault

No parameters

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered externally. The description adds no behavioral context at all — no pagination, ordering, or return-shape hints — so it contributes nothing beyond the annotations.

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

Conciseness3/5

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

Two words with zero waste, but this is under-specification rather than genuine conciseness — the brevity comes at the cost of any useful information. It is front-loaded only because there is nothing else to front-load.

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

Completeness2/5

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

For a simple list tool with no parameters, no output schema, and readOnly annotations, a complete description would still say what is returned (all hosts, with what fields) and how it relates to hosts_get. That context is entirely absent.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to document. Baseline 4 applies since no parameter semantics are missing.

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

Purpose2/5

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

"Get hosts" essentially restates the tool name hosts_list — it names no scope, no filtering, and no distinction from siblings like hosts_get or hosts_tags_list. An agent cannot tell from this text whether it returns all hosts, a page, or a filtered subset.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no exclusions, and no reference to alternatives such as hosts_get for a single host or hosts_tags_list for tags. The description gives the agent nothing to route on.

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

hosts_reorderD

Reorder hosts

NameRequiredDescriptionDefault
hostsYes

TDQS

D1.9/5.0
Behavior2/5

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

Annotations already state readOnlyHint=false and destructiveHint=false, lowering the bar, but the description adds nothing about behavior: it does not say whether the provided list must be complete, what happens to hosts omitted from the array, or whether the operation is idempotent. For a mutation that rewrites ordering state, that context is missing.

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?

Two words are obviously short, but this is under-specification rather than true conciseness; nothing is front-loaded because nothing is said. It earns no place beyond echoing the name.

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

Completeness2/5

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

For a mutation tool with no output schema, 0% parameter coverage, and a nested object whose semantics matter (viewPosition), the definition is insufficient. An agent cannot confidently construct a correct call from this alone.

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

Parameters1/5

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

Schema description coverage is 0% and the description offers no explanation of the single hosts parameter or its nested uuid/viewPosition fields. The critical semantic question, whether viewPosition must be a contiguous full ordering and whether the array must include all hosts, is left entirely undocumented.

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

Purpose2/5

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

"Reorder hosts" restates the tool name with no additional specificity: no mention of what ordering means (viewPosition), whether it applies globally or per scope, or how it differs from siblings like nodes_reorder or squads_reorder. It names a verb and resource, so it is not fully misleading, but it is effectively a tautology of the name.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to alternative tools (e.g., hosts_update) for adjusting host attributes. The agent must infer purpose entirely from the name.

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

hosts_tags_listB
Read-only

Get tags of hosts

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no behavioral detail such as pagination, return shape, or whether it lists tags across all hosts or per host. It provides no value beyond the structured annotations.

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

Conciseness5/5

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

The description is four words, front-loaded with the core action and resource. There is no wasted text.

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

Completeness4/5

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

For a zero-parameter, read-only list tool with annotations covering safety and no output schema, the description is adequate. The main gap is lack of clarification on what exactly is returned (e.g., all distinct host tags), but the tool is simple enough that this is 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?

The tool has zero parameters, so per the rubric the baseline is 4. There are no parameters whose semantics the description could clarify.

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 (get) and resource (tags of hosts), which distinguishes it from the many *_tags_list siblings such as nodes_tags_list and users_tags_list. However, it is minimal and does not elaborate on scope, so it is clear but not richly differentiated.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many other *_tags_list alternatives in the sibling set. It simply states what it returns without context or exclusions.

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

hosts_updateC

Update a host

NameRequiredDescriptionDefault
sniNo
alpnNo
hostNo
pathNo
portNo
tagsNo
uuidYes
nodesNo
mapperNo
remarkNo
addressNo
inboundNo
isHiddenNo
finalMaskNo
muxParamsNo
isDisabledNo
fingerprintNo
shuffleHostNo
keepSniBlankNo
mihomoX25519No
vlessRouteIdNo
securityLayerNo
sockoptParamsNo
internalSquadsNo
mihomoIpVersionNo
xhttpExtraParamsNo
serverDescriptionNo
pinnedPeerCertSha256No
verifyPeerCertByNameNo
xrayJsonTemplateUuidNo
overrideSniFromAddressNo
excludeFromSubscriptionTypesNoOptional. Subscription types from which the host will be excluded from.

TDQS

C2/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is partly covered. However, for a mutation tool the description adds nothing beyond the name: no mention of whether updates are partial or full replacement, required permissions, or side effects on linked nodes/inbounds.

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?

Three words are technically short, but this is under-specification rather than conciseness. Nothing is front-loaded because nothing is provided.

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?

A 32-parameter mutation tool with nested objects, no output schema, and near-zero schema description coverage demands substantial description content that is entirely absent. The definition is inadequate for the tool's complexity.

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

Parameters1/5

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

Schema description coverage is only 3% across 32 parameters, many of them nested objects (mapper, inbound, internalSquads). The description compensates with zero parameter information, leaving the vast majority of inputs undocumented.

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?

States a verb and resource ('Update a host'), which is minimally clear, but gives no indication of scope, what fields are updatable, or how it differs from hosts_bulk_update or hosts_create beyond the name. It is barely above a tautology of 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 on when to use this versus hosts_bulk_update, hosts_clone, or hosts_get. No prerequisites or preconditions mentioned. An agent must infer usage entirely from the name and siblings.

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

hwid_device_createC

Create a user HWID device

NameRequiredDescriptionDefault
hwidYes
userIdYes
platformNo
osVersionNo
requestIpNo
userAgentNo
deviceModelNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds only the 'user' scoping hint and nothing about what the record represents, whether creation is idempotent, what side effects occur, or what is returned on success.

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

Conciseness3/5

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

The single five-word sentence is front-loaded and free of padding, which is good structure. But it reads as under-specification rather than disciplined conciseness given the tool's complexity.

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 7-parameter mutation tool with no output schema and no meaningful schema descriptions, the definition is too thin. An agent lacks enough context on parameters, side effects, and success behavior to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0% across 7 parameters, so the description must compensate and does not. Only 'hwid' and 'userId' are weakly implied by the phrase; platform, osVersion, requestIp, userAgent, and deviceModel are undocumented in both schema and description.

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

Purpose3/5

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

The description states a verb (Create) and a resource (user HWID device), so the basic action is identifiable. However, it is a bare phrase that does not explain what an 'HWID device' record is or how it differs from the sibling operations like hwid_device_delete or hwid_devices_list, leaving purpose only minimally viable.

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 when-to-use, when-not-to-use, or prerequisite information, and no reference to any alternative sibling tool. The agent must infer entirely from the name that this is the creation path for HWID device records.

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

hwid_device_deleteC
Destructive

Delete a user HWID device

NameRequiredDescriptionDefault
hwidYes
userIdYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no statement of permanence, whether the device must be online, or any permission requirement — so it contributes no behavioral value beyond the annotations.

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

Conciseness3/5

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

It is a single front-loaded sentence with no wasted words, but that brevity comes at the cost of nearly all necessary detail rather than being efficient communication. Appropriate minimum size, insufficient 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?

For a destructive single-target deletion with no output schema, fully undocumented parameters, and no annotation-level detail about consequences, the definition leaves real gaps. An agent cannot tell what the deletion affects, whether it is reversible, or how to obtain the hwid value.

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

Parameters2/5

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

Schema description coverage is 0%, so the schema provides only bare types for userId and hwid. The description's 'user' and 'HWID device' loosely map to the two parameters but give no format, identifier source, or lookup guidance to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Delete a user HWID device'), which lets an agent distinguish it from siblings like hwid_device_create and hwid_devices_list_all. It does not explicitly name those siblings or clarify the single-device vs bulk-delete scope, 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 when-to-use guidance, no prerequisites, and no reference to alternatives such as hwid_devices_delete_all for bulk removal. The agent must infer usage entirely from the name and schema.

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

hwid_devices_delete_allB
Destructive

Delete all user HWID devices

NameRequiredDescriptionDefault
userIdYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is carried for the agent. The description's 'all' adds a useful scope cue (breadth of the wipe) beyond the annotations, but it says nothing about irreversibility, whether a user's devices can be recreated, or any side effects on active subscriptions/sessions. With annotations doing the safety heavy lifting, this is an adequate but thin addition.

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 that is fully front-loaded with the action and scope, with no filler. It is efficient, though the extreme brevity is under-specification rather than true conciseness for a destructive 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?

For a bulk destructive operation with no output schema and an entirely undocumented required parameter, the description omits the information an agent most needs: irreversibility, whether the userId is required and what it identifies, and confirmation expectations. The annotations cover the safety hint, but the description leaves significant behavioral and parameter gaps unresolved.

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?

There is one parameter (userId) with 0% schema description coverage, so the description needs to compensate. Saying 'user HWID devices' only implicitly ties userId to the scope; it doesn't state that the parameter is the target user's numeric ID or what happens for a user with no devices. Minimal compensation over the bare schema.

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

Purpose4/5

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

The description gives a specific verb ('Delete') plus resource ('all user HWID devices'), so an agent immediately knows this is a bulk destructive operation on a user's device records, distinguishable from the singular 'hwid_device_delete' sibling. It stops short of explicitly naming that sibling or the read-only 'hwid_devices_list' alternative, but the purpose itself 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?

No when-to-use guidance is present. The description never clarifies when an agent should call this bulk delete versus the single-device 'hwid_device_delete', nor does it state any prerequisite (confirmation, target user context) before firing an operation that wipes every device for a user.

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

hwid_devices_listC
Read-only

Get user HWID devices

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that - no mention of what a 'HWID device' record contains, whether results are paginated, or whether the user must 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?

Four words, front-loaded with the verb and correctly scoped - no filler. It is terse to the point of being a fragment, but 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?

There is no output schema, so the description should describe the return shape (device list fields, ordering, pagination), and it does not. Combined with zero parameter documentation, an agent has little beyond the name to work with.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter 'userId' has no schema documentation. The description's word 'user' only weakly signals that userId scopes the query to one user's devices, adding almost nothing beyond the parameter name.

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 and resource ('Get ... HWID devices') scoped to a user, which is enough to separate it from hwid_devices_list_all and hwid_top_users by implication. It never names those siblings explicitly, so the differentiation is inferential rather than stated.

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 versus hwid_devices_list_all or hwid_top_users, and no prerequisites or context. The agent must infer usage purely from the name.

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

hwid_devices_list_allB
Read-only

Get HWID devices. Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database.

NameRequiredDescriptionDefault
sizeNoNumber of results to return, no more than 1000
startNoStart index (offset) of the results to return, default is 0
filtersNo
sortingNo
filterModesNo
globalFilterModeNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare this a safe read operation, and the description adds genuinely useful behavioral context beyond them: the filters rely on expensive operators such as LIKE and can negatively impact database performance. This performance caveat is exactly the kind of non-obvious trait the description should carry.

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?

Two sentences, front-loaded, with no filler. The performance warning earns its place; only a brief scope clause is missing to make it complete.

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

Completeness3/5

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

For a read-only list tool with 6 parameters including nested filter/sorting objects and no output schema, the description covers the filter cost but omits return/pagination behavior and the structure of the nested parameters. Adequate but with clear gaps given the schema's low description coverage.

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

Parameters2/5

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

Schema description coverage is only 33% (size and start documented; filters, sorting, filterModes, globalFilterMode undocumented). The description mentions 'filters' and their cost but does not explain the filter/sorting structure, valid filter ids, or what filterModes/globalFilterMode do, so it does not compensate for the coverage gap.

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?

"Get HWID devices" states a clear verb+resource, so the purpose is understandable, but it does not distinguish this from the sibling hwid_devices_list despite the name implying an 'all' scope. It is close to a restatement of the tool name and gives no hint about what 'all' means versus the plain 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?

The warning that filters are 'primarily intended for use by the frontend' gives implicit guidance to avoid heavy filtering, but there is no explicit statement of when to use this tool versus hwid_devices_list or hwid_top_users. Usage is implied rather than spelled out.

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

hwid_statsC
Read-only

Get HWID devices stats

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no indication of the aggregation scope (global vs per-user vs per-node), any implicit time window, or cost/rate characteristics of a stats query.

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

Conciseness3/5

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

A single five-word sentence with no padding, which is structurally clean. But it is under-specified rather than genuinely concise – the brevity comes at the cost of any meaningful 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?

With no output schema, no parameters, and terse annotations, the description carries the burden of explaining what the stats contain. It says nothing about the shape, granularity, or scope of the response, so an agent cannot predict the result.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics burden and the baseline is 4. The description cannot add param detail, though it also fails to note that the result is therefore likely unfiltered global scope.

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?

States a verb ('Get') and a resource ('HWID devices stats'), so the general purpose is inferable. However, 'stats' is vague about what is actually aggregated (per-device counts? per-user? time-series?), and nothing distinguishes it from siblings like hwid_devices_list, hwid_devices_list_all, or hwid_top_users.

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 versus hwid_devices_list, hwid_devices_list_all, or hwid_top_users, which all live in the same HWID family. The agent must guess which HWID read tool answers which question.

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

hwid_top_usersB
Read-only

Get top users by HWID devices

NameRequiredDescriptionDefault
sizeNoNumber of results to return, no more than 100
startNoStart index (offset) of the results to return, default is 0

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that, such as how 'top' users are ranked, whether results are time-scoped, or any authentication/rate-limit notes.

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 wasted words. It is appropriately sized for a simple read-only listing 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?

The tool is simple (two optional pagination params, no output schema) and annotations cover safety, so the description does not need to explain return values. Still, it leaves the ranking criterion for 'top users' unspecified and does not relate the tool to its HWID siblings, leaving a small but real contextual gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the two pagination parameters are fully documented by the schema. The description adds no additional meaning beyond the schema, making the baseline 3 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?

States a specific verb ('Get') and resource ('top users by HWID devices'), so the basic intent is clear. However, it does not distinguish itself from nearby siblings like hwid_stats or hwid_devices_list, leaving ambiguity about what 'top' means and when this tool is preferred.

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 hwid_stats or hwid_devices_list. Usage is only implied by the tool name and one-line purpose, with no exclusions or context.

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

inbounds_listA
Read-only

List inbounds of all config profiles (tag, type, port, squads). full=true adds the raw xray inbound objects.

NameRequiredDescriptionDefault
fullNoReturn the raw panel response, including rawInbound

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds value by enumerating returned fields and explaining the full=true variant, but says nothing about pagination, ordering, or how inbounds are aggregated across profiles.

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 tight sentence: the list scope and returned fields are front-loaded, followed by the parameter behavior. Zero filler.

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

Completeness4/5

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

For a read-only list with annotations, one fully documented parameter, and no output schema, the description is largely sufficient. Minor gaps remain around whether disabled profiles are included and how duplicate tags across profiles are handled.

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 single parameter is already documented ('Return the raw panel response, including rawInbound'). The description's 'adds the raw xray inbound objects' restates this in slightly different terms with marginal added meaning. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (inbounds) plus a scope that differentiates it: 'of all config profiles'. It also enumerates the returned fields (tag, type, port, squads). It does not name the near-sibling config_profiles_get_inbounds explicitly, so it falls just short of full sibling differentiation.

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 'all config profiles' scope implies when this is appropriate versus a per-profile lookup, but there is no explicit when-to-use/when-not statement and no alternative is named. Guidance is inferable rather than stated.

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

keygen_getB
Read-only

Get SECRET_KEY for Remnawave Node

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds only that the returned value is a secret, without noting sensitivity, exposure risk, caching, or whether the same key is returned for every node, so it contributes little beyond the structured fields.

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 short phrase with the action and the returned value front-loaded; nothing is wasted. It is arguably too terse to be maximally useful, but it is not padded.

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 param-less read tool with no output schema, the description leaves the important question unanswered: since it takes no node identifier, it is unclear what key is returned and for which node(s). No auth/permission context is provided either, which matters for a secret-retrieval endpoint.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so per the rubric this is the baseline-4 case. No parameter semantics need clarification.

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 ('SECRET_KEY'), and the target system ('Remnawave Node'), so the operation is unambiguous. It does not distinguish itself from near-neighbors such as system_generate_x25519 or nodes_get, and it does not explain what SECRET_KEY is used for.

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

Usage Guidelines2/5

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

No when-to-use, prerequisites, or alternative guidance is given. The tool has no parameters, so an agent can infer it is a simple retrieval, but nothing in the text says when this key is needed or why an agent would call it instead of another node metadata tool.

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

metadata_node_getC
Read-only

Get node metadata

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.4/5.0
Behavior2/5

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

The readOnlyHint/destructiveHint annotations already establish this as a safe read, so the bar is lower, but the description adds nothing beyond that — no indication of what the metadata payload covers, whether it can be empty, or any access constraints. It contributes zero behavioral context beyond the structured annotations.

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

Conciseness3/5

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

Three words, front-loaded with the verb and no filler. It is efficient but so terse that it reads as under-specified rather than well-structured.

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

Completeness2/5

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

With no output schema and no annotations describing the return shape, the description should explain what metadata is returned and in what form. Since it does not, an agent cannot predict the response or confirm it called the right tool.

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

Parameters2/5

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

Schema coverage is 0%: the single required 'uuid' parameter has no description in the schema or the tool description. The description does not clarify whether this is the node's UUID, a host UUID, or another entity's, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

States a verb (Get) and resource (node metadata), which distinguishes it from metadata_user_get. However, it never explains what 'node metadata' actually contains or how it differs from the sibling nodes_get, leaving the agent to guess at the boundary.

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 versus nodes_get or metadata_node_upsert, and no prerequisites mentioned. Usage must be fully inferred from the name alone, which is risky given several similarly-named node/metadata siblings.

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

metadata_node_upsertC

Update or create Node Metadata

NameRequiredDescriptionDefault
uuidYes
metadataYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already establish that this is a non-destructive mutation (readOnlyHint=false, destructiveHint=false). The description adds nothing beyond that: it does not say whether metadata is merged or replaced, what happens to existing keys, whether partial objects are allowed, or what the call returns. No contradiction, but no added behavioral value.

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?

Five words, front-loaded verb and resource, no filler. It is efficiently written, though the brevity reflects under-specification rather than tight editing of a richer statement.

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?

For a mutation tool taking a nested free-form object with 0% schema coverage and no output schema, the description omits everything an agent needs: merge semantics, target node identity, and the metadata contract. It is not remotely complete.

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

Parameters2/5

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

Schema description coverage is 0% and the description contributes nothing about either parameter. The agent gets no explanation of what 'uuid' identifies (a node), nor any hint about the shape or semantics of the free-form 'metadata' object, which is the tool's entire payload.

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

Purpose3/5

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

The description decodes the name's 'upsert' into 'Update or create' and names the resource (Node Metadata), so the operation is intelligible. However, it is essentially a restatement of the tool name with no distinguishing detail against siblings like metadata_node_get or metadata_user_upsert, so it sits at the vague/tautological boundary.

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 versus metadata_node_get or when an upsert is preferable to a plain update. The agent must infer the context entirely from the name.

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

metadata_user_getC
Read-only

Get user metadata

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no indication of which metadata namespace, whether the result is arbitrary key/value pairs, or how it relates to metadata_node_get. It does not contradict annotations, but it contributes no additional 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.

Conciseness3/5

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

Three words, front-loaded and free of redundancy, but the brevity here reflects under-specification rather than disciplined conciseness. It is appropriately sized only in the sense that there is nothing extraneous to cut.

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, the description carries the burden of explaining what metadata is returned (free-form key/value store? fixed fields?), and it does not. For a lookup tool whose result shape is opaque and whose id convention is ambiguous among many similar sibling tools, this is inadequate.

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

Parameters2/5

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

Schema coverage is 0% and the single parameter userId is only implied by 'user'. The description does not state that userId identifies the target user, nor whether it is a numeric internal ID versus a UUID or username, which matters given siblings like users_get_by_username and users_get_by_short_uuid.

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

Purpose2/5

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

"Get user metadata" is nearly a verbatim restatement of the tool name metadata_user_get, with no scope, no field list, and no differentiation from sibling reads like metadata_node_get or users_get. An agent cannot tell what 'metadata' means here or how it differs from user profile fields returned by users_get.

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 when-to-use guidance, no mention of when to prefer users_get or metadata_user_upsert, and no prerequisites such as permission requirements. The agent must infer everything from the name alone.

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

metadata_user_upsertC

Update or create User Metadata

NameRequiredDescriptionDefault
userIdYes
metadataYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing about the critical upsert semantics: whether the metadata object merges with or replaces existing keys, whether nested values are shallow- or deep-merged, or whether it requires specific permissions. For an operation writing an arbitrary nested object, this is a 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.

Conciseness3/5

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

The single short sentence is front-loaded and free of padding, but at five words it is under-specified rather than genuinely concise; it omits content an agent needs rather than trimming redundancy.

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

Completeness2/5

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

For a write tool taking an arbitrary nested metadata object, with no output schema and no parameter documentation anywhere, the description is far too thin. It should at minimum describe merge-vs-replace behavior and the expected metadata shape.

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

Parameters2/5

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

Schema description coverage is 0% for both required parameters, and the description supplies no compensating detail. The 'metadata' parameter is a free-form nested object with additionalProperties, so an agent has no idea what keys are valid, what value types are expected, or whether partial updates are supported.

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 pair (update or create) and a specific resource (User Metadata), which cleanly separates it from metadata_node_upsert and metadata_user_get in the sibling list. It loses a point only because it does not clarify anything about scope or effect beyond the name-level restatement.

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 upsert versus metadata_user_get, nor on what conditions trigger a create versus an update. The agent must infer everything 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.

node_integrations_createD

Create Node Integration

NameRequiredDescriptionDefault
nameYes
configYes
descriptionNo

TDQS

D1.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write. The description adds nothing beyond that: it does not explain what the 'config' object should contain, what side effects creation triggers, or whether the operation is idempotent. With annotations covering only the safety hint, the description leaves the behavioral burden unmet.

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?

Three words are technically concise, but this is under-specification rather than economy. Scoring reflects that brevity here comes at the cost of any useful content, not that it is verbose.

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?

For a mutation tool with a nested freeform config object, no output schema, and no annotations beyond safety hints, the description is wholly inadequate. Nothing tells the agent what fields config accepts, what a successful response looks like, or how this resource relates to nodes.

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

Parameters1/5

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

Schema description coverage is 0% across all three parameters, and the description supplies no parameter information at all. The required 'config' object is a freeform map (additionalProperties: {}) with no explanation of expected keys, so the agent has no way to construct a valid call.

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

Purpose2/5

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

The description 'Create Node Integration' only restates the tool name (node_integrations_create); it is a tautology. It does identify a verb and resource, but gives no detail about what a 'Node Integration' is or how this differs from sibling operations like node_integrations_update or node_integrations_get.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool, no prerequisites (e.g., whether a node must exist first), and no mention of alternatives. The agent must infer everything from the name alone.

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

node_integrations_deleteC
Destructive

Delete Node Integration

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the agent knows this is an irreversible mutation. The description adds nothing on top of that: no cascade effects (e.g. does deleting an integration affect nodes?), no permission requirements, no confirmation semantics, no failure modes. No contradiction with annotations, but zero 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.

Conciseness3/5

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

It is extremely short and front-loaded, which is good, but the brevity reflects under-specification rather than efficiency. There is no waste because there is almost no 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?

For a destructive, no-output-schema tool, the description is inadequate: no warning about permanence, no routing to the non-destructive siblings, and no parameter guidance. The annotations cover only the safety hint, leaving the rest of the agent's decision context unaddressed.

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

Parameters2/5

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

The single parameter uuid has 0% schema description coverage and is not mentioned in the description at all. While the parameter's meaning is largely obvious from its name and format=uuid, the description does nothing to compensate for the documentation gap, such as clarifying whether this is the integration's UUID or a node's.

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

Purpose2/5

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

The description 'Delete Node Integration' is essentially the tool name with spaces substituted for underscores, providing no information an agent couldn't derive from the identifier itself. It conveys a verb and resource in the bare minimal sense, but adds no scope, no target detail, and no distinction from siblings like node_integrations_get or node_integrations_update beyond the obvious verb.

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 statement of when to use this tool versus node_integrations_list/get/create/update, no prerequisites (does the integration need to be disabled first?), and no warning that deletion is permanent. Usage is only inferable from the verb 'Delete'.

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

node_integrations_getC
Read-only

Get Node Integration by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that – no note on permissions, whether a missing uuid errors or returns null, 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?

A single short phrase with no filler, front-loading the verb and resource. It is efficient, though arguably so terse that it borders on under-specification rather than crispness.

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

Completeness3/5

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

For a one-parameter read tool this is minimally viable; the purpose is obvious. But with no output schema, the description could have said what a Node Integration object holds, and it offers no guidance on error behavior when the uuid is unknown.

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 0%, so the description carries some burden. "by uuid" does clarify that the single parameter is the identifying key, which the schema only implies via the property name and format. However, it adds no detail about uuid origin or format beyond what the schema already shows.

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

Purpose4/5

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

States a clear verb ("Get") and resource ("Node Integration") plus the lookup key ("uuid"). It is understandable in isolation, but it does nothing to distinguish itself from the sibling node_integrations_list or to say what a Node Integration actually is.

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 when-to-use guidance and no mention of the alternatives (node_integrations_list for enumeration, node_integrations_get for a single record by id). The agent must infer the routing itself.

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

node_integrations_listB
Read-only

Get all Node Integrations

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no mention of pagination, ordering, or whether the result is unbounded, which is the main behavioral question for a list-all endpoint.

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 short sentence with no filler; the essential verb and resource are front-loaded. It is arguably too terse rather than bloated, so it is not penalized for length.

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 zero-param, read-only list tool this is the minimum viable description, but with no output schema and no annotations about volume, it says nothing about what is returned or whether the list can be large. An agent can call it correctly but has no expectations about the response.

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

Parameters4/5

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

The tool takes zero parameters, so the schema imposes no semantic burden and the description has nothing to compensate for. Baseline 4 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?

States a clear verb+resource ('Get all Node Integrations') and 'all' implies an unfiltered list, which distinguishes it from the singular node_integrations_get. However it never names that sibling or any scope/exclusion, so an agent must infer the distinction from the name alone.

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 versus node_integrations_get or any other sibling. The only hint is the word 'all', which is implicit rather than explicit routing advice.

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

node_integrations_updateD

Update Node Integration

NameRequiredDescriptionDefault
nameNo
uuidYes
configNo
descriptionNo
restartNodesNo

TDQS

D1.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/non-destructive profile is covered. The description adds nothing beyond that — no mention of what fields are updatable, whether restartNodes has side effects, or permission requirements.

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

Conciseness2/5

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

Three words are brief but this is under-specification rather than conciseness. There is no front-loaded detail to earn the brevity.

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?

For a mutation tool with 5 parameters, a nested object, no output schema, and zero schema descriptions, the description is completely inadequate. An agent cannot determine what gets updated or how to structure a call.

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

Parameters1/5

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

Schema description coverage is 0% across 5 parameters, so the description carries the full burden — and it provides nothing. The nested `config` object and `restartNodes` boolean are entirely unexplained, leaving their meaning and side effects opaque.

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

Purpose2/5

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

"Update Node Integration" merely restates the tool name with no added specificity. It does not distinguish this tool from siblings like node_integrations_create or node_integrations_delete, nor does it say what aspect of an integration is updated.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus node_integrations_create, node_integrations_delete, or node_integrations_get. No prerequisites, no exclusions, no alternative named.

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

node_plugins_cloneD

Clone Node Plugin

NameRequiredDescriptionDefault
cloneFromUuidYes

TDQS

D1.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is partially covered by structured data. However, the description adds nothing — it does not say what is copied from the source plugin, whether tags/config are duplicated, or how the new plugin is identified.

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?

Three words, front-loaded, but the brevity is under-specification rather than conciseness — there is nothing here that earns its place because nothing informative is present.

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?

No output schema, no annotation detail beyond the safety hints, and an undocumented required parameter. For a mutation tool an agent must call with a UUID it has to know the meaning of, the description omits everything needed.

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

Parameters1/5

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

The single required parameter cloneFromUuid has 0% schema description coverage, and the description provides no explanation of it — no indication that it is the UUID of the plugin to duplicate. With only one parameter and no coverage, the description fully fails to compensate.

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

Purpose2/5

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

"Clone Node Plugin" restates the tool name with no added specificity — it says what resource is involved but nothing about scope, resulting object, or how it differs from siblings like node_plugins_create or sub_page_configs_clone. This is effectively a tautology of the name.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no mention of alternatives (e.g. node_plugins_create for a fresh plugin vs. cloning an existing one), and no prerequisites. The agent gets no basis for choosing this tool over a sibling.

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

node_plugins_createC

Create Node Plugin

NameRequiredDescriptionDefault
nameYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is known, but the description adds nothing on top: no indication of what a node plugin requires to be created, whether the name must be unique, what happens on conflict, or what is returned. For a creation tool with no output schema, this leaves the behavioral picture thin.

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?

Three words with no waste, but this is under-specification rather than conciseness. Brevity here comes at the cost of any usable content, matching the calibration for minimal descriptions.

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?

A creation operation inside a large plugin-management family, with an undocumented parameter and no output schema, needs far more than a title restatement. Nothing about prerequisites, side effects, or resulting state is covered.

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

Parameters2/5

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

One parameter (name) with 0% schema description coverage. The schema conveys structural constraints (pattern, 2-30 chars) but the description never explains what this name identifies or whether it must be unique across plugins, so it fails to compensate for the coverage gap.

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

Purpose2/5

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

"Create Node Plugin" is a literal restatement of the tool name node_plugins_create, adding no scope, no distinguishing detail, and no separation from adjacent siblings such as node_plugins_clone or node_plugins_sync. An agent learns nothing it did not already know from the name itself.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no pointer to the alternatives (node_plugins_clone for duplicating an existing plugin, node_plugins_update for modifying one). Usage must be entirely inferred from the name.

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

node_plugins_deleteC
Destructive

Delete Node Plugin

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the description's "Delete" verb is consistent but adds nothing. It omits whether the deletion is permanent, what happens to nodes still referencing the plugin, or whether any confirmation/force parameter is required for a destructive operation.

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

Conciseness2/5

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

At three words the text is short, but this is under-specification rather than conciseness: nothing is front-loaded because nothing beyond the tool name is stated. The brevity leaves the agent with no actionable 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?

This is an irreversible destructive mutation with no output schema and no annotation detail beyond destructiveHint. For such an operation the description should at minimum state impact and irreversibility, and it does neither.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions the single required uuid parameter. The parameter name is self-explanatory, but the description provides no format, scope, or lookup guidance to compensate for the empty schema descriptions.

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?

"Delete Node Plugin" names a specific verb and resource, so an agent can tell it removes a plugin object rather than a node or user. However, it merely expands the tool name with no differentiation from close siblings like nodes_delete, node_plugins_update, or node_plugins_torrent_truncate.

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 when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as node_plugins_sync or node_plugins_reorder. The agent is given no basis for choosing this tool over the other plugin-mutating siblings.

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

node_plugins_executeC

Execute command on node plugins

NameRequiredDescriptionDefault
commandYes
targetNodesYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, which at least signals mutability. However the schema reveals commands like recreateTables that plausibly destroy data, and the description says nothing about side effects, irreversibility, or required permissions. With annotations present the bar is lower, but the description still adds essentially no 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.

Conciseness3/5

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

A single short sentence is front-loaded and wastes no words, but it is under-specified rather than truly concise. Brevity here reflects missing information, not disciplined editing.

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?

For a mutating tool with a complex nested command schema, no output schema, and annotations that only flag it as non-read-only, the description is far too thin. Nothing tells an agent what a plugin command does, what happens on success or failure, or which commands carry data-loss risk.

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

Parameters2/5

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

Schema description coverage is 0% at the parameter level, so the description should compensate for two complex, deeply nested oneOf parameters. It mentions 'command' only as a bare noun and never explains the blockIps/unblockIps/recreateTables variants or targetNodes targeting. It adds no meaning beyond the schema's own inline branch labels.

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

Purpose3/5

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

The description names a verb (execute) and a resource (node plugins), so the basic action is identifiable, but 'command' is undefined and the tool's actual capabilities (blockIps, unblockIps, recreateTables) are only discoverable from the schema. It offers no differentiation from siblings like node_plugins_sync or node_plugins_torrent_truncate.

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 other node_plugins operations, no preconditions, and no mention of alternatives such as node_plugins_sync. An agent learns nothing about the appropriate usage context from the description.

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

node_plugins_getC
Read-only

Get Node Plugin by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: no error behavior for a missing/invalid uuid, no note on what a plugin record contains, and no scoping details. With the low bar set by annotations, a description this thin still adds no 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?

One short clause, front-loaded with the verb and resource, no filler or redundancy. It is efficient, though the brevity edges into under-specification rather than disciplined 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?

For a one-parameter read tool with annotations covering safety and no output schema, the description is minimally adequate. It is missing sibling differentiation and any note on a single-plugin retrieval failure mode, but the call surface itself is fully specified by 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 0%, but the single parameter is named 'uuid' with format 'uuid', making it largely self-documenting. The description at least ties the parameter to the retrieval ('by uuid'), though it adds no syntax, scope, or validity details beyond the schema. Baseline 3 for a trivially self-evident parameter.

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

Purpose2/5

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

The description 'Get Node Plugin by uuid' essentially restates the tool name (node_plugins_get) with the resource noun swapped in. It does convey retrieve-by-identifier, but it offers no differentiation from close siblings such as node_plugins_list, node_plugins_tags_list, or node_plugins_clone. This is close to tautology rather than a distinct statement of purpose.

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 when-to-use guidance, no mention of alternatives (e.g. use node_plugins_list to enumerate plugins vs. this tool to fetch one), and no prerequisites. The uuid requirement is implied by the name but never explicitly framed as a condition for selection.

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

node_plugins_listB
Read-only

Get all Node Plugins

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that – no mention of whether results are paginated, cached, or scoped to a particular node, which is the kind of context a bare list tool should supply.

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?

Four words, front-loaded with the verb and resource, and completely free of filler. It is arguably under-specified rather than bloated, but as written 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 zero-parameter, read-only list tool with no output schema, the description is minimally sufficient: an agent knows it returns the plugin collection. However, with no output schema it should at least hint at the shape or scale of the return, and it says nothing about scope relative to the many other node_plugins_* siblings.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. There is no parameter surface for the description to explain, and it correctly implies no filtering input 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?

States a clear verb (Get) and resource (Node Plugins), and the word 'all' implies a full-collection listing rather than a single fetch, which separates it from node_plugins_get. It does not distinguish itself from node_plugins_tags_list or explain what a 'Node Plugin' entity is, so sibling differentiation is only partial.

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 indication of when to use this listing versus node_plugins_get, node_plugins_tags_list, or node_plugins_torrent_stats. There are no prerequisites, filters, or alternatives mentioned; the agent must infer everything from the name.

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

node_plugins_reorderC

Reorder Node Plugins

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, identifying this as a non-destructive mutation. The description adds nothing beyond that: it doesn't explain whether the reorder is full or partial, whether all plugin UUIDs must be supplied, or any side effects. For a mutation tool with a complex array payload, this is a notable gap.

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 four words and is front-loaded, but it is under-specified rather than appropriately concise for a mutation tool with a structured array parameter. Every sentence earns its place only because there is virtually nothing there.

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 the mutation nature, required array-of-objects parameter with 0% schema coverage, and no output schema, the description is completely inadequate. An agent lacks the information needed to correctly construct the items payload or understand the ordering semantics.

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

Parameters1/5

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

Schema description coverage is 0% and the single required parameter is a complex array of objects containing 'uuid' and 'viewPosition'. The description does not explain the parameter at all — no detail on whether the array must contain all plugins, the meaning of viewPosition, or the uuid format — so it fails to compensate for the missing schema documentation.

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 ('Reorder') and resource ('Node Plugins'), so an agent can tell what the tool does. It does not distinguish this reorder operation from the many sibling reorder tools (nodes_reorder, hosts_reorder, squads_reorder, etc.), but the resource name itself provides 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 on when to use this tool versus alternatives, no prerequisites, and no conditions or exclusions. The agent must infer usage entirely from the name.

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

node_plugins_set_tagsC

Set tags of Node Plugin

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/non-destructive profile is covered structurally. The description adds nothing beyond that: it does not say whether existing tags are replaced or merged, what happens on invalid tags, or what auth/rate constraints apply.

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

Conciseness3/5

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

A single short phrase, front-loaded with the verb, with zero wasted words. However the brevity reads as under-specification for a two-parameter mutation tool rather than deliberate concision.

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, 0% parameter coverage, and only minimal annotations, the description should explain the uuid target, tag replacement semantics, and constraints. None of that is present, leaving real gaps for an agent invoking the tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden and fails it. It mentions 'tags' generically but does not explain the required uuid, the uppercase pattern, the 10-item cap, or the 36-character limit.

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 ('Set') and resource ('tags of Node Plugin'), so the agent knows this mutates tag assignments on a node plugin rather than creating or listing one. It offers no contrast with siblings like node_plugins_update, which could plausibly also touch tags, so it stops short of full disambiguation.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of alternatives such as node_plugins_tags_list or node_plugins_update, and no prerequisites. The only implicit signal is the verb 'Set', which suggests replacement but is never confirmed.

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

node_plugins_syncA

Sync Node Plugin to nodes. Push the current plugin config, including referenced shared lists, to every connected node this plugin is active on.

NameRequiredDescriptionDefault
uuidYes

TDQS

A3.5/5.0
Behavior3/5

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

The 'Push' wording is consistent with readOnlyHint=false, and the description usefully discloses that referenced shared lists travel with the config and that only nodes where the plugin is active are targeted. It says nothing about idempotency, failure handling, or whether pushes can be undone, so it adds meaningful but partial behavioral context over the annotations.

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

Conciseness4/5

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

Two short sentences with the action front-loaded; the second sentence elaborates scope and payload. It slightly restates the first ('Sync ... to nodes' vs 'Push ... to every connected node'), a minor redundancy but overall tight.

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 write/sync tool with no output schema and only minimal annotations, the description covers the core behavior and target scope but leaves the sole parameter and any return or error expectations unexplained. Adequate but with clear gaps.

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

Parameters2/5

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

There is one parameter (uuid) with 0% schema description coverage, and the description never mentions it or clarifies that it identifies which plugin to sync. With coverage below 50%, the description is expected to compensate for the undocumented parameter and does not.

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

Purpose5/5

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

States a specific verb (sync/push) and resource (Node Plugin config) plus the exact scope: 'every connected node this plugin is active on'. That scope clause distinguishes it from family siblings like node_plugins_update, node_plugins_execute, shared_lists_sync and snippets_sync, which an agent can rule out without opening a 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 description implies the usage context (propagating the current config out to active nodes) but never states when to choose this over node_plugins_update or node_plugins_execute, nor any prerequisite such as the plugin already being created. Usage is inferable but not guided.

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

node_plugins_tags_listB
Read-only

Get tags of Node Plugins

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Get' is consistent with that. Beyond safety there is no behavioral context: no indication of auth requirements, whether the result is a flat string list or objects, pagination, or whether tags are global to all plugins or plugin-scoped. With no annotations to carry the burden and no output schema, more was needed.

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

Conciseness3/5

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

A single four-word sentence that is front-loaded and free of waste, but so terse that it is essentially a restatement of the tool name rather than an informative definition. It earns its place by adding nothing beyond the identifier.

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 zero-parameter read-only listing tool this is near the minimum viable: it says what is retrieved but not what shape the answer takes (there is no output schema) nor the scope of the tag set. Acceptable but with clear gaps.

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

Parameters4/5

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

The tool takes zero parameters and the schema coverage is 100%, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.

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

Purpose4/5

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

'Get tags of Node Plugins' names a specific verb (Get) and resource (tags of Node Plugins), so the basic operation is unambiguous. However it does not distinguish itself from the many parallel *_tags_list siblings or clarify whether it returns the plugin-wide tag vocabulary or tags of one specific plugin, which the name alone leaves ambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance is given, and no alternative is named despite obvious candidates (node_plugins_list for the plugins themselves, node_plugins_set_tags for writing tags). An agent must infer the relationship entirely from sibling names.

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

node_plugins_torrent_reportsB
Read-only

Get Torrent Blocker Reports. Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database.

NameRequiredDescriptionDefault
sizeNoNumber of results to return, no more than 1000
startNoStart index (offset) of the results to return, default is 0
filtersNo
sortingNo
filterModesNo
globalFilterModeNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavioral context — that filters use expensive LIKE operators and can degrade database performance — which is real value beyond the structured fields.

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?

Two sentences, both earning their place: the first is the purpose, the second a performance caveat. Front-loaded and free of filler, though slightly more structure could separate the warning from the purpose.

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?

A no-arg-required read tool with no output schema and partially documented nested parameters. The description covers purpose and a performance caveat, but leaves sorting/filterModes semantics and return shape unexplained, which for a nested-object report tool is a meaningful gap.

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

Parameters2/5

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

Schema coverage is only 33% (size and start documented; filters, sorting, filterModes, and globalFilterMode undocumented). The description only generically warns that 'filters' are expensive, adding no syntax, shape, or semantics for the four undocumented parameters, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Get Torrent Blocker Reports'), so the agent knows exactly what is retrieved. It does not distinguish itself from the nearby siblings node_plugins_torrent_stats or node_plugins_torrent_truncate, which an agent could easily confuse it with.

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 note that filters are 'primarily intended for use by the frontend' implies programmatic callers should be cautious, but there is no explicit when-to-use, when-not-to-use, or alternative tool named. Usage is only implied rather than directed.

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

node_plugins_torrent_statsC
Read-only

Get Torrent Blocker Reports Stats

NameRequiredDescriptionDefault

No parameters

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond the name — no indication of aggregation window, freshness, or scope of the stats.

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

Conciseness3/5

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

It is a single short phrase with no wasted words, but it is under-specified rather than concise — the sentence does not earn its place by conveying anything the name doesn't already.

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 parameters, the description is the only place to explain what the returned stats represent. It provides none of that, leaving an agent unable to judge what it will get back.

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

Parameters4/5

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

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline of 4 applies for a no-parameter tool.

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

Purpose3/5

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

The phrase 'Get Torrent Blocker Reports Stats' names a resource (torrent blocker reports stats) and an implicit read verb, which distinguishes it from node_plugins_torrent_reports and node_plugins_torrent_truncate. However, it never says what 'stats' contains or how it differs from those siblings, so the purpose stays vague.

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

Usage Guidelines1/5

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

There is no guidance on when to call this versus node_plugins_torrent_reports or any other sibling. No prerequisites, no context, no exclusions are stated.

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

node_plugins_torrent_truncateC
Destructive

Truncate Torrent Blocker Reports

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already flag readOnlyHint=false and destructiveHint=true, so the safety profile is disclosed structurally. The description adds nothing beyond that — it does not state that report data will be permanently lost, what the blast radius is across nodes/plugins, or whether the action is reversible.

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

Conciseness3/5

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

A single four-word fragment with no filler, so it is compact and front-loaded. But at this length it is under-specified rather than genuinely concise, and it does not carry enough structure to orient the agent.

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, parameterless operation with no output schema, the description should at minimum delineate what gets destroyed and over what scope (global? per plugin?). None of that is present, leaving the blast radius of a destructive call unexplained.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter meaning for the description to add or omit; the baseline for a parameterless tool applies. Scores above 4 would require the description to compensate for something the schema cannot express.

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?

Names a specific verb (truncate) and resource (Torrent Blocker Reports), so it is not a pure tautology of the tool name. However, it never clarifies what truncation actually means for the reports — purge everything, trim oldest entries, reset counters — leaving the scope of the operation ambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance at all, and no mention of the closely related siblings node_plugins_torrent_reports and node_plugins_torrent_stats that an agent would plausibly confuse this with. The agent must infer the selection context entirely.

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

node_plugins_updateD

Update Node Plugin

NameRequiredDescriptionDefault
nameNo
uuidYes
pluginConfigNo

TDQS

D1.8/5.0
Behavior2/5

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

Annotations already state readOnlyHint=false and destructiveHint=false, but the description contributes nothing beyond that: it does not say what a plugin update modifies, whether it is reversible, or how the nested pluginConfig is applied. No contradiction with annotations, but no added behavioral value either.

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?

Three words are technically concise, but this is under-specification rather than economy. It is front-loaded in the trivial sense that there is only one clause to front-load.

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?

A mutation tool with no output schema, no annotation detail on the write semantics, and an undocumented nested config object needs a description to carry substantial context. This one carries none.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters, including a required uuid and a free-form nested pluginConfig object with additionalProperties: true. The description mentions none of them, leaving the most opaque parameter completely unexplained in either place.

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

Purpose2/5

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

"Update Node Plugin" merely restates the tool name (node_plugins_update) as a title-cased phrase. It gives the verb and resource but adds no scope, no affected fields, and no differentiation from siblings like node_plugins_create or node_plugins_clone.

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 when-to-use guidance, no preconditions, and no reference to alternatives. An agent cannot tell from this text whether to reach for node_plugins_update, node_plugins_sync, or node_plugins_set_tags for a given change.

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

nodes_bulk_actionsC

Perform actions for many nodes

NameRequiredDescriptionDefault
uuidsYes
actionYes

TDQS

C2.1/5.0
Behavior2/5

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

Annotations state readOnlyHint=false and destructiveHint=false, so the agent knows it mutates state without an explicitly destructive flag. However the description adds nothing beyond that: it does not say the operations hit live nodes, whether they are idempotent, whether ENABLE/DISABLE affect traffic, or whether RESTART causes downtime.

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

Conciseness3/5

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

A single short, front-loaded sentence with no wasted words, but the brevity reflects under-specification rather than effective conciseness. There is no second sentence that could have carried the needed scope or action semantics.

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 bulk mutation tool that can disable, restart, or reset traffic on many live nodes, with no output schema and no annotation detail, the description is far too thin. An agent has no information about impact, limits on the number of UUIDs, or what a successful response contains.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for two required parameters and does not compensate. The enum for action (ENABLE/DISABLE/RESTART/RESET_TRAFFIC) is only in the schema, and the description never explains that uuids is a list of node UUIDs or what selecting each action implies.

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

Purpose2/5

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

"Perform actions for many nodes" essentially restates the tool name (nodes_bulk_actions) without specifying which actions or what the bulk scope means. It does not distinguish this tool from nodes_bulk_update, nodes_bulk_profile_modification, or the single-node nodes_enable/nodes_disable/nodes_restart/nodes_reset_traffic siblings.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no routing to alternatives. The agent cannot tell from this text whether to use this tool instead of nodes_bulk_update or the individual nodes_enable / nodes_restart tools.

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

nodes_bulk_profile_modificationC

Modify Inbounds & Profile for many nodes

NameRequiredDescriptionDefault
uuidsYes
configProfileYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/safety profile is partly covered. The description adds essentially nothing beyond the verb: it doesn't say what gets overwritten on the nodes, whether the change is atomic across the uuid list, or what permissions are required 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.

Conciseness3/5

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

A single terse sentence that is front-loaded and wastes no words, but it is under-specified rather than genuinely concise. It earns its place only barely given the complexity of the nested parameters it must explain.

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 bulk, nested-parameter mutation with no output schema and only thin annotations, the description is far too sparse. It should at minimum clarify the profile/inbound semantics and the bulk behavior, none of which appear.

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

Parameters2/5

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

Schema description coverage is 0% and there is a nested configProfile object, so the schema alone gives no meaning for uuids, activeInbounds, or activeConfigProfileUuid. The description lists no parameter guidance and therefore does not compensate for the coverage gap.

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

Purpose3/5

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

The description pairs a verb ("Modify") with a resource ("Inbounds & Profile for many nodes") and communicates bulk scope, so the general intent is legible. However, it does not distinguish this tool from near-identical siblings like nodes_bulk_update or nodes_bulk_actions, leaving the agent unsure which bulk-node mutation to pick.

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 statement of when to use this tool versus the many node-mutation siblings, no prerequisites, and no exclusions. The agent gets no routing help beyond the bare verb.

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

nodes_bulk_updateD

Update many nodes

NameRequiredDescriptionDefault
uuidsYes
fieldsYes

TDQS

D1.8/5.0
Behavior2/5

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

Annotations declare this is a non-read-only, non-destructive mutation, but the description adds no behavioral context beyond that. It does not clarify whether the update is partial or full replacement, how nested fields like tags or integrationUuids are treated, or any permission or rate-limit considerations.

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

Conciseness2/5

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

The description is a single three-word phrase. While concise and front-loaded, it is under-specified rather than efficient, failing to earn its place by conveying any information an agent could not already infer from the tool name.

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

Completeness1/5

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

This is a bulk mutation tool with a complex nested fields schema, no output schema, and annotations only covering readOnly/destructive hints. The description is entirely inadequate for that complexity, omitting what fields are updatable, expected return behavior, error handling, and any bulk-specific constraints.

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

Parameters1/5

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

Schema description coverage is 0%: neither required parameter (uuids, fields) is documented, and the nested fields object contains nine sub-properties with no explanation. The description mentions 'many nodes' but never names the parameters or explains their semantics, leaving the agent with no parameter guidance.

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

Purpose2/5

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

The description 'Update many nodes' restates the tool name (nodes_bulk_update) without adding specificity such as which fields can be updated or how it differs from nodes_update or nodes_bulk_profile_modification. It is a tautological paraphrase of the tool identifier rather than a clarifying statement of purpose.

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 bulk update versus the single-node nodes_update or the more specific nodes_bulk_profile_modification. The description provides no context, exclusions, or alternatives, leaving usage entirely 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.

nodes_createD

Create a new node

NameRequiredDescriptionDefault
ipsNo
nameYes
noteNo
portNo
tagsNo
addressYes
proxyUrlNo
countryCodeNoXX
providerUuidNo
configProfileYes
notifyPercentNo
trafficResetDayNo
activePluginUuidNo
integrationUuidsNo
trafficLimitBytesNo
consumptionMultiplierNo
isTrafficTrackingActiveNo
nodeConsumptionMultiplierNo

TDQS

D1.3/5.0
Behavior1/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds no behavioral context: no permission requirements, no side effects, no idempotency, no interaction with configProfile or node integrations that its many parameters imply.

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 single sentence is short, but this is under-specification rather than conciseness. There is no front-loaded useful information because there is no useful information at all.

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?

For an 18-parameter mutation tool with nested objects, a required config profile, and no output schema, the description is completely inadequate. An agent cannot call this correctly without extensive schema inspection and guesswork.

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

Parameters1/5

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

All 18 parameters have 0% schema description coverage, so the description carries the full burden of explaining them, yet it mentions none. Critical required fields (name, address, configProfile with activeConfigProfileUuid/activeInbounds) and enums like ip status are entirely undocumented.

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

Purpose2/5

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

"Create a new node" restates the tool name nodes_create almost verbatim without adding scope, resource type, or domain context. It does not distinguish this tool from siblings like nodes_bulk_actions or nodes_update, nor does it clarify what a 'node' is in this API.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as nodes_bulk_actions or how this relates to nodes_update. The agent is given nothing to decide whether this is the right tool.

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

nodes_deleteC
Destructive

Delete a node

NameRequiredDescriptionDefault
uuidYes

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered structurally. The description adds no behavioral context beyond that: it does not say the deletion is permanent/irreversible, what happens to dependent entities (hosts, users, subscriptions), or whether confirmation is required. With the annotation bar lower, this still contributes nothing.

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?

A three-word fragment is not conciseness but under-specification; there is no wasted sentence because there is effectively no content. Brevity here leaves the agent without any signal beyond the tool name.

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-parameter mutation with no output schema, the description is inadequate: it omits parameter identification, irreversibility, side effects on related resources, and error conditions (e.g. node in use). The annotations cover only the generic safety hints, not the operational details an agent needs.

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

Parameters2/5

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

Schema description coverage is 0% and the single uuid parameter is undocumented in both schema and description. The description never mentions that the node is identified by uuid nor what form the identifier takes, so it fails to compensate for the coverage gap.

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

Purpose2/5

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

"Delete a node" essentially restates the tool name nodes_delete without adding scope, and it makes no attempt to distinguish itself from siblings such as nodes_bulk_actions (removal at scale) or nodes_disable (non-destructive deactivation). An agent can infer the verb+resource, but the description contributes nothing the name did not already convey.

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 when-to-use guidance, no prerequisites (e.g. whether the node must be empty of users/hosts first), and no mention of alternatives like nodes_disable or nodes_bulk_actions. The agent is left to guess whether deletion is the right operation versus temporarily disabling the node.

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

nodes_disableC

Disable a node

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already tell the agent this is a mutation (readOnlyHint=false) that is non-destructive (destructiveHint=false). The description adds nothing beyond that: it does not say what disabling entails, whether it is reversible, how connected users are affected, or whether it requires confirmations.

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

Conciseness3/5

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

The three-word phrase is front-loaded and free of padding, but this is under-specification rather than effective concision. There is no room for structure or hierarchy of information.

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 state-changing tool with no output schema and only minimal annotations, the definition omits reversibility, effect on active connections, and confirmation behavior. What remains is not enough for an agent to invoke it confidently in edge cases.

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

Parameters2/5

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

The single parameter is 'uuid' with format uuid but zero schema description coverage. The name is largely self-explanatory as a node identifier, but the description contributes no meaning about which node identifier it expects or where to obtain it, failing to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Disable a node'), so the operation is unambiguous. It does not, however, differentiate itself from close siblings such as nodes_enable, nodes_delete, or hosts_bulk_disable, so an agent gets no help choosing among them.

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

Usage Guidelines2/5

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

There is no guidance on when to disable a node versus restarting, deleting, or bulk-disabling it, and no prerequisites or side-effect warnings are given. The agent must infer usage entirely from the name.

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

nodes_enableC

Enable a node

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so safety is partly covered, but the description adds nothing beyond that — it doesn't say what enabling a node actually does (traffic resumption, config reload, effect on connected users, reversibility). For a state-mutating operation 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.

Conciseness3/5

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

At three words it is maximally front-loaded and wastes nothing, but the brevity stems from under-specification rather than disciplined editing. It is not verbose, just empty.

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?

A mutation tool with one undocumented required parameter and no output schema needs the description to explain the effect and the required identifier; neither is present. What annotations cover (non-destructive) is the only usable signal.

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

Parameters2/5

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

Schema description coverage is 0% for the single required uuid parameter, and the description gives no indication of what the parameter identifies or how to obtain it. With low coverage the description is expected to compensate, and it does not.

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

Purpose4/5

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

States a specific verb+resource ("Enable a node"), so the agent knows the operation targets a node and changes its enabled state. However, it offers no differentiation from the many node siblings such as nodes_disable, nodes_restart, or nodes_update, leaving routing to the tool name alone.

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 when-to-use guidance, no prerequisites, and no mention of the obvious counterpart nodes_disable or any bulk alternative like nodes_bulk_update. The agent must infer everything about context from the name.

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

nodes_getC
Read-only

Get node by UUID

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that – no note on error behavior for an unknown UUID, no indication of what the returned node contains, and no permission requirements. It restates rather than enriches.

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?

Four words, front-loaded with the verb and resource, with zero filler. It is arguably too terse for the gaps it leaves, but as a sizing/structure matter it is efficient and readable.

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 single-parameter read tool with no output schema, the description should at least signal what a successful response yields or how a missing UUID is handled. The annotations carry the safety profile and the schema covers the input, but return/error behavior is left entirely unspecified.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. Saying "by UUID" identifies the single parameter as the node's UUID identifier and confirms it is a lookup key rather than an array or filter, but it adds no format or validity details beyond what the schema's type/format already imply.

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 and resource ("Get node") qualified by lookup key ("by UUID"), so an agent knows exactly what the tool retrieves. It does not differentiate itself from the similarly named metadata_node_get or nodes_list siblings, which is the only gap.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as nodes_list (for enumerating nodes) or metadata_node_get (for node metadata). The agent must infer the selection context from the name alone.

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

nodes_listA
Read-only

List all nodes. Compact by default: inbounds as tags, provider as name, system info trimmed. Pass full=true for the raw panel response, or use nodes_get for one node.

NameRequiredDescriptionDefault
fullNoReturn the raw panel response, including inbound objects and full system info

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds what annotations cannot—the default compact output shape (inbounds as tags, provider as name, trimmed system info) versus the raw payload under full=true. That return-shape disclosure is genuinely useful given no output schema exists, though it stops short of pagination or volume characteristics.

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, front-loaded with the core action, and every clause carries information—default output shape, the full override, and the sibling route. Nothing is padding.

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

Completeness5/5

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

For a read-only list tool with annotations carrying the safety profile and no output schema, the description fills the key gap by describing the return shape in both modes and pointing to the single-node alternative. Nothing needed to call it correctly 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% and the single parameter's schema text already explains it returns the raw panel response with inbound objects and full system info. The description's gloss on full=true largely restates that, so the baseline 3 applies; the default-vs-raw contrast adds only marginal framing.

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

Purpose5/5

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

States a specific verb and resource ("List all nodes") and immediately scopes it as the collection-level counterpart to nodes_get, which it names. An agent can distinguish it from the single-node sibling without opening either schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent on two axes: pass full=true for the raw panel response, and use nodes_get instead when only one node is needed. The condition selecting each alternative is stated, matching the calibration's high-scoring routing pattern.

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

nodes_reorderD

Reorder nodes

NameRequiredDescriptionDefault
nodesYes

TDQS

D1.6/5.0
Behavior1/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, but the description adds nothing beyond them. It does not explain that this is a bulk position-assignment operation, whether it replaces all ordering or only moves the listed nodes, or what happens to nodes omitted from the array.

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 two-word description is short but by under-specification rather than economy. It is front-loaded but carries almost no information, so brevity here costs clarity rather than earning it.

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?

For a mutating tool with no output schema, no annotation detail beyond a generic safety hint, and a structured array parameter whose semantics are entirely unexplained, the definition is far too thin for an agent to call it correctly.

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

Parameters1/5

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

Schema description coverage is 0% and the description supplies no parameter meaning at all. The critical semantics of `nodes` (array of {uuid, viewPosition}) — e.g. whether viewPosition is an absolute index, a relative rank, or whether the array must be exhaustive — are undocumented anywhere.

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?

"Reorder nodes" states a specific verb and resource, so the basic purpose is legible. However, it offers no scope or differentiation from siblings such as nodes_update, nodes_bulk_update, or nodes_delete, leaving the agent to guess what 'reorder' affects.

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

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus nodes_update, nodes_list, or any of the other ~30 node tools. No prerequisites, no exclusivity conditions, no mention of what data is needed to perform the reorder.

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

nodes_reset_trafficC

Reset Node Traffic

NameRequiredDescriptionDefault
uuidYes

TDQS

C2/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutation with no stated destructiveness. The description adds nothing beyond the title: it does not say whether usage counters are zeroed irreversibly, whether in-flight accounting is lost, or whether elevated permissions are required. With annotations covering only the safety hints, this leaves a significant behavioral gap.

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?

Three words with zero waste, but also zero content; this is under-specification masquerading as brevity rather than a front-loaded, information-dense summary.

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

Completeness2/5

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

For a mutating tool with one undocumented parameter, no output schema, and minimal annotations, the definition should establish at minimum what is reset and how to identify the node. Neither is present, leaving the agent guessing at the operation's effect.

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

Parameters2/5

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

Schema coverage is 0% and the single required parameter, uuid, is undocumented in both schema and description. The word "Node" weakly implies uuid identifies the target node, but there is no statement of format, sourcing, or whether it is the node's UUID versus another identifier.

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

Purpose2/5

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

The description is a verbatim restatement of the tool name, adding no scope or mechanism detail. It does not clarify what "traffic" means here (usage counters, quotas, billing periods) or which node is affected, and it does not distinguish itself from nodes_restart, nodes_bulk_actions, or users_reset_traffic.

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

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or alternative routing is provided. An agent cannot tell from this text whether resetting traffic is a per-node counter wipe versus a quota cycle reset, or when users_reset_traffic would be the correct sibling instead.

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

nodes_restartC

Restart node

NameRequiredDescriptionDefault
uuidYes
forceRestartYes

TDQS

C2.5/5.0
Behavior2/5

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

Annotations declare this is a write operation (readOnlyHint=false) that is not destructive (destructiveHint=false), which the description does not contradict. But the description adds nothing beyond the annotations: it doesn't disclose that restarting a node disconnects active users, what forceRestart does differently, or any permission requirements.

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

Conciseness2/5

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

At two words the text is not bloated, but it is under-specified rather than concise. There is no front-loaded detail to structure, and the fragment carries none of the context needed to invoke the tool correctly.

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

Completeness2/5

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

For a required-parameter mutation tool with 0% schema coverage and no output schema, the description is far too thin. An agent gets no information on parameter semantics, side effects, or how this differs from nodes_restart_all.

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

Parameters2/5

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

Schema description coverage is 0%, so both required parameters (uuid, forceRestart) are undocumented in the structured data. The description compensates only marginally by implying the tool targets a single node, leaving the uuid format and the meaning of forceRestart entirely unexplained.

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 ('Restart') and resource ('node'), so an agent knows exactly what operation is performed. However, it offers no differentiation from the sibling nodes_restart_all, which is the obvious alternative for the same action at a different scope.

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 nodes_restart_all, nodes_disable, or nodes_update. No prerequisites, no mention that the node must be reachable, and no context about the forceRestart flag's effect on the operation.

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

nodes_restart_allB
Destructive

Restart EVERY node

NameRequiredDescriptionDefault
forceRestartYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the description is not responsible for the basic safety profile. It adds useful blast-radius context with "EVERY node", but does not explain forceRestart behavior, downtime impact, reversibility, or permissions.

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 imperative phrase with no wasted words. It is arguably too terse for a destructive all-node operation, but the sentence itself is structurally efficient.

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 operation that restarts every node, the description is missing parameter semantics, prerequisites, warnings, and alternatives. Annotations provide the destructive hint, but the text does not complete the picture an agent needs before invoking it.

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

Parameters1/5

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

The only parameter, forceRestart, has 0% schema description coverage and is never mentioned in the description. The description adds no meaning about what forceRestart changes or when to set it true versus false.

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 (restart), resource (node), and scope (EVERY), making clear this is an all-node restart rather than the single-node nodes_restart sibling. An agent can identify the action and blast radius immediately from the text.

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 when-to-use guidance, no prerequisites, and no comparison to alternatives such as nodes_restart or nodes_bulk_actions. The word EVERY implies scope but does not say when this tool should be chosen over siblings.

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

nodes_tags_listC
Read-only

Get nodes tags

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds nothing: no indication of whether this is a global tag vocabulary for nodes, pagination behavior, or ordering. For a list endpoint with no output schema, that is a 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.

Conciseness3/5

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

Extremely short and front-loaded, but it is a three-word fragment rather than a sentence and is under-specified rather than truly concise. There is no wasted text, but also almost no text.

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

Completeness2/5

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

With no output schema and no parameters, the description is the only source of information about what comes back, yet it says nothing about the return shape (tag names vs. tag objects), pagination, or ordering. For a simple read tool this is thin.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies as the schema fully defines the (empty) input.

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?

States a verb ('Get') and a resource ('nodes tags'), so the broad intent is inferable, but the phrasing is ambiguous: it does not clarify whether it returns the list of tags applicable to nodes or a node-to-tag association. With many sibling tag-listing tools (hosts_tags_list, users_tags_list, config_profiles_tags_list), the resource name is the only differentiator and no explicit contrast is drawn.

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?

Provides no when-to-use guidance, no prerequisites, and no mention of any alternative tool. The agent must infer usage purely from the tool name and the sibling naming convention.

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

nodes_updateD

Update node

NameRequiredDescriptionDefault
ipsNo
nameNo
noteNo
portNo
tagsNo
uuidYes
addressNo
proxyUrlNo
countryCodeNo
providerUuidNo
configProfileNo
notifyPercentNo
trafficResetDayNo
activePluginUuidNo
integrationUuidsNo
trafficLimitBytesNo
consumptionMultiplierNo
isTrafficTrackingActiveNo
nodeConsumptionMultiplierNo

TDQS

D1.6/5.0
Behavior2/5

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

Annotations declare a non-destructive mutation (readOnlyHint=false, destructiveHint=false), so the safety profile is covered structurally. The description adds nothing else: it does not clarify whether this is a partial or full replace, whether omitted fields are cleared, what permissions are needed, or that only uuid is required among 19 fields. For a mutation tool this is a large unaddressed gap.

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?

Two words are technically concise but this is under-specification rather than effective brevity; there is no front-loaded useful information because there is no information at all.

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 a 19-parameter mutation tool with nested objects, no output schema, and 0% schema coverage, the description is wholly inadequate. An agent has essentially no basis for calling this correctly beyond guessing from field names.

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

Parameters1/5

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

Schema description coverage is 0% across 19 parameters, so the schema carries no prose the description could lean on. The description mentions no parameter at all, not even the required uuid or any of the complex fields (ips, configProfile, tags). Zero compensation for a low-coverage schema.

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

Purpose2/5

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

The description is essentially a restatement of the tool name: a generic verb ('Update') plus resource ('node') with no scope, no field-level detail, and no differentiation from siblings such as nodes_bulk_update. An agent cannot tell from this text alone what makes nodes_update distinct.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no mention of alternatives (nodes_bulk_update, nodes_bulk_profile_modification), and no prerequisites or conditions. The agent is left to infer everything 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.

settings_getC
Read-only

Get Remnawave settings

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing on top of that — no mention of auth requirements, caching, or whether the returned payload contains sensitive data — so it earns no credit for extra 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?

A single short sentence with zero padding, front-loaded verb-first. It is efficient, though the brevity tips into under-specification rather than true 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?

The tool is simple (no params, readOnly, no output schema), so the description is not required to explain return values. Still, it omits the one thing that matters here: which settings object this returns relative to subscription_settings_get and system_configuration, leaving a real ambiguity unaddressed.

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?

Zero parameters, so there is nothing for the description to explain; the baseline for a no-param tool is 4. The description neither helps nor harms here.

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?

"Get Remnawave settings" does name a verb and a resource, but the resource phrase is little more than a restatement of the tool name (settings_get) plus the product name. It gives no signal separating it from sibling readers such as subscription_settings_get or system_configuration, so an agent cannot disambiguate which settings are meant.

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 when-to-use statement, no exclusion, and no pointer to the alternatives (settings_update for writes, subscription_settings_get for subscription-level settings). The agent is left to infer the scope entirely from the name.

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

settings_updateC

Update Remnawave settings

NameRequiredDescriptionDefault
oauth2SettingsNo
passkeySettingsNo
brandingSettingsNo
passwordSettingsNo

TDQS

C2.1/5.0
Behavior2/5

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

Annotations only state readOnlyHint=false and destructiveHint=false; the description is consistent with them but adds nothing. It does not disclose the key behavioral question for a settings mutation: whether the call is a full replacement (all nested required fields must be resupplied) or a partial merge, nor whether secrets are overwritten or preserved, nor any auth or restart requirements.

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

Conciseness3/5

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

A single short, front-loaded sentence with no wasted words. It is structurally fine, but its brevity reflects under-specification rather than disciplined concision for a tool with this much surface area.

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?

For a mutation tool with four nested parameter groups, no output schema, and only minimal annotations, one clause is inadequate. An agent cannot tell what is being changed, what the call replaces, or what happens to omitted settings.

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

Parameters1/5

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

Schema description coverage is 0% across four deeply nested top-level objects (oauth2 with six providers, passkey, branding, password). The description mentions no parameter at all, so it fails to compensate for the coverage gap and leaves the meaning and required shape of every field undocumented in prose.

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?

"Update Remnawave settings" names a verb and a resource, so the basic action is inferable. But it is essentially a restatement of the tool name and gives no scope: it does not reveal that oauth2, passkey, branding, and password settings are involved, nor does it distinguish it from the adjacent subscription_settings_update sibling.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the natural complement settings_get, and no note of prerequisites such as admin authorization for changing authentication providers. Nothing in the text is misleading, but nothing helps the agent choose this tool over alternatives either.

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

shared_lists_createC

Create Shared List

NameRequiredDescriptionDefault
nameYes
configYes

TDQS

C2/5.0
Behavior2/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false, so the safety profile is thin. The description adds nothing about the creation semantics: whether names must be unique, whether the call is idempotent, what the config object governs, or what side effects creation has. It does not contradict the annotations, but it carries almost none of the behavioral burden.

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

Conciseness3/5

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

Three words, zero waste, front-loaded with the action. There is nothing extraneous, but the brevity reflects under-specification rather than disciplined conciseness, so it lands at the minimum-viable level.

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 two required parameters, a nested untyped config object, no output schema, and only minimal annotations, the description leaves an agent with no idea what a valid config looks like or what the call returns. Far more context is needed for a creation tool of this shape.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for two undocumented parameters and it does not. The config object is a free-form nested object (additionalProperties: {}) that is completely opaque, and the name pattern/minLength constraints are only inferable from the raw schema, not explained anywhere.

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

Purpose2/5

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

"Create Shared List" is a tautological restatement of the tool name shared_lists_create. It conveys the bare verb+resource but offers no scope, no differentiation from siblings like shared_lists_update or shared_lists_sync, and no explanation of what a shared list actually is.

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 when-to-use guidance, no prerequisites, and no mention of alternatives among the many sibling tools (shared_lists_list, shared_lists_get, shared_lists_update). Nothing tells the agent when this is the right call.

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

shared_lists_deleteC
Destructive

Delete Shared List by name

NameRequiredDescriptionDefault
nameYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: it does not say the deletion is permanent, whether it is reversible, what happens if the name does not exist or the list is in use, or whether dependent resources are affected. The low bar set by annotations is not met with any extra 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?

One short phrase with zero filler, and the verb-and-identifier structure is front-loaded. Its brevity reflects omission of content rather than efficient packaging, so it falls short of 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?

For a destructive, single-parameter tool with no output schema and no annotations beyond a destructive hint, the description should at minimum signal irreversibility and failure behavior when the named list is missing. Neither is present, leaving the agent unable to anticipate the consequences of the call.

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

Parameters2/5

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

The single parameter is literally named "name" and the description only restates "by name", adding no meaning over the schema. The pattern and length constraints in the schema are left entirely unexplained, and with 0% schema description coverage the description does not compensate.

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 and resource ("Delete Shared List") and scopes it to selection by name, which cleanly separates it from sibling read/write operations like shared_lists_get and shared_lists_update. It stops short of naming an alternative sibling explicitly, so it does not reach 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 when-to-use guidance, no prerequisite or permission note, and no mention of alternatives such as updating the list instead of deleting it. The agent must infer that this is the terminal operation in the shared_lists_* family.

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

shared_lists_getC
Read-only

Get Shared List by name

NameRequiredDescriptionDefault
nameYes

TDQS

C2.7/5.0
Behavior2/5

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

readOnlyHint=true and destructiveHint=false already declare this is a safe read, so the description only contributes the lookup-by-name behavior. It says nothing about error behavior for a missing list, whether the name is case-sensitive, or what a shared list actually is, which for a 0%-coverage schema is a notable 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?

A single four-word sentence with zero padding and the key information front-loaded. It earns its place, though the extreme brevity is under-specification rather than optimal concision.

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?

No output schema, no annotations beyond the read-only flags, and no documentation of the parameter, so the description carries real explanatory burden. Nothing about the return shape, lookup semantics, or relationship to shared_lists_list is provided.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate for the single required parameter, and it only says 'by name'. The schema's slash-permitting pattern suggests hierarchical/path-style names, but the description never explains that semantics, leaving the most error-prone aspect of the call undocumented.

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 ('Get') and resource ('Shared List') with a lookup key ('by name'), so an agent can tell it fetches one list rather than enumerating them like shared_lists_list. It stops short of naming or contrasting with any sibling explicitly, so it's clear but undifferentiated.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of an alternative such as shared_lists_list for enumeration or shared_lists_update for modification. The 'by name' phrasing implies a targeted single fetch, but usage conditions are left entirely to inference.

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

shared_lists_listA
Read-only

Get Shared Lists (Preview). Returns only the name, type and item count of every shared list. Use "Get Shared List by name" to fetch the items themselves.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the description's real contribution is the payload contract: it declares this is a preview endpoint and that only name/type/item count are returned, warning the agent not to expect items. It says nothing about pagination or result size, which would be useful on an unmetered 'every shared list' call.

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

Conciseness5/5

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

Two short sentences with zero filler. The scope constraint (what is returned) is front-loaded, followed by the pointer to the sibling, which is exactly the order an agent needs.

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

Completeness5/5

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

With no output schema, the description carries the return-shape burden and does so: it enumerates the exact fields returned and tells the agent where to go for the full record. For a zero-parameter, read-only list tool with annotations already covering safety, nothing material is missing.

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

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description adds no parameter detail because there is none to add, and none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get Shared Lists') and immediately bounds scope: 'Returns only the name, type and item count of every shared list.' It also names the sibling that returns the detail payload, so an agent can distinguish shared_lists_list from shared_lists_get without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to the alternative ('Use "Get Shared List by name" to fetch the items themselves'), which tells it when this list view is insufficient. No exclusions or prerequisites are given (e.g. auth scope, whether lists are paginated), so it falls short of a full when/when-not treatment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shared_lists_syncB

Sync Shared List to nodes. Push every plugin referencing this shared list to the nodes it is active on.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive mutation. The description adds real behavioral context: it pushes every plugin referencing the list to the nodes where it is active, implying a fan-out write across nodes. It does not disclose idempotency, required permissions, or rate/scope limits.

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?

Two short sentences, front-loaded with the verb+resource. No wasted words. The second sentence earns its place by describing the propagation effect.

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 single-param mutation with no output schema, the description covers what happens but omits what is returned or how to verify the sync, and gives no usage context. Adequate but with clear 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 coverage is 0%, but there is only one parameter and the schema still enforces its format via pattern/length. The description implicitly identifies 'name' as the shared list identifier ('this shared list'), which is minimal but adequate for a single-param tool.

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 (sync) and resource (Shared List) plus the propagation target (nodes). The second sentence clarifies the actual effect, distinguishing it from a plain update. It does not explicitly contrast with the closely-named sibling shared_lists_update, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no mention of the alternative shared_lists_update or node_plugins_sync. The description explains the mechanism of syncing rather than when an agent should choose 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.

shared_lists_updateD

Update Shared List

NameRequiredDescriptionDefault
nameYes
configYes

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write, but the description adds nothing: no auth requirements, no statement of what happens to omitted config keys, no behavior on name collisions. The 'Update' verb is at least consistent with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but its brevity comes from under-specification rather than discipline. There is one sentence that earns nothing beyond echoing the tool name.

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?

For a mutation tool with two required parameters, a nested untyped config object, 0% schema description coverage, and no output schema, the description is completely inadequate. Nothing tells the agent what a valid update looks like or what it changes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description explains neither parameter. The opaque 'config' object with additionalProperties and the 'name' pattern/namespace semantics are left entirely undocumented, and the nested config shape is exactly what an agent would need clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is essentially a restatement of the tool name 'shared_lists_update' as 'Update Shared List'. It names a verb and a resource but adds no scope, no field detail, and no differentiation from siblings like shared_lists_sync, shared_lists_delete, or shared_lists_create. It is a tautology rather than a specification.

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 when-to-use guidance, no prerequisites, and no mention of the alternatives in a large sibling set. An agent gets nothing to decide between update, sync, create, or delete for shared lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippets_createD

Create snippet

NameRequiredDescriptionDefault
nameYes
snippetYes

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the write/safe profile is carried by structured data. The description adds nothing beyond that — no side effects, no name-collision behavior, no sync implications for a snippet that may be pushed to nodes.

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?

Two words are certainly brief, but this is under-specification rather than conciseness — no information is front-loaded because no information exists beyond the tool name.

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?

For a required-parameter write tool with no output schema and opaque inputs, the description supplies nothing an agent needs: no parameter meaning, no behavioral context, no relation to sibling snippet operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both required parameters. The description gives no meaning for 'name' (naming rules, path-like pattern usage) or the opaque 'snippet' array of open objects, and does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Create snippet" only restates the tool name in verb+resource form with no scope, no mention of what a snippet is in this API (config snippet presumably), and no differentiation from siblings like snippets_update or snippets_sync. It is essentially a tautology of the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to create a snippet versus updating, syncing, or reusing an existing one, and no prerequisites or context. The sibling set contains snippets_list/update/sync/delete, yet none are referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippets_deleteC
Destructive

Delete snippet

NameRequiredDescriptionDefault
nameYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say whether deletion is permanent, whether the snippet is detached from nodes/profiles, or whether the name must match exactly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two words with zero waste and the verb is front-loaded, but the brevity crosses into under-specification rather than tight conciseness; a sentence of qualifying context would not have hurt.

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-target operation with no annotations' worth of extra detail needed only insofar as annotations cover it, the description still omits irreversibility, identifier format expectations, and any failure behavior (e.g., what happens if the name does not exist).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden of explaining the single required 'name' parameter, yet it says nothing. The pattern in the schema hints at path-like/namespaced identifiers but the description never confirms or explains this.

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?

Clear verb+resource ('Delete snippet') that lets an agent identify the target object type immediately. It does not, however, distinguish itself from the other snippet mutators (snippets_update, snippets_sync) beyond the obvious verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the natural alternatives (snippets_update for modification, snippets_sync for propagation). Usage must be inferred entirely from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippets_listC
Read-only

Get snippets

NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that - no note on filtering, pagination, permissions, or result volume for a list 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?

Two words are not concision but under-specification. There is no front-loaded information because there is effectively no content at all.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless list tool this could be lean, but with no output schema and no description of what is returned or how results are scoped, an agent cannot predict the response shape or behavior at all.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so there is nothing for the description to clarify; the baseline of 4 applies. The absence of parameters is itself consistent and requires no compensating text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get snippets" restates the tool name with no added scope, no indication of what a snippet is, and no differentiation from the many sibling listing tools (nodes_list, hosts_list, users_list). It is close to a tautology rather than a specific verb+resource statement.

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 versus snippets_create, snippets_update, snippets_sync, or snippets_delete, nor any context about the domain. The agent must infer usage purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippets_syncB

Sync snippet to affected config profiles. Trigger the sync of a snippet to all config profiles that reference it. Nodes which use affected config profiles will be restarted.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=false and destructiveHint=false, the description adds the important side effect that nodes using affected config profiles will be restarted. This is a significant behavioral disclosure beyond the structured annotations, though it does not cover timing or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and short, but the first two sentences are largely redundant: 'Sync snippet to affected config profiles' and 'Trigger the sync of a snippet to all config profiles that reference it' say the same thing. The third sentence adds necessary value.

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 sync operation with no output schema and annotations covering safety, the description is nearly complete: it states the action, its scope, and the node-restart side effect. The main omission is any explanation of the required 'name' parameter or sync timing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter 'name'. The description implies the parameter identifies a snippet but does not clarify the expected format, naming rules, or what name refers to beyond that implication.

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 ('sync') and resource ('snippet to affected config profiles'), and explains the effect on nodes. It is clear what the tool does, but it does not distinguish itself from sibling sync actions such as shared_lists_sync or node_plugins_sync.

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 describes what the tool does but gives no explicit guidance on when to use it versus alternatives. There is no mention of prerequisites, exclusions, or related tools like snippets_update or shared_lists_sync.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

snippets_updateD

Update snippet

NameRequiredDescriptionDefault
nameYes
snippetYes

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the agent knows this is a non-destructive write. The description adds nothing beyond that: it does not say whether the update replaces the whole snippet or merges, whether the snippet is validated/applied to nodes, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At two words it is not bloated, but this is under-specification rather than conciseness — there is no front-loaded context for the agent to act on. The brevity costs more than it saves.

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?

For a mutation tool with an opaque array parameter, no parameter descriptions, no output schema, and only safety-hint annotations, the description is wholly inadequate. An agent cannot determine what a valid call looks like or what the update affects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description supplies no parameter meaning. The `snippet` parameter is an array of objects with empty properties and additionalProperties, so its shape is completely unexplained; `name` is constrained by a pattern and length but never described. The description marginally implies name-as-identifier and snippet-as-payload but no more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Update snippet" restates the tool name with no additional specificity: it does not identify what a snippet is, what fields can be changed, or how it differs from siblings like snippets_create or snippets_sync. It is a bare verb+resource with no sibling differentiation, placing it just above a pure tautology.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as snippets_create for new snippets or snippets_sync. The only hint is the weak implication of "Update" that an existing snippet is being modified, which the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_accessible_nodesD
Read-only

Get internal squad accessible nodes

NameRequiredDescriptionDefault
uuidYes

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. Beyond that the description adds nothing: no indication of return shape, whether results are paginated, or whether 'accessible nodes' is computed per-user or per-squad. With annotations doing the safety work, the remaining behavioral burden is unmet.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with zero padding, so it is structurally clean. However, the brevity comes at the cost of under-specification rather than genuine economy.

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?

A read-only lookup with no output schema and an undocumented required identifier leaves the agent unable to predict either input meaning or result content. For a one-parameter query tool the description should at minimum name the entity the UUID refers to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the single required 'uuid' parameter. It does not: an agent cannot tell whether this is a squad UUID, a user UUID, or a node UUID, which is the single most consequential ambiguity for calling this tool correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name almost verbatim: 'Get internal squad accessible nodes' for squads_accessible_nodes. It does not clarify what an 'accessible node' is in this domain (nodes a squad's users can reach? nodes bound to a squad?) nor how this differs from squads_get or users_accessible_nodes. The verb+resource pattern is present but the semantics are opaque.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus siblings such as squads_get, nodes_get, or users_accessible_nodes, which all plausibly return overlapping node information. No prerequisites, no conditions, no exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_add_all_usersA
Destructive

Add EVERY user to an internal squad. For selected users use squads_add_many_users.

NameRequiredDescriptionDefault
uuidYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds useful scale context with 'EVERY user', which matters for a mass mutation, but says nothing about reversibility, permission requirements, or side effects on existing squad membership.

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, zero waste, with the scope constraint front-loaded before the alternative-tool routing. 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 single-parameter tool with annotations covering safety and no output schema, the definition covers purpose and routing adequately. The remaining gap is the unexplained uuid parameter, which the schema does not compensate for either.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (uuid) with 0% schema description coverage, so the description must carry the burden. It only implies the uuid is a squad identifier via 'to an internal squad' and never explicitly states that the uuid is the target squad, leaving the parameter meaning ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add), resource (users), and scope (EVERY user) to an internal squad. It also pins the sibling it is not (squads_add_many_users for selected users), so an agent can distinguish it 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative (squads_add_many_users) and the condition that selects it (selected users vs every user). The internal-squad scope also implicitly routes away from external_squads_add_all_users.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_add_many_usersC

Add many users to internal squad

NameRequiredDescriptionDefault
uuidYes
userIdsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the baseline safety profile is covered. The description adds nothing beyond that: no mention of what happens to users already in the squad, whether the operation is idempotent, permission requirements, or the 1000-user cap.

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 tight sentence with the action front-loaded and zero filler. It is not bloated, though its brevity is partly the result of under-specification rather than disciplined editing.

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 bulk mutation with no output schema and 0% parameter coverage, the description should explain the squad/user identifier shapes and what a successful bulk add returns or does with duplicates. None of that is present, so an agent cannot call this confidently without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden, and it only loosely implies that 'uuid' is the squad identifier and 'userIds' are numeric user IDs. It gives no format, ordering, or partial-failure semantics for the array, leaving both parameters materially under-documented.

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 and resource ('Add many users to internal squad'), and the 'internal squad' qualifier separates it from the external_squads_* family. It does not explicitly distinguish itself from squads_add_all_users, but the 'many' vs 'all' wording carries the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites (e.g., squad must exist), and no mention of the obvious alternative squads_add_all_users or the inverse squads_remove_many_users. The agent must infer the selection criteria from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_createC

Create internal squad

NameRequiredDescriptionDefault
nameYes
inboundsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, so the safety profile is thin. The description adds nothing beyond the verb: it does not explain what happens to the provided inbounds, whether the new squad must have a unique name, or what authorization is required 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words, fully front-loaded and waste-free, but this is under-specification rather than effective concision. There is room to add scope and parameter meaning without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A two-parameter create tool with 0% schema coverage, no output schema, and minimal annotations requires the description to carry more weight. Nothing is said about what "inbounds" means, what a squad is used for, or what the operation returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description lists neither parameter. "name" is weakly implied by the noun "squad", but "inbounds" (an array of UUIDs) is entirely unexplained, leaving the agent to guess what values are valid and what they attach to the new squad.

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 and resource ("Create internal squad") and the qualifier "internal" usefully distinguishes it from the sibling external_squads_create. It is clear but offers no further differentiation among the other squad-related siblings (update, set_tags, add_many_users).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as external_squads_create or squads_update. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_deleteC
Destructive

Delete internal squad

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a dangerous write. The description adds no further behavioral context such as whether the delete is permanent, what happens to users in the squad, or if confirmation is needed. It merely restates the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At three words, the description is extremely concise but under-specified to the point of being unhelpful for invocation. It is front-loaded but does not earn its place by adding any practical guidance.

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 delete tool with no output schema, the description should explain the impact of deletion (e.g., removal of squad and associations) and any important caveats. It provides none of this, leaving the agent to infer behavior from the annotations alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a required uuid with format 'uuid' but no description. The tool description does not mention or explain the parameter at all, so it fails to compensate for the 0% schema description coverage. Only the parameter name and format give any hint.

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 ('Delete') and resource ('internal squad'), and the word 'internal' distinguishes it from the sibling external_squads_delete. However, it does not fully differentiate from other squad operations like squads_get or squads_update beyond the verb.

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 indication of when to use this tool versus alternatives (e.g., external_squads_delete), no prerequisites, and no mention of side effects or required permissions. It only implies that deletion is the action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_getB
Read-only

Get internal squad by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the 'internal' scoping qualifier and says nothing about return contents, permission requirements, or error behavior for a missing uuid.

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, front-loaded sentence with no filler. It is efficient, though it is terse enough that it sacrifices some useful context (which resource set, what is returned) for brevity.

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 read with no output schema and annotations carrying the safety profile, the description is minimally viable. It omits what a squad object looks like and how a uuid is discovered, which an agent would likely need.

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?

There is a single required parameter at 0% schema description coverage, but it is self-documenting (a uuid with format: uuid) and the description confirms it is the lookup key ('by uuid'). No further meaning about format or sourcing of the uuid is added.

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 (Get) and resource (squad) scoped to 'internal' squads, which usefully distinguishes it from the sibling external_squads_get. It does not, however, differentiate itself from squads_list or explain how a uuid is obtained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. It is implied that this is the lookup path when a squad uuid is already known, but the description never says when to prefer squads_list (browse all) over this tool, nor what happens for an unknown uuid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_listB
Read-only

List internal squads with their inbounds. full=true adds the raw xray inbound objects.

NameRequiredDescriptionDefault
fullNoReturn the raw panel response, including rawInbound

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds some value by disclosing that output includes inbounds and that full=true surfaces raw xray inbound objects, but does not describe pagination, filtering, or how much data 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?

Two sentences, both earning their place, with the core purpose front-loaded before the parameter note. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with no output schema, the description covers purpose and the optional flag adequately. It stops short of enumerating what a squad record contains or how results are ordered, which would be minor completeness gains.

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 the single 'full' parameter. The description reiterates its effect ('adds the raw xray inbound objects') in nearly the same terms as the schema, adding marginal meaning beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List internal squads') and specifies the payload scope ('with their inbounds'). The word 'internal' usefully distinguishes it from the external_squads_list sibling, though it doesn't name that sibling explicitly.

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 versus squads_get or external_squads_list. Usage is only implied by the 'list' verb and the optional full flag; no conditions or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_remove_all_usersA
Destructive

Remove EVERY user from an internal squad. For selected users use squads_remove_many_users.

NameRequiredDescriptionDefault
uuidYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description's 'Remove EVERY user' is consistent with that. However, it adds nothing beyond the annotations: no note on irreversibility, whether the squad itself survives, or whether re-adding users is required to undo it.

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, the destructive scope front-loaded, and the sibling routing packed into the second. Nothing wasted.

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 parameter, no output schema, and annotations carrying the safety profile, the description is nearly sufficient — but it leaves the uuid referent unclear and says nothing about confirmation requirements or failure behavior for a destructive bulk operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the single 'uuid' parameter is undocumented in both the schema and the description. For a tool that removes users, it is genuinely ambiguous whether uuid identifies the squad or a user; the description never resolves this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Remove'), resource ('users from an internal squad'), and scope ('EVERY'), which lets an agent distinguish it from squads_remove_many_users without opening either schema. The emphasis on 'EVERY' plus 'internal squad' also separates it from external_squads_remove_all_users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative tool and the condition that selects it: bulk-selective removal belongs to squads_remove_many_users, this one is for wiping the entire squad. That is the exact decision an agent has to make.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_remove_many_usersC

Delete many users from internal squad

NameRequiredDescriptionDefault
uuidYes
userIdsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false; the description adds nothing about whether users are only detached from the squad, whether the change is reversible, or any limits/rate constraints. The bare word "Delete" sits in mild tension with destructiveHint=false, leaving the actual blast radius unclear to the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short front-loaded phrase with no filler, which is structurally sound. It is too under-specified to call efficient, though — brevity here comes at the cost of necessary detail rather than from tight writing.

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 two required parameters, 0% schema description coverage, and no output schema, the description should explain the identifier semantics and the effect of removal. None of that is present, so an agent cannot call this confidently without inspecting the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description supplies no parameter meaning. It never says that "uuid" is the squad identifier and "userIds" is the list of numeric user ids to detach, nor mentions the 1–1000 item bound enforced by the schema.

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?

"Delete many users from internal squad" gives a verb and resource, and the word "internal" implicitly separates it from the external_squads_* family. However, it largely restates the tool name and never clarifies what a "squad" removal means for the affected users (membership removal vs account deletion), nor distinguishes itself from squads_remove_all_users beyond the word "many".

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 when-to-use guidance. The agent is not told when this is preferable to squads_remove_all_users or how it relates to squads_add_many_users, nor whether the squad uuid or user ids must first be resolved via squads_list/users_resolve. Only the general name implies the use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_reorderC

Reorder internal squads

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered, but the description adds nothing on top: it does not say whether all squads must be supplied, how untouched items are treated, or what happens to positions on conflict. For a mutation of ordered collections this is a 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four words, front-loaded with the verb and scoped resource, with no filler. It is efficient, though the extreme brevity is under-specification rather than true conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A reorder mutation taking a structured array, with no output schema and only generic annotations, needs to explain ordering semantics and full-list versus partial-list behavior. None of that is present, leaving the agent guessing at call-correctness details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 0% schema description coverage, and the description does not compensate: it never explains that 'items' is a list of {uuid, viewPosition} pairs, whether the list must be exhaustive, or whether viewPosition values must be contiguous. The semantics of ordering are entirely left to inference from the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Reorder) and resource (internal squads), and the word 'internal' is a meaningful discriminator against the sibling external_squads_reorder. It stops short of 5 because it never says what 'reorder' changes (the view position of each squad).

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 only implied by the name; there is no statement of when to call this versus squads_update, nodes_reorder, or external_squads_reorder, and no prerequisites. The internal/external distinction is the only routing signal offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_set_tagsC

Set tags of Internal Squad

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds no context beyond that: it does not say whether existing tags are replaced or merged, what permissions are needed, or what happens on failure. For a mutation tool 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single five-word phrase is front-loaded and free of filler, but it is under-specified rather than genuinely concise for a two-required-parameter mutation tool. It is appropriately short but leaves needed detail out.

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 mutation tool with no annotations beyond the boolean hints, 0% schema coverage, and no output schema. With two required parameters (one, uuid, completely unexplained) the description is not complete enough to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden, yet it merely echoes the word 'tags'. The 'uuid' parameter is never mentioned, and the tag constraints (pattern ^[A-Z0-9_:]+, maxLength 36, maxItems 10) are left entirely to the schema. It does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Set') and resource ('tags of Internal Squad'), and the 'Internal' qualifier implicitly distinguishes this tool from the sibling external_squads_set_tags. It is clear what the tool does, though it never explicitly names the external counterpart.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as external_squads_set_tags or squads_tags_list. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_tags_listB
Read-only

Get tags of Internal Squads

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only the 'Internal Squads' scope, which is genuinely useful for disambiguating the tags-list family, but says nothing about return shape, ordering, or pagination.

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 the resource scope front-loaded and zero waste. It is appropriately terse, though one clause about return format would fit without bloat.

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 zero-param read tool with no output schema, the description says what is fetched but not what comes back (tag strings, objects with ids, sorting). No output schema exists to fill that gap, so the definition is adequate but leaves a small hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is fully covered, so there is nothing for the description to clarify. Baseline of 4 applies for a parameterless tool.

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 ('Get') and resource ('tags') scoped to 'Internal Squads', which distinguishes it from the sibling external_squads_tags_list without naming it. It does not, however, explicitly contrast with the other *_tags_list siblings, so an agent must infer the resource partitioning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as squads_get or external_squads_tags_list. The use case (fetching available tags for internal squads) is only implied by the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

squads_updateC

Update internal squad

NameRequiredDescriptionDefault
nameNo
uuidYes
inboundsNo

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations state readOnlyHint=false and destructiveHint=false, so the mutating-but-non-destructive profile is already conveyed. The description adds nothing beyond the name: it does not say whether omitted fields are preserved, whether the operation requires the uuid to exist, or what permissions/auth are needed.

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?

Three words is short, but the brevity reflects under-specification rather than tight editing; there is nothing to front-load because nothing of substance is stated.

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?

For a mutation tool with three undocumented parameters, no output schema, and only minimal annotations, the description is grossly incomplete. It provides no information an agent would need to invoke it correctly beyond guessing from the name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions no parameters at all. Three parameters (uuid, name, inbounds) are left entirely to the schema, and even the meaning of the inbounds array (what it replaces/associates) is undocumented anywhere.

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?

Verb+resource is clear ('Update ... squad') and the word 'internal' usefully distinguishes it from the sibling external_squads_update. However, it does not say what parts of a squad are updatable, so it fails to separate this from siblings like squads_set_tags, squads_reorder, squads_add_many_users, and squads_remove_many_users.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no reference to alternatives. An agent cannot tell from the text whether to use this rather than squads_set_tags or squads_add_many_users for a given change.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_cloneC

Clone subscription page config

NameRequiredDescriptionDefault
cloneFromUuidYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that the tool writes (readOnlyHint=false) and is not destructive (destructiveHint=false). The description adds no behavioral context such as whether it copies tags, requires a unique name, or what side effects occur. It does not contradict the annotations, but it contributes nothing beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short phrase with no wasted words and is front-loaded. However, it is arguably too terse for a mutation tool, bordering on under-specification rather than efficient conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a clone operation with one required parameter and no output schema, the description omits critical context: what exactly gets cloned, whether the new config needs a distinct name, and what happens on success. The annotations only cover write/non-destructive behavior, so the description leaves substantial gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented cloneFromUuid parameter. Although the parameter name is fairly self-explanatory, the description provides no meaning, format, or constraints, leaving the schema's bare UUID type to carry the full 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?

States a specific verb ('Clone') and resource ('subscription page config'), making the operation identifiable. It distinguishes itself from siblings like sub_page_configs_create and sub_page_configs_update by implication, though it does not explicitly say what is cloned or what the result is.

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 instead of sub_page_configs_create or other alternatives. The description offers no context, exclusions, or prerequisites, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_createC

Create subscription page config

NameRequiredDescriptionDefault
nameYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: no note on what the created config contains, whether a default is produced, uniqueness of the name, or 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A four-word, front-loaded phrase with zero padding. It is well-sized but minimal rather than deliberately concise in the sense of conveying required 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 mutation tool with no output schema, one undocumented parameter, and no elaboration on what a sub page config is or contains, the description leaves major gaps. Annotations cover only the create-vs-destructive distinction, not the operational context an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'name' parameter is undocumented in the description. The schema supplies type, pattern and length constraints, but the description offers no meaning (uniqueness, reserved names, format expectations) to compensate for the missing semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Create) and resource (subscription page config), which is enough to identify it against siblings like sub_page_configs_update or sub_page_configs_clone. It does not, however, explain what a 'subscription page config' is or how creation differs from cloning.

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 when-to-use guidance, no mention of prerequisites, and no reference to alternatives such as sub_page_configs_clone or sub_page_configs_update. The agent must infer usage 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.

sub_page_configs_deleteC
Destructive

Delete subscription page config

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered by structured data. The description adds nothing beyond the annotation, not even whether deletion is permanent, whether it cascades to related objects, or what happens if the uuid is not found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words, though it is arguably too terse to earn a top score given how little information it carries.

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-parameter mutation, the definition omits the identifier's meaning and any warning about reversibility. Annotations cover the destructive nature, but an agent still lacks the context needed to call this safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter has 0% schema description coverage and is not mentioned at all in the description. The schema supplies only type/format, so the description fails to convey what the uuid identifies or how to obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Delete') and resource ('subscription page config'), so the operation is unambiguous. It does not differentiate from siblings like sub_page_configs_delete vs sub_page_configs_clone, but the name prefix already scopes it clearly enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives or the fact that the config must exist first. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_getC
Read-only

Get subscription page config by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: no note on whether a missing uuid raises an error, what the config payload contains, or any auth requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficiently sized for a trivial read, though that brevity is also part of why other dimensions are thin.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read with annotations and no output schema, the minimum needed to invoke correctly is present. It stops short of anything an agent would need to interpret the returned config or handle a bad uuid.

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?

One parameter with 0% schema description coverage, so the description carries some burden. "By uuid" at least confirms which identifier the single parameter expects, but adds no format or sourcing detail beyond the schema's uuid type.

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 (Get) and resource (subscription page config) plus the identifier (uuid), so an agent knows exactly what it retrieves. It is distinguishable from sub_page_configs_list by the singular lookup key, though the description does not call that contrast out.

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 versus sub_page_configs_list or the tags/update/clone siblings. The agent must infer from the name that this is the single-item fetch path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_listB
Read-only

Get all subscription page configs

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only "all", which at best hints at unpaginated retrieval, and says nothing about result size, ordering, or rate limits beyond what the structured fields already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short clause with zero filler, and the essential information (list, subscription page configs) is front-loaded. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries some burden to indicate what a list call returns, but it does not describe the shape of a config entry, ordering, or whether the list is bounded. Annotations cover the read-only safety aspect, so the gap is moderate rather than severe.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description contributes nothing further because there is nothing parameter-related to clarify.

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?

"Get all subscription page configs" states a specific verb (get all) and resource (subscription page configs), and the plural/"all" wording distinguishes it from the singular sub_page_configs_get sibling. It does not explicitly name that sibling or note the list-vs-single relationship, so it stops short of full 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 statement of when to use this versus sub_page_configs_get or the other sub_page_configs_* siblings, and no mention of whether pagination, sorting, or filtering applies. The agent is left to infer usage purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_reorderC

Reorder subscription page configs

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the safety profile is known, but the description adds no behavioral context: it does not explain how ordering is applied, whether all configs must be supplied, whether positions are absolute/relative, or whether the operation is idempotent. For a mutation tool, it contributes nothing beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single, front-loaded sentence with zero wasted words. It is arguably under-specified rather than bloated, but as written it is efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a reorder mutation with a nested required items array, 0% schema description coverage, and no output schema, the description should explain position semantics and constraints. It leaves the most important behavioral details unstated, so an agent cannot call it reliably from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'items' parameter (array of {uuid, viewPosition}) has no documented semantics in either schema or description. The description's word 'configs' loosely maps to the items but adds no meaning about uuid or viewPosition behavior, leaving the parameter effectively undocumented.

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 verb ('Reorder') and resource ('subscription page configs'), which distinguishes it from the other *_reorder siblings operating on nodes, hosts, squads, etc. However, it adds nothing beyond what the tool name already conveys and offers no differentiation from sibling sub_page_configs_* 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?

There is no guidance on when to use this versus sub_page_configs_update or the other reorder tools, no prerequisites, and no mention of alternatives. The only usage signal is the implied 'when you need to reorder configs', which is minimal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_set_tagsC

Set tags of Subpage Config

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so write-ness is covered and the bar is lower. But the description omits the critical semantic of whether 'Set' replaces the existing tag set or merges into it, and says nothing about the tag-count or format constraints enforced by the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no filler. The brevity is appropriate in form, though the sentence is arguably under-specified rather than under-concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, 0% parameter coverage, and clear sibling overlap, the definition leaves an agent without enough context: replace-vs-merge behavior, tag constraints, and response shape are all unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with two parameters, so the description carries the full explanatory burden, yet it only restates that tags and the config exist. It adds no meaning about the uuid (which config) or the tags array format, pattern, or 10-item limit that the schema documents only structurally.

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 ('Set') and resource ('tags of Subpage Config'), so an agent can tell what the tool does. However, it offers no differentiation from the many sibling *_set_tags tools (config_profiles_set_tags, squads_set_tags, subscription_templates_set_tags, node_plugins_set_tags) beyond naming the resource, and the phrasing is awkward.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives like sub_page_configs_tags_list or sub_page_configs_update. The agent must infer entirely from the name that this is the tag-assignment operation for subpage configs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_tags_listB
Read-only

Get tags of Subpage Configs

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on whether tags are returned for a single entity or all entities, no pagination or ordering behavior, no auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short phrase, front-loaded with the verb and free of filler. It is appropriately sized for a trivial lookup, though the odd capitalization of 'Subpage Configs' is a minor readability wart rather than padding.

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 zero-parameter read-only list endpoint with no output schema, the description barely does the job. Since there is no output schema, the description could have stated that the result is a collection of tag strings, but it leaves the return shape entirely implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The description correctly implies a simple, argument-free retrieval.

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 ('Get tags') and resource ('Subpage Configs'), which is enough to distinguish it from sub_page_configs_list or sub_page_configs_get. However, it never references the sibling it is most easily confused with, sub_page_configs_set_tags, so it stops short of full 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 indication of when to reach for this tool versus sub_page_configs_get (which likely also surfaces tags) or sub_page_configs_set_tags. No prerequisites, no exclusions, no alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sub_page_configs_updateC

Update subscription page config

NameRequiredDescriptionDefault
nameNo
uuidYes
configNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is known. The description adds no behavioral context such as whether the update is partial or full, what happens to existing config, required permissions, or effects on subscribers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and has no wasted words. However, it is under-specified for a tool with a required UUID and a free-form nested config object, so it is not appropriately sized given the tool's complexity.

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 a required UUID, an optional constrained name, and a nested config object, the description is far too sparse. Annotations cover the safety profile, but the description still omits parameter semantics and usage context, leaving significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for all three parameters. The description only repeats 'config' without explaining the required UUID, the name constraints (pattern, maxLength, minLength), or the nested config object structure, so it fails to compensate for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Update subscription page config'. This is clear enough to identify the mutation action, though it does not differentiate from sibling update tools like subscription_settings_update or sub_page_configs_create beyond the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as sub_page_configs_create, subscription_settings_update, or other config tools. There are no prerequisites, context, or exclusions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_infoC
Read-only

Get Subscription Info by Short UUID

NameRequiredDescriptionDefault
shortUuidYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds nothing on top of that - no auth requirements, no rate limits, no indication of whether this hits a public or admin endpoint, and no note about caching or freshness. For a bare read tool the annotations carry the safety profile, but the description contributes no additional 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?

A single, front-loaded fragment with no wasted words. It is efficient, though so terse that it leaves the reader without critical 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 lookup tool with no output schema and an undocumented parameter, the description should clarify what 'info' means (subscription URL, status, traffic, expiry) and which endpoint family this belongs to. None of that is present, so an agent has to guess at the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter. The description only repeats the parameter's intent ('by Short UUID'), which the schema property name shortUuid already conveys, and gives no format, length, or validation details for the UUID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb ('Get') and a resource ('Subscription Info') plus the lookup key ('by Short UUID'), so the basic operation is identifiable. However, 'Subscription Info' is vague about what is actually returned, and the sibling list contains near-identical names (subscriptions_get_by_short_uuid, subscription_request_history_list) with no differentiation offered.

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 when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description whether this is the right tool versus subscriptions_get_by_short_uuid or subscriptions_get_raw_by_short_uuid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_request_history_listA
Read-only

Get all subscription request history. Please note that the filters here are primarily intended for use by the frontend and rely on expensive operators such as LIKE under the hood. Misusing these filters may negatively impact the performance of your database.

NameRequiredDescriptionDefault
sizeNoNumber of results to return, no more than 1000
startNoStart index (offset) of the results to return, default is 0
filtersNo
sortingNo
filterModesNo
globalFilterModeNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description goes further by disclosing that filters run expensive LIKE operators and can degrade database performance, which is genuine behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, and the performance warning is a single efficiently-worded sentence. Slightly verbose but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description could explain the relationship to the filtered user-scoped sibling, but it does adequately convey the purpose and the main operational hazard. Pagination is covered by the schema's size/start descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (size and start documented; filters, sorting, filterModes, globalFilterMode not). The description partially compensates by explaining the cost and intent of the filters parameter, but sorting, filterModes, and globalFilterMode remain undocumented in both schema and description.

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 and resource ('Get all subscription request history'), so the agent knows this is a read-list operation. However, it does not distinguish itself from the closely-named siblings users_subscription_request_history or subscription_request_history_stats, leaving ambiguity about which list is which.

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 warns that the filters are 'primarily intended for use by the frontend' and that misuse hurts database performance, which gives implicit guidance to restrain filter use. But it offers no explicit when-to-use vs alternatives or direction to the stats sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_request_history_statsC
Read-only

Get subscription request history stats

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no indication of what period the stats cover, whether they are aggregated per user/node, or any freshness/rate behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is appropriately sized for a no-argument tool, though 'stats' as the terminal noun is the weakest element.

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 input parameters and no output schema, the description is the only place a caller could learn what the return value contains. It does not say what metrics are returned or over what range, which is a real gap for a stats endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate. Baseline 4 applies for a parameterless tool.

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?

States a verb ('Get') and a resource ('subscription request history stats'), so the domain is identifiable. But 'stats' is vague about what is actually returned, and it does not distinguish itself from the close sibling subscription_request_history_list, leaving the agent to guess the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no exclusions, and no mention of alternatives such as subscription_request_history_list. The agent gets no signal on when this is preferable to the list or system_stats variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_settings_getC
Read-only

Get subscription settings

NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing further — no note that this returns the subscription (end-user-facing) configuration rather than global app settings, and no indication of what 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short phrase with no wasted words. It is appropriately sized for a no-argument read tool, though it is so terse that it barely qualifies as content.

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, zero-parameter read with no output schema, the description is minimally viable but leaves the agent guessing at what settings are returned. A sentence naming the setting categories would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies. There is no parameter surface for the description to clarify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase states a verb ('Get') and a resource ('subscription settings'), so the operation is identifiable. However, it is essentially a restatement of the tool name with no added scope, and it does not distinguish itself from look-alikes such as settings_get or subscription_info.

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 call this versus alternatives such as subscription_settings_update or the general settings_get. The agent must infer from the name alone that this is the read counterpart to the update tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_settings_updateD

Update subscription settings

NameRequiredDescriptionDefault
uuidYes
hwidSettingsNo
customRemarksNo
responseRulesNo
randomizeHostsNo
isShowCustomRemarksNo
customResponseHeadersNo
serveJsonAtBaseSubscriptionNo

TDQS

D1.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so safety is covered, but the description adds nothing beyond that. For a mutation of global subscription behavior — including response rules that can block requests or drop sockets — the absence of any note about scope, permissions, or persistence 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but this is under-specification rather than economy — the single phrase is front-loaded yet carries no information an agent can act on. There is no wasted sentence because there is essentially only one.

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 8 parameters, nested objects, no output schema, and a global mutation surface, the description is far too thin. An agent cannot tell what the tool changes, what the required uuid identifies, or what the nested objects control.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 8 parameters, including deeply nested structures (hwidSettings, customRemarks, responseRules with conditions and responseModifications). The description names none of them, so it supplies zero compensation for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Update subscription settings" is essentially a restatement of the tool name with no added specificity. It does not indicate what subset of settings is affected or how this differs from the sibling subscription_settings_get, so an agent learns nothing beyond the verb+resource already encoded in the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/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, no prerequisites (e.g. that it operates on global subscription behavior rather than a single user), and no reference to alternatives. The agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_get_by_short_uuidB
Read-only

Get subscription by short uuid (protected route)

NameRequiredDescriptionDefault
shortUuidYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds only '(protected route)', which vaguely suggests authentication or authorization requirements without specifying them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded phrase with no filler. It is efficient, though the '(protected route)' parenthetical is vague and the overall brevity leaves gaps better addressed elsewhere.

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 lookup with annotations covering read-only safety, the definition is minimally viable. However, it omits any routing guidance among several similar subscription lookup siblings and leaves the parameter semantics unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single required string parameter shortUuid. The description only echoes 'short uuid'; it does not explain the expected format, origin, or constraints of a short UUID.

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 and resource ('Get subscription') and the lookup key ('short uuid'). This distinguishes it from sibling lookups by user ID or username, though it does not clarify how it differs from subscriptions_get_raw_by_short_uuid.

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?

Provides no guidance on when to use this tool versus subscriptions_get_raw_by_short_uuid, subscriptions_get_by_user_id, or subscriptions_get_by_username. The '(protected route)' note hints at access context but is not an explicit usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_get_by_user_idC
Read-only

Get subscription by User ID

NameRequiredDescriptionDefault
userIdYesUser ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing further: no behavior when the user has no subscription, no error semantics, no note on what the subscription payload contains. With the annotation bar already met, the description contributes no extra 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?

A single four-word sentence with the lookup key front-loaded and no filler. It is efficient, though the brevity borders on under-specification rather than disciplined 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?

For a one-parameter read tool with no output schema and annotations covering safety, the description is minimally adequate. It is missing routing context among the several subscriptions_get_* siblings and any note about lookup failure, but the low complexity keeps the gap modest.

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 single parameter is documented in the schema, so the baseline of 3 applies. The phrase 'by User ID' merely restates the parameter rather than adding format, validation, or lookup-key semantics beyond what the 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 specific verb (Get) and resource (subscription) plus the lookup key (User ID), which implicitly distinguishes it from the sibling lookups subscriptions_get_by_username and subscriptions_get_by_short_uuid. It never names those alternatives explicitly, so it stops short of full sibling 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 when-to-use guidance, no exclusions, and no mention of the sibling variants by username or short UUID. The agent must infer from the name alone that this tool applies when a numeric user ID is available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_get_by_usernameC
Read-only

Get subscription by username

NameRequiredDescriptionDefault
usernameYesUsername

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that: no case-sensitivity note, no error or not-found behavior, no indication of what subscription data 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded clause with no redundant wording, so it is efficient. It is arguably too terse to convey much beyond the name, but that is a completeness concern rather than a structural one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (one required parameter) and existing read-only annotations, the description is minimally adequate. However, with no output schema and no note on what the returned subscription contains or how this lookup differs from sibling subscription-get tools, an agent must 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 single 'username' parameter is already documented in the schema. The description merely restates the lookup key and adds no syntax, format, or constraint details beyond what the schema provides, making the baseline 3 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 and resource ('Get subscription') and the lookup key ('by username'), making the purpose unambiguous. It implicitly distinguishes itself from siblings like subscriptions_get_by_user_id and subscriptions_get_by_short_uuid through the key, but never names or contrasts with those alternatives explicitly.

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 sibling lookups such as subscriptions_get_by_user_id, subscriptions_get_by_short_uuid, or subscription_info. No prerequisites, exclusions, or context for selection are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_get_connection_keysB
Read-only

Get connection keys (base64 format) by user id

NameRequiredDescriptionDefault
userIdYesUser ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only safety profile is known without the description. The description adds useful context that the keys are returned in base64 format. It does not mention permissions, sensitivity, or error behavior, so with annotations carrying the main behavioral load, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. The essential action, resource, format, and key input are all stated immediately.

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-parameter read tool with full schema coverage, annotations covering safety, and no output schema, the description is nearly complete. It notes the base64 return format, but slightly more could be said about what the connection keys represent or any permission requirements.

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 single userId parameter is documented as 'User ID'. The description adds no syntax, range, or format details beyond the schema's exclusiveMinimum constraint. This matches the baseline of 3 when the schema fully documents parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Get connection keys (base64 format) by user id'. It clearly identifies the returned artifact and scoping input, distinguishing it from generic subscription fetchers. However, it does not explicitly name or contrast with sibling tools such as subscriptions_get_by_user_id or subscription_info, so it is clear but not fully sibling-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?

There is no explicit when-to-use or when-not-to-use guidance. The phrase 'by user id' implies it should be used when a user ID is available, but there are many sibling subscription and connection tools, and no alternative or selection condition is mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_get_raw_by_short_uuidD
Read-only

Get Raw Subscription by Short UUID

NameRequiredDescriptionDefault
shortUuidYes
withDisabledHostsNofalse

TDQS

D1.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally, but the description adds nothing beyond that: no return shape, no note on how 'raw' data differs from a normal subscription fetch, no output schema to fall back on.

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?

It is short, but that brevity is under-specification rather than conciseness. The single clause duplicates the tool name and carries no additional payload for the reader.

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 read tool with no output schema and completely undocumented parameters, the description does not supply what the structured fields omit. The key ambiguity, what 'Raw' returns versus the plain get, is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. The description says nothing about the format of shortUuid or what withDisabledHosts does (it is oddly typed as a string with default 'false'), so the agent must guess at both the identifier shape and the flag's effect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description merely restates the tool name: 'Get' + 'Raw Subscription' + 'by Short UUID'. It adds no information about what 'Raw' means or how this differs from the sibling subscriptions_get_by_short_uuid, which appears to differ only by that qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives named, and no distinction drawn from the three other subscription retrieval siblings (by user id, by username, raw vs non-raw). The agent is left to infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscriptions_listC
Read-only

Get all subscriptions

NameRequiredDescriptionDefault
sizeNoNumber of subscriptions to return, no more than 500
startNoStart index (offset) of the users to return, default is 0

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered, and the description adds nothing beyond the trivial 'all'. It says nothing about the unfiltered admin-wide scope, pagination behavior, or ordering, which is the meaningful behavioral context left unanswered for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with nothing extraneous, which is well front-loaded. However, it is under-specified rather than genuinely concise, offering no detail that would earn the terseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read-only list tool with full schema coverage and no output schema, the essentials to call it are present. It still omits sibling differentiation and any statement of scope or return shape, leaving it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'size' and 'start' are fully documented in the schema, giving the baseline of 3. The description contributes no additional parameter meaning such as default ordering or how offset interacts with the default page size.

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?

States a verb and resource ('Get all subscriptions'), so the basic operation is identifiable, and the word 'all' hints at unfiltered listing. However, it draws no boundary against siblings such as subscriptions_get_by_user_id or subscriptions_get_by_username, so an agent cannot tell from the text alone why it would pick this tool over those.

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 when-to-use or when-not-to-use guidance, no prerequisite information, and no named alternative. The description merely asserts existence of the operation without helping the agent choose it in a crowded sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_createC

Create subscription template

NameRequiredDescriptionDefault
nameYes
templateTypeYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing: no statement of required permissions, whether the name must be unique, what defaults apply to an unconfigured template, or what the call returns. For a creation tool it is essentially a restatement of the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded fragment with zero padding, so there is no waste to cut. However, brevity here is under-specification rather than economy: at four words it cannot carry the two undocumented parameters or the mutation's side effects.

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?

A mutating tool with two required parameters at 0% description coverage, no output schema, and a large sibling set that needs disambiguation. The definition leaves the agent to guess at template-type semantics and post-creation steps without any compensating text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description documents neither parameter. The agent gets no meaning for 'name' (uniqueness, name-vs-display-name, the regex/max-length intent) or for 'templateType' (what XRAY_JSON vs CLASH vs SINGBOX mean for downstream rendering). Structured schema gives valid syntax only, not 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?

States a clear verb+resource pair ('Create subscription template') that an agent can act on immediately. It does not distinguish itself from siblings like subscription_templates_update, subscription_templates_reorder, or sub_page_configs_create, all of which are adjacent operations in the same 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 create a template versus updating or reordering one, no prerequisites, no mention of tag/link steps (subscription_templates_set_tags) that typically follow creation. The agent must infer the workflow entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_deleteC
Destructive

Delete subscription template

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered externally. The description adds nothing beyond that — it does not say whether deletion is reversible, whether templates in use are affected, or what happens to associated tags.

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?

Three words, front-loaded with the verb and resource, with no filler. It is efficiently sized, though the brevity is partly under-specification rather than disciplined concision.

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, non-reversible mutation with no output schema and an undocumented required parameter, the description should say more about effect and irreversibility. The annotations cover the safety flag but not the operational consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description never mentions the uuid parameter, its format, or that it identifies the template to remove. The single required parameter is undocumented in both places.

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 resource (subscription template), which cleanly distinguishes it from siblings like subscription_templates_create, update, and set_tags. However, it adds no detail about scope or effect, so it sits below the top band.

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 versus subscription_templates_update or other sibling mutations, and no prerequisites or warnings stated. The agent is left to infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_getC
Read-only

Get subscription template by uuid

NameRequiredDescriptionDefault
uuidYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on what is returned, error behavior for unknown uuids, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The phrase is short, front-loaded, and free of filler. It is a fragment rather than a full sentence, but nothing is wasted for such a simple operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool whose annotations already cover the safety profile, the description is minimally adequate. However, with no output schema it does not hint at what a returned template contains, leaving a small but real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter and 0% schema description coverage, the description must carry the load. It only says 'by uuid', which merely restates the parameter name; it adds no format, source, or semantics beyond what the schema field already shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Get) and resource (subscription template) plus the key selector (by uuid), which distinguishes it from the sibling subscription_templates_list. It is clear but does not explicitly name the alternative, so it falls short of 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 when-to-use guidance, no prerequisites, and no mention of subscription_templates_list as the alternative for retrieving templates. The only hint is the implied need for a uuid, which the caller must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_listB
Read-only

Get all subscription templates (wihout content)

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read profile is covered structurally. The description adds genuinely useful behavior beyond the annotations: it returns templates without their content payload. It still omits ordering/pagination details, so it lands at an adequate 3.

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 short phrase, effectively front-loaded with no wasted words. The only blemish is the typo 'wihout', otherwise near-ideal conciseness for a simple list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter list tool with annotations covering safety and no output schema, the description supplies the one non-obvious fact (content is excluded). Nothing critical is missing, though it could note ordering or empty-result behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is nothing to document and the schema/semantics burden is nil. Baseline 4 applies; the description adds no parameter detail because none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get/list) and resource (subscription templates), which distinguishes it from the singular sibling subscription_templates_get. The '(without content)' scoping note further clarifies what is returned, though the misspelling 'wihout' and lack of explicit contrast with sibling list/get tools keep 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?

No explicit when-to-use guidance or alternatives are named. An agent must infer from the name alone that this lists all templates versus subscription_templates_get for a single one. The 'without content' hint is the only usage-adjacent signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_reorderC

Reorder subscription templates

NameRequiredDescriptionDefault
itemsYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not disclose whether omitted templates are left untouched, whether positions are renumbered globally, or what happens on partial input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words, front-loaded and free of waste, but the brevity is under-specification rather than discipline. It is appropriately scoped as a one-liner but fails to earn its space with any operational detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, 0% schema description coverage on a nested-array payload, and no annotations detail, the description leaves the agent without enough to construct a correct call. A sentence on payload shape and ordering semantics is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not compensate. The single 'items' parameter is a nested array of uuid/viewPosition pairs whose meaning (absolute vs relative position, required completeness of the list) is left entirely unexplained by both schema and description.

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 ('Reorder') and resource ('subscription templates'), so the operation is unambiguous. It does not, however, differentiate itself from the many other *_reorder siblings (nodes_reorder, hosts_reorder, squads_reorder, sub_page_configs_reorder) beyond the resource noun, and gives no hint at what ordering means here.

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 when-to-use guidance, no prerequisite (e.g. that existing templates must be known), and no mention of alternatives. The agent must infer everything about invocation context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_set_tagsC

Set tags of Subscription Template

NameRequiredDescriptionDefault
tagsYes
uuidYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds no behavioral context beyond that, notably failing to state whether setting tags replaces existing tags or whether specific permissions are required. It is not misleading, but it is minimally informative.

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 phrase with no wasted words. It is appropriately short for a simple set operation, though its extreme brevity leaves important details unstated.

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 two required parameters, no output schema, and minimal annotations, the description is too sparse. It does not explain how the target template is identified via uuid or whether the tags array replaces or appends to existing tags.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate by explaining parameter meaning. It only mentions 'tags' as a concept and never explains the required uuid, the tag format constraints, or the maxItems limit. It adds no semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: setting tags on a Subscription Template. It is clear what operation is performed, but it does not explicitly distinguish this from the sibling subscription_templates_update, which may also affect tags.

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 subscription_templates_update or subscription_templates_tags_list. The operation is implied, but no context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_tags_listB
Read-only

Get tags of Subscription Templates

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the description need not restate it. The description adds no further behavioral context (return shape, pagination, scoping), but for a zero-parameter read 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 short sentence with the resource front-loaded and no filler. Nothing can be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description would ideally say what the returned tags look like (names, ids, or tag objects) and whether they cover all templates. It leaves those questions open, which is acceptable only because the operation is trivial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline of 4 applies. Schema description coverage is reported as 100% for an empty property set, and there is nothing for the description to clarify further.

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 (Get) and resource (tags of Subscription Templates), so an agent can distinguish it from the many other *_tags_list siblings by resource. It does not, however, say whether tags are returned for all templates or a specific one, leaving some ambiguity a one-word clarification would have removed.

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 when-to-use guidance, no mention of the complementary subscription_templates_set_tags, and no statement of prerequisites or filtering context. The agent must infer its role from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscription_templates_updateC

Update subscription template

NameRequiredDescriptionDefault
nameNo
uuidYes
templateJsonNo
encodedTemplateYamlNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the description does not contradict them and the safety profile is partly covered. However, the description adds no behavioral context beyond 'update'—it does not say whether the update is partial or full, what happens to omitted fields, what templateJson and encodedTemplateYaml are for, or what the operation returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, so it is concise and not redundant. However, it essentially restates the tool name and offers no useful structure or front-loaded detail beyond the resource name.

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 a required uuid, a nested object parameter, and 0% schema description coverage, the description is insufficient. Annotations cover the non-destructive write safety profile, but the description omits update semantics, parameter meaning, and any indication of return behavior or partial-update rules.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no parameter semantics at all. It does not explain uuid, name, templateJson, or encodedTemplateYaml, leaving all four parameters undocumented in both the schema and the description.

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 and resource: 'Update subscription template'. It is not a tautology and an agent can identify the target entity. However, it does not differentiate from sibling operations such as subscription_templates_set_tags or subscription_templates_reorder, which also modify a template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like subscription_templates_set_tags, subscription_templates_reorder, or create. There are no prerequisites, exclusions, or context cues, leaving usage entirely implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_bandwidth_statsC
Read-only

Get Bandwidth Stats

NameRequiredDescriptionDefault
tzNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no statement of what data is returned, whether it is aggregated or realtime, what time window applies, or what the tz parameter affects. With annotations carrying the safety burden the bar is lower, but zero added context still falls short.

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 short, but this is under-specification rather than conciseness. A four-word fragment cannot be considered front-loaded when there is effectively no content to load.

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?

No output schema exists, so the description carries the burden of explaining what a 'bandwidth stats' response contains, and it says nothing. For a stats endpoint in a crowded bandwidth/system_stats family, the description should at minimum state the entity scope, time range, and the effect of tz.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (tz) with 0% schema description coverage, and the description does not mention it at all. The agent cannot tell whether tz expects an IANA name, an offset, or a default behavior when omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase names a verb and resource ('Get Bandwidth Stats'), which is clearer than a bare tautology, but it gives no scope: bandwidth for what entity, over what period, at what granularity. Sibling tools like bandwidth_nodes_usage, bandwidth_user_usage and bandwidth_squad_usage make the ambiguity worse, since the description offers nothing to distinguish this tool from any of them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no indication of what separates this from the many bandwidth_* and system_stats* siblings, and no prerequisites or exclusions. The agent must guess based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_configurationB
Read-only

Get Remnawave Configuration. Returns some of the configuration values.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that the response is a partial subset of configuration values ('some of') — but says nothing about which values, why the subset exists, or whether it requires elevated auth.

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?

Two short sentences, front-loaded with the action. The second sentence carries real information (partial return), though it partly restates the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no parameters, the description is the only place the return contents could be described, and 'some of the configuration values' does not say what those values are or how they relate to settings_get. Adequate for a no-arg read, but the undocumented return shape is a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate; schema coverage is moot. No misleading parameter language is present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb and resource ('Get Remnawave Configuration'), but 'configuration' is underspecified and the second sentence hedges ('some of the configuration values'), leaving the exact scope unknown. It never distinguishes itself from the close sibling settings_get, which an agent could easily pick instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the obvious alternative settings_get or the nearby system_metadata/system_health tools. The agent is left to infer the boundary from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_generate_x25519B
Read-only

Generate 30 X25519 keypairs

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the fixed count of 30 keypairs, which is useful, but it does not explain whether generated keys are persisted, what format they are returned in, or any rate/expense constraints.

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 communicates the essential action, resource, and quantity immediately.

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 no-parameter, no-output-schema tool, the description covers the action and quantity but does not describe the return value structure (e.g., whether keypairs are returned as public/private pairs or in a specific encoding). The annotations cover safety, but return semantics are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the baseline is 4. The description clarifies that the count is fixed at 30, which is meaningful since users cannot configure it, but there are no parameters whose semantics need further explanation.

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 (Generate) and resource (X25519 keypairs) with a fixed quantity (30), so the tool's purpose is immediately clear. It does not differentiate itself from the sibling keygen_get tool, which prevents 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?

There is no explicit guidance on when to use this tool versus alternatives such as keygen_get. The description only states what it does, leaving the agent to infer appropriate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_healthC
Read-only

Get Remnawave Health

NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing behavioral beyond that: no indication of what health is checked, whether it probes dependencies, or what the response conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single short, front-loaded phrase with no filler, which suits a zero-parameter tool. However, the brevity crosses into under-specification rather than genuine concision.

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?

No output schema exists, so the description should describe what the health check returns (a status flag, component breakdown, etc.) and it does not. An agent cannot tell whether the result is a boolean, a summary object, or detailed diagnostics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to clarify. Baseline 4 applies for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get Remnawave Health" essentially restates the tool name (system_health) with no added specificity about what "health" covers. It gives no way to distinguish this from siblings like system_stats, system_metadata, or auth_status, which all sound like system-state reads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no mention of alternatives, and no prerequisites. The word "Health" faintly implies a monitoring/diagnostic use case, but nothing tells the agent when to pick this over system_stats or the various system_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_http_statsC
Read-only

Get HTTP Stats

NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds nothing else: no indication of what HTTP metrics are returned, what time window applies, whether it reflects live or cached counters, or whether it requires elevated permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single three-word sentence with no waste, so it is certainly concise and front-loaded. But at this length it is under-specified rather than efficient — brevity here buys the reader nothing actionable.

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 parameters, the description carries the entire burden of explaining what the caller receives. "Get HTTP Stats" does not say whether the result is request counts, latency percentiles, status-code breakdowns, or per-time-bucket series, leaving the agent unable to predict the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing further the description could clarify about inputs, and schema coverage is 100%.

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?

"Get HTTP Stats" states a verb (get) and a resource (HTTP stats), which is minimally viable. However, the resource is ambiguous in a sibling set that already contains system_stats, system_stats_recap, system_stats_digest, and system_bandwidth_stats; nothing here tells the agent how 'HTTP stats' differs from those.

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 when-to-use guidance, no exclusions, and no mention of alternatives, despite a crowded family of stats tools (system_stats, system_stats_recap, system_stats_digest, system_bandwidth_stats). The agent must guess which stats endpoint to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_metadataA
Read-only

Get panel version and build information

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context (auth requirements, caching, whether the panel must be reachable), so it sits at the baseline for an annotation-covered read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. Nothing to trim and nothing is buried.

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 informational tool with no output schema, the description covers enough for an agent to call it correctly. Only minor gaps remain around when it is preferable to the other system_* read tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so there is nothing for the description to disambiguate. The schema is trivially complete for a no-arg tool, matching the 0-param baseline of 4.

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 and resource ('Get panel version and build information'), which distinguishes it from the diagnostic/stat siblings such as system_stats, system_health and system_configuration. It's clear what it returns, though it does not explicitly name the sibling boundaries.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as system_health or system_configuration. The agent must infer that this is the version/build lookup from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_nodes_metricsC
Read-only

Get Nodes Metrics

NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered, but the description adds nothing beyond that: no scope (all nodes vs. one), no aggregation window, no rate/limit notes. It is a pure restatement of the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words, front-loaded with verb and resource, with zero waste — but the brevity here reflects under-specification rather than disciplined conciseness, since it conveys almost no information.

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 parameters, the description carries the full burden of telling the agent what is returned, and it does not. It omits metric scope, granularity, and response shape for a metrics endpoint surrounded by overlapping statistics tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema baseline of 4 applies; there is no parameter syntax for the description to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get Nodes Metrics" essentially restates the tool name (system_nodes_metrics) with no added specificity. It doesn't indicate which metrics (CPU, bandwidth, connections) or how it differs from close siblings like system_nodes_statistics, nodes_get, or bandwidth_nodes_usage.

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 when-to-use guidance, no exclusions, and no mention of alternatives despite a dense sibling set covering node statistics, bandwidth, and system stats. The agent must guess when this tool is preferable to system_nodes_statistics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_nodes_statisticsC
Read-only

Get Nodes Statistics

NameRequiredDescriptionDefault
tzNo

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds nothing beyond that — no indication of aggregation scope, time window, cost, or what the statistics represent.

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 single phrase is not wasteful, but it is under-specified rather than concise — it conveys no actionable information beyond the title-like name.

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 statistics tool with no output schema to explain return values, the description should describe what metrics are returned and the effect of the tz parameter. As written, an agent cannot predict the response shape or confidently invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter (tz) with 0% schema description coverage, and the description never mentions it or its timezone semantics. Since the parameter is fully undocumented in both schema and description, the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get Nodes Statistics" essentially restates the tool name (system_nodes_statistics) rather than stating a distinct verb+resource scope. It gives no hint of what statistics are returned or how they differ from siblings such as system_nodes_metrics, nodes_list, or system_stats.

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 neighboring read tools (nodes_get, nodes_list, system_nodes_metrics, hwid_stats). The agent is left to infer applicability entirely on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_srr_matcherB
Read-only

Validate a subscription response rules (SRR) config against the panel matcher. The body is the full responseRules config object, not an input string.

NameRequiredDescriptionDefault
responseRulesYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing it as a safe read operation. The description adds that it validates the config against the panel matcher, implying a dry-run check, but it does not disclose what is validated, what the result looks like, or any failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste. The validation purpose is front-loaded, followed immediately by the critical input-format clarification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the nested schema and no output schema, the description should explain what a validation call returns (e.g., a boolean, error list, or validation report) and ideally clarify what the 'panel matcher' entails. These omissions leave an agent unsure about the outcome of the tool call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the burden for the single parameter. It explicitly states 'The body is the full responseRules config object, not an input string,' which correctly sets expectations for the responseRules parameter and prevents passing a string. The nested schema itself provides the structure, so this is sufficient.

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 'Validate' and resource 'subscription response rules (SRR) config' with the context 'against the panel matcher'. It is clear enough to distinguish from most siblings, though 'panel matcher' is not defined and no sibling is named as 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 on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only clarifies the input format, which is parameter semantics rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_statsD
Read-only

Get Stats

NameRequiredDescriptionDefault
tzNo

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read profile is covered. The description adds nothing beyond that: it does not say what statistics are returned, what time window or scope applies, or whether the result is cached/expensive. "Get" is at least consistent with the annotation, so no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short, but that is under-specification rather than conciseness. Two words with no front-loaded scope or structure convey essentially nothing.

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?

No output schema, no annotations covering scope, and one undocumented parameter. For a stats tool whose whole value depends on knowing what is measured and over what range, the definition is completely inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (tz) with 0% schema description coverage and no explanation in the description. Since 0 params is not the case, the description cannot claim the baseline 4, and it gives the agent no idea what tz controls (input timezone vs. output timezone) or its expected format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get Stats" is essentially a restatement of the tool name system_stats; it names no specific resource, metric domain, or scope. It also does nothing to distinguish it from close siblings like system_stats_recap, system_stats_digest, system_http_stats, and system_bandwidth_stats.

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 when-to-use guidance, no prerequisites, and no routing to any alternative. With five-plus sibling stats tools in the namespace, the absence of any disambiguation leaves the agent guessing which stats endpoint to call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_stats_digestA
Read-only

Get Stats Digest. Aggregated statistics for a datetime range [start, end): created and expired users, total traffic, traffic spent by users created within the range and new HWID devices. Per-user traffic history is stored with daily granularity (UTC), so the "traffic by new users" metric snaps to whole days at the range edges.

NameRequiredDescriptionDefault
endYesEnd of the range, ISO 8601 datetime with timezone (e.g. 2026-07-16T00:00:00Z). Exclusive.
startYesStart of the range, ISO 8601 datetime with timezone (e.g. 2026-07-15T00:00:00Z). Inclusive.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, non-destructive safety profile, so the bar is lower, and the description adds real behavioral context beyond them: daily (UTC) storage granularity and the consequence that the 'traffic by new users' metric snaps to whole days at range edges. It omits return shape, but no output schema exists so that duty is unclear.

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?

Front-loaded with the verb and resource, then the returned metrics, then the caveat. Every sentence carries information, though the daily-granularity caveat is a touch long-winded for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, two-parameter stats tool with full schema coverage and no output schema, the description covers inputs, outputs, and the one non-obvious behavioral quirk. The remaining gap is sibling differentiation among the several system_stats_* 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% and both parameters already document ISO 8601 format and inclusive/exclusive semantics; '[start, end)' in the description merely restates that. Baseline 3, with no added syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get Stats Digest') and enumerates exactly which aggregates it returns (created/expired users, total traffic, traffic by new users, new HWID devices). Clear on its own, but it never distinguishes itself from close siblings like system_stats, system_stats_recap, or system_bandwidth_stats, leaving overlap ambiguous.

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 only implied: the metric list hints at when an agent would want this (a digest of user/traffic/HWID activity over a range), but there is no explicit when-to-use, no prerequisites, and no routing to/away from the many system_stats_* siblings. Adequate but leaves the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_stats_recapD
Read-only

Get Recap

NameRequiredDescriptionDefault

No parameters

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known, but the description adds nothing on top of that. It does not disclose what data the recap returns, its time window, or its relationship to other stats endpoints.

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?

Two words are not conciseness here but under-specification; the text is too sparse to convey the tool's role. Nothing is front-loaded because there is nothing to front-load.

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?

With no output schema and no explanation of the recap's contents or period, the definition leaves an agent unable to predict what it will get back or when it is the right choice among the numerous stats siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get Recap" restates the tool name with a generic verb and an ambiguous resource. It gives no indication of what a "recap" contains or how it differs from siblings such as system_stats, system_stats_digest, or system_http_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the many other stats tools in the sibling list. No context, prerequisites, or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_accessible_nodesA
Read-only

Which nodes a user can actually reach: per node — config profile, active squads and their inbounds. Handy for debugging squad/inbound routing.

NameRequiredDescriptionDefault
userIdYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read profile is covered. The description adds the per-node output shape but says nothing about auth requirements, scope limits, or whether the result reflects live vs cached routing.

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?

Two sentences, front-loaded with the answer (which nodes), then the return breakdown, then a short usage cue. The colon-and-em-dash listing is terse but dense and waste-free; no padding sentences.

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?

No output schema exists, and the description partially compensates by enumerating the returned per-node fields (config profile, squads, inbounds). It still omits result container format and pagination, but for a single-parameter read tool this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the userId semantics. It only implies them via "a user can actually reach" and adds no format, identifier source, or validation detail beyond what the schema already shows (positive number, 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?

States a specific verb/resource: which nodes a given user can actually reach, and enumerates what is returned per node (config profile, active squads, inbounds). It does not name the closely related reverse-direction sibling squads_accessible_nodes, so the agent must infer the distinction from the wording alone.

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?

"Handy for debugging squad/inbound routing" gives a soft usage context, but there is no explicit when-to-use/when-not or pointer to alternatives such as users_get, squads_accessible_nodes, or metadata_node_get. Usage is implied rather than instructed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_all_extend_expirationA
Destructive

Extend expiration date for EVERY user by days

NameRequiredDescriptionDefault
extendDaysYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, covering the safety profile. The description adds the important scoping trait that this affects EVERY user, but does not describe side effects, permission requirements, reversibility, or behavior for users without subscriptions.

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 wasted words. The scope and action are 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 one-parameter bulk operation with annotations covering the destructive nature and no output schema, the description states scope, action, and parameter meaning adequately. It could be stronger with explicit warning that this affects every user irreversibly, but the annotations already signal destructive 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?

Schema description coverage is 0%, so the description must carry the parameter explanation. 'by days' clarifies that the integer extendDays value is a count of days to add, but adds no constraints, default, or format beyond the schema's type and minimum.

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 ('Extend expiration date'), resource ('EVERY user'), and modifier ('by days'). The all-caps scope explicitly distinguishes it from the selected-subset sibling users_bulk_extend_expiration and the single-user users_extend_expiration.

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 scope statement: use this when the intent is to extend expiration for all users, not a subset. However, no alternative tool is named, no when-not guidance is given, and no preconditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_all_reset_trafficA
Destructive

Reset used traffic for EVERY user

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered by structured data. The description adds the meaningful scoping fact that this affects every user without exception, but it says nothing about irreversibility, permissions required, or throttling for what is effectively an irreversible mass 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?

A single short sentence with zero filler and the scope qualifier front-loaded after the verb. It is efficient, though arguably undersized for a destructive all-users operation where a brief caveat would be worth the 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?

With no parameters and no output schema, the structural surface is minimal, but the operation is highly destructive at maximum blast radius. The description covers what changes and the scope but omits any caution about irreversibility or confirmation, leaving it only minimally adequate for a tool that affects every user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics burden to carry; the baseline for a no-param tool is 4. The description appropriately avoids inventing parameter discussion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reset), resource (used traffic), and an unambiguous scope qualifier (EVERY user). The 'EVERY user' wording is exactly what distinguishes it from sibling users_reset_traffic (single) and users_bulk_reset_traffic (selected subset), so an agent can route without opening any 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?

Usage is only implied through the scope word 'EVERY': the agent can infer this is the all-users variant rather than the targeted variant. However, there is no explicit when-to-use/when-not-to-use statement, no warning about the scale of impact, and no named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_all_updateC
Destructive

Update EVERY user at once

NameRequiredDescriptionDefault
tagNo
emailNo
statusNo
expireAtNoExpiration date: 2025-01-17T15:38:45.065Z
telegramIdNo
descriptionNo
hwidDeviceLimitNo
trafficLimitBytesNoTraffic limit in bytes. 0 - unlimited
trafficLimitStrategyNoAvailable reset periods

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered externally. The phrase 'EVERY user at once' reinforces breadth, but the description adds nothing annotation-independent: no word on irreversibility, whether omitted fields are cleared on all users, or blast-radius confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no padding, which is structurally clean, but it is too thin for a nine-parameter global mutation — the brevity here reads as under-specification rather than efficiency.

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?

A destructive, whole-tenant bulk mutation with nine parameters, no output schema, and no warnings about irreversibility or omitted-field behavior. Given the complexity and the low schema coverage, an agent cannot safely invoke this from the definition provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Nine parameters with only 33% schema description coverage, and the description provides zero parameter information — it never names tag, status, expireAt, trafficLimitBytes, or any other field. For a low-coverage schema the description must compensate, and it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('user') with an explicit scope qualifier ('EVERY ... at once'), which distinguishes it from the sibling users_bulk_update that presumably acts on a subset. It does not say which fields are affected, but the all-users scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over users_bulk_update, users_update, or users_bulk_delete_by_status, and no prerequisites or caution about applying a change globally. The agent is left to infer the selection criteria from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_deleteC
Destructive

Bulk delete users by User IDs

NameRequiredDescriptionDefault
userIdsYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write operation. The description adds no further behavioral context such as permanence, cascading effects, authorization requirements, or batch semantics beyond the word 'Bulk'.

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 operation and its input.

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 mutation with no output schema, the description is incomplete. It does not warn about irreversible deletion, specify authentication requirements, describe whether failures are partial or atomic, or explain the maximum batch size, all of which an agent needs for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for the undocumented userIds parameter. It says 'by User IDs', which clarifies that numeric user IDs are expected, but adds little beyond the schema's property name and omits the array nature, item type, and the min/max limits already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Bulk delete') and resource ('users') plus a selection mechanism ('by User IDs'), which implicitly distinguishes it from users_delete and users_bulk_delete_by_status. However, it does not name or explicitly contrast with any sibling tool, so it falls short of the 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?

The description gives no guidance on when to use this tool versus users_delete (single deletion) or users_bulk_delete_by_status (status-based bulk deletion). It also omits any prerequisites, warnings, or context about appropriate scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_delete_by_statusB
Destructive

Delete ALL users that have the given status

NameRequiredDescriptionDefault
statusYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description's capitalized 'ALL' usefully emphasizes the unbounded scope of the delete, but it says nothing about irreversibility, cascade effects on subscriptions/traffic history, or permissions required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the scope qualifier appears immediately after the verb.

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, no-output-schema mass-delete tool this is adequate but thin: it omits reversibility, whether the operation is bounded to a workspace, and any confirmation/response semantics an agent would want before invoking 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 description coverage is 0%, but the single parameter is a self-documenting enum (ACTIVE/DISABLED/LIMITED/EXPIRED), so meaning is largely inferable. The description adds nothing about what each status implies for deletion eligibility.

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?

Specific verb (delete), resource (users), and scope qualifier ('ALL users that have the given status'), which clearly separates it from users_bulk_delete (a named set) and users_delete (single user). It stops short of explicitly naming those siblings, so the distinction must be inferred from 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 when-to-use guidance, no mention of the alternative bulk-delete tools for specific users, and no warning that this is a mass operation requiring confirmation. The agent gets no routing or precondition information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_extend_expirationC

Extend expiration date for specified users by days

NameRequiredDescriptionDefault
userIdsYes
extendDaysYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing further — no permission requirements, no atomicity/partial-failure behavior, no note that the change is additive (an increment) rather than an absolute set. It essentially restates the tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler. No redundancy, no restating of the title beyond what is needed to convey scope.

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 multi-user mutation tool with no output schema and an undocumented schema, the description is too thin. It omits the batch limit, partial-success behavior for up to 500 users, and what distinguishes it from the single-user and all-user variants.

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 0%, so the description must compensate. 'By days' usefully clarifies that extendDays is a delta rather than a target date, which is nontrivial. But it says nothing about the 1-500 userId batch cap or the signed/positive-only semantics of extendDays.

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 (extend) and resource (expiration date), scoped to 'specified users', so the agent knows this is a targeted bulk mutation. However it never distinguishes itself from the close siblings users_extend_expiration (single user) and users_bulk_all_extend_expiration (all users), leaving the agent to infer the boundary.

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 when-to-use guidance, no mention of prerequisites, and no reference to any alternative. With three near-identical expiration tools in the sibling list, the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_reset_trafficC

Bulk reset traffic users by User IDs

NameRequiredDescriptionDefault
userIdsYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so safety is partly covered, but the description adds nothing beyond them: it does not say what 'reset traffic' actually does to counters, whether it is reversible, or that writes only apply to the listed users. For a mutation tool this is a thin 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the scope qualifier is placed at the end. It is terse to the point of under-specification rather than efficiently informative.

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 bulk mutation with no output schema and no annotation detail, the description should explain the effect of the reset and the batch limits. Neither is present, leaving the agent unable to predict outcomes or size requests confidently.

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?

One parameter with 0% schema description coverage, so the description must compensate. It does identify the parameter semantically ('by User IDs', plural implying an array), but omits the numeric ID type and the 1-500 item bounds enforced by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (bulk reset traffic) plus the scoping mechanism (by User IDs), which weakly separates it from users_bulk_all_reset_traffic. However it never names the single-user sibling users_reset_traffic, so the distinction is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no named alternatives despite three closely related siblings (users_reset_traffic, users_bulk_all_reset_traffic, users_bulk_update). The agent must infer selection rules from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_revoke_subscriptionC

Revoke users subscription by User IDs

NameRequiredDescriptionDefault
userIdsYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds nothing about what revoking does (access termination, reversibility, notification, whether the subscription record is deleted) or about batch failure behavior. For a mutation that revokes subscriptions across up to 500 users, this leaves the effect semantics entirely unspecified.

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 tight sentence with the verb and input front-loaded and no filler. It is efficient but so terse that it omits information the tool needs, which is an under-specification issue rather than a conciseness win.

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 bulk mutation with no output schema, no parameter descriptions, and only minimal annotations, the description should at least cover scope limits, partial-failure semantics, or reversibility. None of that is present, so an agent cannot predict the outcome of calling 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 description coverage is 0%, but there is only one parameter and the description explicitly names the input, 'User IDs', which maps to the userIds array. It adds no format constraints beyond that; the 1-500 item bounds and numeric item type come only from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Revoke) and resource (users' subscription) with the batch scope implied by the name and 'by User IDs' phrase, so it is distinguishable from the singular sibling users_revoke_subscription. It stops short of explicitly saying it operates on many users at once, which the name carries but the description does not reinforce.

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 indication of when to use this bulk variant versus users_revoke_subscription, and no prerequisites or exclusions are given. The agent must infer from the name alone that this is the multi-user form.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_updateC

Bulk update users by User IDs

NameRequiredDescriptionDefault
fieldsYes
userIdsYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell the agent this is a write that is not flagged destructive. The description adds nothing about partial-failure semantics for a 500-ID batch, whether unspecified fields are preserved, permission requirements, or what the response contains. For a bulk mutation with zero annotation depth, this is a substantial 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?

A single front-loaded sentence with no filler, so nothing is wasted. The brevity is appropriate in form but is achieved by omission rather than economy.

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?

A 500-item batch mutation with a nested, multi-field update object and no output schema needs more than six words. Missing batch limits, partial-success behavior, and field-update semantics make this inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and does not. 'By User IDs' names the userIds array but nothing explains the 'fields' object contract — that it is a partial update, which fields are accepted, or how the nested values interact with the enum-typed status/trafficLimitStrategy.

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?

Clear verb+resource ('bulk update users') with a scope qualifier ('by User IDs') that implicitly separates it from users_bulk_all_update. However, it never distinguishes itself from the single-user users_update or the specialized siblings users_bulk_update_squads / users_bulk_reset_traffic, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of prerequisites or alternatives despite ~10 sibling bulk user tools. The agent must guess whether this covers squad assignment or traffic resets (which have dedicated tools) or whether those fields belong here via the generic 'fields' object.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_bulk_update_squadsC

Bulk update users internal squads by User IDs

NameRequiredDescriptionDefault
userIdsYes
activeInternalSquadsYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state readOnlyHint=false and destructiveHint=false, which is a weak baseline for a bulk write. The description does not disclose the critical behavior: whether activeInternalSquads replaces the user's existing squad set or appends to it, nor what happens to users not found in the ID list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though the terseness leaves real gaps that other dimensions penalize rather than this one.

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 bulk mutation over up to 500 users with two required, wholly undescribed parameters, no output schema, and only generic annotations, the description is too thin. An agent cannot call this safely without knowing the replace-vs-append semantics and the batch size limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the parameter burden. It alludes to both parameters ('by User IDs', 'internal squads') but adds no format, no hint about the 500-item cap, and no clarification that the UUID array is the definitive squad membership list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb (bulk update) and a resource (users' internal squads) plus the keying dimension (User IDs), so the basic intent is recoverable. However, the phrase 'users internal squads' is grammatically muddled and, unlike siblings such as squads_add_many_users or users_bulk_update, it does not state how the squads are modified (set/replace vs add), leaving the operation's exact semantics fuzzy.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. With closely related siblings like squads_add_many_users, squads_remove_many_users, users_bulk_update, and users_bulk_all_update in the same namespace, the agent gets no signal about which tool covers which scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_createA

Create a user. Credentials (vlessUuid/ssPassword/trojanPassword/shortUuid) are generated by the panel unless given — pass them explicitly for service users.

NameRequiredDescriptionDefault
tagNoOptional. User tag for categorization. Max 16 characters, uppercase letters, numbers and underscores only.
emailNoOptional. User email address. Must be a valid email format.
statusNoOptional. User account status. Defaults to ACTIVE.ACTIVE
expireAtYesAccount expiration date. Required. Format: 2025-01-17T15:38:45.065Z
usernameYesUnique username for the user. Required. Must be 3-36 characters long and contain only letters, numbers, underscores and dashes.
createdAtNoOptional. Account creation date. Format: 2025-01-17T15:38:45.065Z
shortUuidNoOptional. Short UUID identifier for the user.
vlessUuidNoOptional. UUID for VLESS protocol. Must be a valid UUID format.
ssPasswordNoOptional. Password for Shadowsocks protocol. Must be 8-32 characters.
telegramIdNoOptional. Telegram user ID for notifications. Must be an integer.
descriptionNoOptional. Additional notes or description for the user account.
trojanPasswordNoOptional. Password for Trojan protocol. Must be 8-32 characters.
hwidDeviceLimitNoOptional. Maximum number of hardware devices allowed. Must be a positive integer.
externalSquadUuidNoOptional. External squad UUID.
trafficLimitBytesNoOptional. Traffic limit in bytes. Set to 0 for unlimited traffic.
lastTrafficResetAtNoOptional. Date of last traffic reset. Format: 2025-01-17T15:38:45.065Z
activeInternalSquadsNoOptional. Array of UUIDs representing enabled internal squads.
trafficLimitStrategyNoAvailable reset periodsNO_RESET

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read, non-destructive write, so the bar is lower; the description still adds a genuinely non-obvious behavior — that vlessUuid/ssPassword/trojanPassword/shortUuid are auto-generated by the panel unless supplied. It stops short of covering side effects (subscription creation, permission requirements), keeping it out of 5 territory.

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, zero filler. The core action is front-loaded and the non-obvious credential behavior follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter mutation tool with no output schema and thin annotations, the description covers the single most important operational fact (credential defaults) but omits permissions, side effects, and result behavior. Adequate minimum-viable coverage, not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description adds meaning the schema does not: it groups the four credential parameters and explains they are safe to omit because they are auto-generated. That materially improves parameter decisions for those four fields.

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 clear verb+resource ('Create a user') that an agent can readily distinguish from users_update and the many bulk/read siblings. It does not explicitly name an alternative tool, so it stays below the sibling-differentiating bar 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?

The only conditional offered is when to supply credentials explicitly ('for service users'). There is no guidance on when to use this versus users_bulk_update, squads_add_many_users, or other creation paths, and no prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_deleteC
Destructive

Delete user

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds nothing beyond that: no indication of cascading effects on subscriptions, HWID devices, or billing history, and no mention of reversibility. For an irreversible delete, that is a 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two words is certainly compact and front-loaded, but here the brevity reflects under-specification rather than efficiency. There is no wasted text, yet nothing useful is conveyed either.

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?

A destructive, no-undo operation with one undocumented parameter, no output schema, and no annotations beyond destructiveHint. The description should at minimum identify the required identifier and note that deletion is permanent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required userId parameter, and the description supplies no meaning beyond the obvious name. It does not clarify whether the id is the internal numeric id (as the type suggests) or an alternative identifier such as username or short UUID.

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?

States a verb and resource, so the basic action is unambiguous. However, it essentially restates the tool name (users_delete) and gives no differentiation from siblings such as users_bulk_delete, users_bulk_delete_by_status, or billing_history_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no comparison to the bulk deletion siblings that clearly overlap. The agent is left to infer that this is the single-user variant from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_disableC

Disable user

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false. The description adds nothing beyond that: it does not say whether disabling is reversible, whether it terminates active connections or affects subscriptions/traffic, or what permissions are needed. For a state-changing account operation, this is a 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two words with no waste, but this is under-specification rather than conciseness - there is no front-loaded constraint, scope, or qualifier to structure. The size is inappropriate for a state-changing 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?

For a one-parameter mutation with no output schema, the description should at minimum define the parameter identity and the effect of disabling. Annotations cover only the safety hints, so nothing an agent needs in order to call this correctly is stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter, and the description does not compensate at all. It never clarifies which identifier 'userId' expects (numeric user id vs short UUID vs username), even though sibling tools like users_get_by_short_uuid exist and make that ambiguity consequential.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and object ('Disable user'), which is enough to separate it from users_delete or users_enable by keyword alone. However, it gives no scope, no sibling differentiation, and no explanation of what 'disable' actually changes for the user (access, subscription, traffic). Minimum viable rather than clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as users_bulk_update or users_delete despite a large sibling set of user mutation tools. The agent must infer everything about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_enableC

Enable user

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=false, telling the agent this is a non-destructive write. The description adds nothing beyond the name: it does not say what state change occurs, whether it is idempotent, whether it requires prior disablement, or what happens to the user's active connections.

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?

Two words is not conciseness but under-specification; there is no meaningful content to front-load or trim because essentially nothing was written.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple state-toggle the bar is low, but with no output schema, no parameter documentation, and only a pair of hint annotations, the agent lacks confirmation of the resulting state and the identity/validity requirements for userId.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required userId parameter, and the description does not mention it at all. The name is fairly self-explanatory, but with zero documented coverage the description should have compensated and does not.

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?

"Enable user" gives a clear verb and resource, so the basic operation is identifiable. However, it offers no differentiation from the obvious counterpart users_disable (or users_delete/users_revoke_subscription) and no scope detail about what enabling entails.

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 when-to-use guidance, no mention of the alternative users_disable, and no prerequisites (e.g., user must exist and currently be disabled). An agent must infer the whole decision context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_extend_expirationA

Extend user expiration date. If user status is EXPIRED, the new expiration date is calculated from the current date and the user becomes ACTIVE. If user status is ACTIVE, the given number of days is added to the existing expiration date. DISABLED and LIMITED users will be extended, but their status will not change.

NameRequiredDescriptionDefault
daysYesThe number of days to extend the expiration date.
userIdYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by fully specifying the state-dependent outcome: EXPIRED users get a new date from the current date and become ACTIVE, ACTIVE users get days added to the existing date, and DISABLED/LIMITED users are extended without a status change. This is exactly the mutation semantics an agent needs and cannot derive from readOnlyHint=false/destructiveHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded, followed by three tightly packed conditional clauses, each covering a distinct user status with zero filler. Every sentence carries behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-mutating tool with no output schema, the description covers the critical per-status outcomes thoroughly. The only material gap is the absence of routing context relative to the bulk expiration tools, which would help correct tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents 'days' (50% coverage) but leaves userId unexplained. The description compensates by clarifying the meaning of 'days' conditionally — relative to the current date for EXPIRED users versus added to the existing date for ACTIVE users — which is semantic value beyond the schema's generic 'number of days to extend'.

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+resource ('Extend user expiration date') that clearly names what the tool does. The singular 'user' implicitly distinguishes it from the bulk siblings (users_bulk_extend_expiration), but it never names those alternatives explicitly, so differentiation is only inferred.

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 only implied: the agent can infer this applies to a single user, but there is no explicit when-to-use guidance, no exclusion of the bulk variants, and no stated prerequisites (e.g., which user states can be extended is covered, but not when to choose this over users_bulk_extend_expiration).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_getC
Read-only

Get user by ID

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context of its own, such as error behavior when the ID does not exist or whether the response is a full user object; it simply restates the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words, fully front-loaded, with zero filler. It errs toward under-specification rather than verbosity, which keeps it efficient even if not especially informative.

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 trivial single-parameter read tool with annotations covering its safety profile, the description is minimally sufficient. It nonetheless leaves a real ambiguity unresolved: which of the several user-lookup siblings an agent should pick for a given identifier.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden for the single parameter. 'By ID' does tie the lookup to the numeric userId and implicitly contrasts with the username/UUID variants, but it adds no detail on format or whether the ID is internal versus external.

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 verb (Get) and resource (user) plus the lookup key (ID), so the operation itself is unambiguous. It does not, however, distinguish itself from siblings like users_get_by_username, users_get_by_short_uuid, or users_resolve, which all fetch a single user by a different identifier, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use statement, no prerequisite, and no mention of the alternative lookup tools (by username, short UUID, resolve). The only guidance is implied by the name itself, so the description contributes nothing here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_get_by_short_uuidC
Read-only

Get user by Short UUID

NameRequiredDescriptionDefault
shortUuidYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that, however: it does not say whether a missing short UUID returns an error or null, and it is not a mutation tool so there is little to disclose. With annotations carrying the load, a 3 is the correct baseline.

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 short sentence, front-loaded with the verb and resource and free of filler. It is appropriately sized for a trivial lookup, though the terse phrasing borders on under-specification rather than true economy.

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 lookup surrounded by several near-duplicate siblings, the description does not explain which identifier this tool consumes, how it differs from users_get or users_get_by_username, or what happens when the short UUID is unknown. With no output schema and no parameter documentation, an agent lacks the information needed to confidently route to this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description adds no semantics for the single shortUuid parameter, so it does not compensate for the missing documentation. On the other hand, the parameter name is self-describing and there is only one required param, keeping the practical risk low. Baseline 3 is defensible here.

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?

States a verb and resource (get user by Short UUID), which is clear on its face, but it does not differentiate itself from the many sibling lookups: users_get, users_get_by_username, users_resolve, metadata_user_get, or the subscription-side subscriptions_get_by_short_uuid. The reader cannot tell which identifier scheme selects this tool over its near-identical siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this lookup versus users_get, users_get_by_username, users_resolve, or users_stream. The only distinguishing signal, that it keys off a short UUID rather than a numeric id or username, is left implicit in the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_get_by_usernameC
Read-only

Get user by username

NameRequiredDescriptionDefault
usernameYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no return shape, no behavior when the username is unknown, no pagination or error 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?

A single front-loaded sentence with zero filler. It is efficient, though the terseness borders on under-specification rather than disciplined brevity.

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 lookup with no output schema, the definition is barely sufficient: it does not describe the returned user object or the not-found case, which an agent would benefit from knowing since no output schema supplies 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?

One required parameter with 0% schema description coverage, so the description must carry the load. It does convey that the parameter is a username identifier via 'by username', which is the minimum needed, but adds no format, case-sensitivity, or validity detail.

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 ('Get') and resource ('user') plus the distinguishing lookup key ('by username'), which meaningfully separates it from users_get (by id), users_get_by_short_uuid, and users_resolve. It does not explicitly name those siblings, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

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 versus the many alternative user-lookup tools (users_get, users_get_by_short_uuid, users_resolve). The only implicit signal is the 'by username' key in the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_listB
Read-only

List users with offset pagination and optional TanStack-style filters. To find users by telegramId, email, tag, status etc. pass filters, e.g. [{"id":"telegramId","value":123456789}]. Users are identified by numeric id.

NameRequiredDescriptionDefault
sizeNoNumber of results to return, no more than 1000
startNoStart index (offset) of the results to return, default is 0
filtersNo
sortingNo
filterModesNo
globalFilterModeNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true / destructiveHint=false, so the safety profile is covered. The description adds that results are offset-paginated and that users have numeric ids, but says nothing about ordering, return shape, or result limits beyond the schema's own max.

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?

Three tight sentences, front-loaded with the core action and immediately followed by the most useful detail (the filters example). No filler, though the id note could be folded in more economically.

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 6-parameter tool with nested objects and no output schema, the definition covers the filters path well but leaves three parameters (sorting, filterModes, globalFilterMode) entirely unexplained. Adequate but with a clear gap on the TanStack filter-mode semantics.

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 low (33%): only size and start are documented in the schema. The description partially compensates by explaining the filters array shape with a concrete example, but sorting, filterModes, and globalFilterMode remain undocumented in both places.

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 clear verb+resource ('List users') with the mechanism (offset pagination + TanStack-style filters). It implicitly distinguishes itself from the users_get* family by being the list/filter entry point, but never names an alternative to sharpen the boundary.

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?

Tells the agent how to locate users by telegramId, email, tag, status via filters, which is genuine routing guidance for lookup. However it never states when to prefer this over users_get, users_resolve, or users_stream, so the choice among siblings 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.

users_reset_trafficC

Reset user traffic

NameRequiredDescriptionDefault
userIdYes

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so the basic mutation/safety profile is already provided. The description adds no further behavioral context, such as what 'reset traffic' changes, whether usage history is lost, whether the action is reversible, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only three words and contains no wasted sentences, but it is under-specified rather than appropriately concise. It fails to front-load any useful operational detail that would help an agent invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a traffic-reset mutation, the description omits the effect on usage data, prerequisites, and expected outcome. There is no output schema to carry return-value information, so the description should be more complete than this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the required userId parameter at all. With only a bare number type in the schema, the description should compensate but provides no meaning, constraints, or format guidance beyond the self-descriptive parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Reset user traffic'), which is clearer than a generic placeholder like 'Process'. However, it effectively restates the tool name 'users_reset_traffic' and does not distinguish the single-user operation from siblings such as users_bulk_reset_traffic or nodes_reset_traffic.

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 when-to-use guidance, prerequisites, or alternative tools. There is no indication of when to choose this single-user reset instead of bulk reset operations or node traffic resets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_resolveA
Read-only

Resolve a user by EXACTLY ONE of: id, shortUuid, username

NameRequiredDescriptionDefault
idNo
usernameNo
shortUuidNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the exclusivity rule, which is genuine behavioral context, but says nothing about the error/failure mode when the constraint is violated or what resolution yields. With annotations carrying the safety burden, this is a fair 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with the operation front-loaded and the constraint stated immediately after. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with no output schema, the description should clarify what 'resolve' returns and the failure behavior when the exactly-one rule is broken. It covers the input contract adequately but leaves the outcome and edge-case handling 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 0% and the schema itself enforces neither required nor exactly-one, so the description carries the important mutual-exclusivity semantics that the schema omits. It names all three parameters but adds no type/format distinction (numeric id vs string shortUuid/username) beyond their names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Resolve' plus resource 'user' with the three accepted lookup keys, which is clearer than the bare name. However, it does not distinguish itself from siblings users_get, users_get_by_username, and users_get_by_short_uuid, so the agent can't tell from the description alone why it would choose this aggregator over a per-key getter.

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 'EXACTLY ONE of' clause gives the calling constraint, implicitly telling the agent this is a single-key lookup. But there is no guidance on when to prefer this over users_get or the per-key siblings, and no mention of what happens if zero or multiple keys are supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_revoke_subscriptionB

Revoke user subscription: rotates the subscription link (and credentials unless told otherwise)

NameRequiredDescriptionDefault
userIdYes
shortUuidNoOptional. If not provided, a new short UUID will be generated by Remnawave. Please note that it is strongly recommended to allow Remnawave to generate the short UUID.
revokeOnlyPasswordsNoOptional. If true, only passwords will be revoked, without changing the short UUID (Subscription URL).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so safety profile is partly covered, and the description usefully discloses the actual side effect (link plus credential rotation). However, the disclosed effect (invalidating credentials/links) sits in tension with destructiveHint=false, and no permissions, reversibility, or post-state behavior is described. Adds value but leaves ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb and resource first, followed by the key side effect. No filler, though the parenthetical is slightly terse and could be clearer about which credentials rotate.

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 mutation tool with no output schema, so the description carries more burden than it does. It covers the core effect but omits the resulting user state (does the user remain? is access immediately cut?) and permission requirements, leaving meaningful gaps for an operation of this consequence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, with shortUuid and revokeOnlyPasswords already well documented in the schema. The description's "unless told otherwise" hints at the revokeOnlyPasswords behavior but does not name the parameter or clarify its interaction with the link rotation. Baseline 3 is appropriate since the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Revoke user subscription") and immediately qualifies the effect by naming the rotated artifacts (subscription link and credentials). This is clearly distinct from siblings like users_reset_traffic or users_delete, though it never names an alternative to differentiate itself explicitly.

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 revoke a subscription versus alternatives such as users_disable, users_delete, or users_bulk_revoke_subscription. The agent must infer the use case entirely; no prerequisites, no when-not, no alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_streamB
Read-only

Get all users using cursor-based (keyset) pagination with filtering options

NameRequiredDescriptionDefault
tagNoTag to filter users by
sizeNoNumber of results to return, no more than 1000
emailNoEmail to filter users by
cursorNoCursor for pagination — pass the nextCursor from the previous response. Omit on the first request.
statusNoStatus to filter users by
telegramIdNoTelegram ID to filter users by
externalSquadUuidNoExternal squad UUID to filter users by
trafficLimitStrategyNoTraffic limit strategy to filter users by

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only profile (readOnlyHint=true, destructiveHint=false), so the description only adds the keyset-pagination behavior. It does not disclose the default page size behavior (schema default 250), the absence of filters-allowed limits, or any rate/scale characteristics of 'streaming'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the pagination mechanism gets the emphasis. It is efficient, though it arguably spends its one sentence on mechanism rather than the more decision-relevant sibling distinction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, zero-required listing tool with no output schema, the description covers purpose and pagination but omits the return shape, page-size behavior, and how it relates to users_list. Adequate but not complete for an agent choosing between multiple user-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 all 8 parameters are already documented in the schema, including the cursor pass-through semantics. The description's generic 'with filtering options' adds no meaning beyond the schema, which is the baseline-3 case.

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 and resource ('Get all users') and adds the distinguishing mechanism ('cursor-based (keyset) pagination'), so the agent knows it's a list operation with keyed pagination. However, it never contrasts this with the sibling users_list, leaving the core 'why this instead of users_list?' question open.

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 a strong sibling overlap (users_list) but the description gives no when-to-use guidance, no exclusions, and no routing between the two list tools. The cursor mention is a hint at scale but not an explicit condition for selecting this tool over the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_subscription_request_historyA
Read-only

Get user subscription request history, recent 24 records

NameRequiredDescriptionDefault
userIdYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds a concrete behavioral constraint: it returns only the 'recent 24 records', which prevents an agent from assuming full history. It lacks details on sorting or pagination, but the record cap is a valuable disclosure beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact phrase with zero waste, and it front-loads the core action and the record limit. No extraneous details are present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read with one parameter and no output schema, the description is minimally adequate. However, it does not explain what a 'request' record contains or how the 24-record limit is applied, leaving an agent with unanswered questions about the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not mention the required 'userId' parameter or its constraints (e.g., positive number). The word 'user' hints at the parameter, but no meaningful semantics are added beyond the schema's field name, leaving a significant gap for a required argument.

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') and resource ('user subscription request history'), making the core action clear. It does not, however, differentiate from the similar sibling 'subscription_request_history_list' or 'subscription_request_history_stats', so an agent can't tell them apart without opening schemas.

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 'recent 24 records' gives implied scope for when this tool is useful (fetching a small recent history), but there is no explicit guidance on when to choose this over alternatives like 'subscription_request_history_list'. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_tags_listC
Read-only

Get users tags

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds nothing beyond that: no indication of return shape (a tag list vs. a mapping), whether the result is scoped/paginated, or what 'users tags' are derived from.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is certainly short with no wasted words, but that brevity stems from under-specification rather than disciplined editing. There is no front-loaded scope statement, just a fragment.

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 zero-parameter read-only lister with no output schema, the definition is minimally adequate — an agent can call it, but it doesn't state what the returned tags represent or how they relate to users. Given the large family of near-identical tag-listing siblings, more disambiguation would be warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is no parameter syntax the description could usefully add. The empty schema is self-explanatory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The four-word phrase identifies a verb ('Get') and a resource ('users tags'), so an agent can roughly infer it lists tags associated with users. But the phrasing is grammatically vague ('users tags' could be tags owned by users or tags applied to users) and there is no explicit differentiation from the many sibling *_tags_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 Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus users_list, users_get, or the other per-entity tag listers (nodes_tags_list, hosts_tags_list, squads_tags_list, etc.). The agent receives no context or exclusions at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

users_updateC

Update a user. Identify by id OR username.

NameRequiredDescriptionDefault
idNoID of the user
tagNo
emailNo
statusNo
expireAtNoExpiration date: 2025-01-17T15:38:45.065Z
usernameNoUsername of the user
telegramIdNo
descriptionNo
hwidDeviceLimitNo
externalSquadUuidNoOptional. External squad UUID.
trafficLimitBytesNoTraffic limit in bytes. 0 - unlimited
activeInternalSquadsNo
trafficLimitStrategyNoTraffic limit reset strategy

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false, so the safety profile is covered. The description adds nothing about update semantics (patch vs replace), whether omitted fields are preserved or cleared, or permission requirements, which matters for a 13-field mutation.

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?

Two short sentences with the identity hint front-loaded and zero padding. It is efficient, though arguably under-specified rather than perfectly sized for a 13-param 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?

For a 13-parameter mutation with 46% schema coverage and no output schema, the description leaves the field semantics and update behavior largely unexplained. It is not complete enough for an agent to invoke it confidently across all parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (46%), so the description carries more burden, yet it only clarifies that id or username can serve as the identifier (2 of 13 params). The remaining 11 updatable fields, including the tag/email/status/limits fields, are undocumented in both schema and description.

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 and resource ('Update a user'), which is clear on its own. It does not differentiate from close siblings like users_bulk_update or the many targeted users_* mutators (enable/disable/reset_traffic), though the singular 'a user' weakly implies single-target scope.

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 only guidance offered is the identity mechanism ('Identify by id OR username'). There is no when-to-use context, no mention of when to prefer users_bulk_update, and no prerequisites or exclusions.

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. 204 tool updatesv3.0.0
    • First observedapi_request
    • First observedapi_tokens_create
    • First observedapi_tokens_delete
    • First observedapi_tokens_list
    • First observedapi_tokens_scopes
    • First observedauth_status
    • First observedbandwidth_node_users
    • First observedbandwidth_nodes_usage
    • First observedbandwidth_nodes_usage_threshold
    • First observedbandwidth_nodes_users
    • First observedbandwidth_squad_usage
    • First observedbandwidth_squad_user_usage
    • First observedbandwidth_user_usage
    • First observedbilling_history_create
    • First observedbilling_history_delete
    • First observedbilling_history_list
    • First observedbilling_node_create
    • First observedbilling_node_delete
    • First observedbilling_node_update
    • First observedbilling_nodes_list
    • First observedbilling_provider_create
    • First observedbilling_provider_delete
    • First observedbilling_provider_get
    • First observedbilling_provider_update
    • First observedbilling_providers_list
    • First observedconfig_profiles_create
    • First observedconfig_profiles_delete
    • First observedconfig_profiles_get
    • First observedconfig_profiles_get_computed_config
    • First observedconfig_profiles_get_inbounds
    • First observedconfig_profiles_list
    • First observedconfig_profiles_reorder
    • First observedconfig_profiles_set_tags
    • First observedconfig_profiles_tags_list
    • First observedconfig_profiles_update
    • First observedconnections_by_node_request
    • First observedconnections_by_node_result
    • First observedconnections_by_user_request
    • First observedconnections_by_user_result
    • First observedconnections_drop
    • First observedconnections_geocheck_request
    • First observedconnections_geocheck_result
    • First observedexternal_squads_add_all_users
    • First observedexternal_squads_create
    • First observedexternal_squads_delete
    • First observedexternal_squads_get
    • First observedexternal_squads_list
    • First observedexternal_squads_remove_all_users
    • First observedexternal_squads_reorder
    • First observedexternal_squads_set_tags
    • First observedexternal_squads_tags_list
    • First observedexternal_squads_update
    • First observedhosts_bulk_delete
    • First observedhosts_bulk_disable
    • First observedhosts_bulk_enable
    • First observedhosts_bulk_update
    • First observedhosts_clone
    • First observedhosts_create
    • First observedhosts_delete
    • First observedhosts_get
    • First observedhosts_list
    • First observedhosts_reorder
    • First observedhosts_tags_list
    • First observedhosts_update
    • First observedhwid_device_create
    • First observedhwid_device_delete
    • First observedhwid_devices_delete_all
    • First observedhwid_devices_list
    • First observedhwid_devices_list_all
    • First observedhwid_stats
    • First observedhwid_top_users
    • First observedinbounds_list
    • First observedkeygen_get
    • First observedmetadata_node_get
    • First observedmetadata_node_upsert
    • First observedmetadata_user_get
    • First observedmetadata_user_upsert
    • First observednode_integrations_create
    • First observednode_integrations_delete
    • First observednode_integrations_get
    • First observednode_integrations_list
    • First observednode_integrations_update
    • First observednode_plugins_clone
    • First observednode_plugins_create
    • First observednode_plugins_delete
    • First observednode_plugins_execute
    • First observednode_plugins_get
    • First observednode_plugins_list
    • First observednode_plugins_reorder
    • First observednode_plugins_set_tags
    • First observednode_plugins_sync
    • First observednode_plugins_tags_list
    • First observednode_plugins_torrent_reports
    • First observednode_plugins_torrent_stats
    • First observednode_plugins_torrent_truncate
    • First observednode_plugins_update
    • First observednodes_bulk_actions
    • First observednodes_bulk_profile_modification
    • First observednodes_bulk_update
    • First observednodes_create
    • First observednodes_delete
    • First observednodes_disable
    • First observednodes_enable
    • First observednodes_get
    • First observednodes_list
    • First observednodes_reorder
    • First observednodes_reset_traffic
    • First observednodes_restart
    • First observednodes_restart_all
    • First observednodes_tags_list
    • First observednodes_update
    • First observedsettings_get
    • First observedsettings_update
    • First observedshared_lists_create
    • First observedshared_lists_delete
    • First observedshared_lists_get
    • First observedshared_lists_list
    • First observedshared_lists_sync
    • First observedshared_lists_update
    • First observedsnippets_create
    • First observedsnippets_delete
    • First observedsnippets_list
    • First observedsnippets_sync
    • First observedsnippets_update
    • First observedsquads_accessible_nodes
    • First observedsquads_add_all_users
    • First observedsquads_add_many_users
    • First observedsquads_create
    • First observedsquads_delete
    • First observedsquads_get
    • First observedsquads_list
    • First observedsquads_remove_all_users
    • First observedsquads_remove_many_users
    • First observedsquads_reorder
    • First observedsquads_set_tags
    • First observedsquads_tags_list
    • First observedsquads_update
    • First observedsub_page_configs_clone
    • First observedsub_page_configs_create
    • First observedsub_page_configs_delete
    • First observedsub_page_configs_get
    • First observedsub_page_configs_list
    • First observedsub_page_configs_reorder
    • First observedsub_page_configs_set_tags
    • First observedsub_page_configs_tags_list
    • First observedsub_page_configs_update
    • First observedsubscription_info
    • First observedsubscription_request_history_list
    • First observedsubscription_request_history_stats
    • First observedsubscription_settings_get
    • First observedsubscription_settings_update
    • First observedsubscription_templates_create
    • First observedsubscription_templates_delete
    • First observedsubscription_templates_get
    • First observedsubscription_templates_list
    • First observedsubscription_templates_reorder
    • First observedsubscription_templates_set_tags
    • First observedsubscription_templates_tags_list
    • First observedsubscription_templates_update
    • First observedsubscriptions_get_by_short_uuid
    • First observedsubscriptions_get_by_user_id
    • First observedsubscriptions_get_by_username
    • First observedsubscriptions_get_connection_keys
    • First observedsubscriptions_get_raw_by_short_uuid
    • First observedsubscriptions_list
    • First observedsystem_bandwidth_stats
    • First observedsystem_configuration
    • First observedsystem_generate_x25519
    • First observedsystem_health
    • First observedsystem_http_stats
    • First observedsystem_metadata
    • First observedsystem_nodes_metrics
    • First observedsystem_nodes_statistics
    • First observedsystem_srr_matcher
    • First observedsystem_stats
    • First observedsystem_stats_digest
    • First observedsystem_stats_recap
    • First observedusers_accessible_nodes
    • First observedusers_bulk_all_extend_expiration
    • First observedusers_bulk_all_reset_traffic
    • First observedusers_bulk_all_update
    • First observedusers_bulk_delete
    • First observedusers_bulk_delete_by_status
    • First observedusers_bulk_extend_expiration
    • First observedusers_bulk_reset_traffic
    • First observedusers_bulk_revoke_subscription
    • First observedusers_bulk_update
    • First observedusers_bulk_update_squads
    • First observedusers_create
    • First observedusers_delete
    • First observedusers_disable
    • First observedusers_enable
    • First observedusers_extend_expiration
    • First observedusers_get
    • First observedusers_get_by_short_uuid
    • First observedusers_get_by_username
    • First observedusers_list
    • First observedusers_reset_traffic
    • First observedusers_resolve
    • First observedusers_revoke_subscription
    • First observedusers_stream
    • First observedusers_subscription_request_history
    • First observedusers_tags_list
    • First observedusers_update

TDQS

C2.5/5.0

Scored across 204 tools

Disambiguation3/5

Tools are generally named by resource and action, but several overlapping getters/resolvers exist (e.g., users_get, users_get_by_username, users_get_by_short_uuid, users_resolve; multiple subscription getters; generic nodes_bulk_actions vs specific bulk tools). The sheer number of closely related bulk and stats tools creates selection friction, though descriptions usually clarify intent.

Naming Consistency4/5

Names predominantly follow a snake_case resource_action pattern (users_list, nodes_create, hosts_update). Minor inconsistencies appear in singular/plural prefixes and special cases like api_request, auth_status, keygen_get, subscription_info, and metadata_node_get vs nodes_get.

Tool Count1/5

204 tools is an extreme mismatch for an MCP server; even a comprehensive panel API can be exposed more compactly. This volume makes tool selection impractical and exceeds any reasonable agent context.

Completeness5/5

The surface covers the full Remnawave domain: users, nodes, hosts, config profiles, squads, subscriptions, templates, plugins, shared lists, billing, stats, and more, with CRUD and bulk operations. A raw api_request fallback further covers any unlisted endpoints, so no obvious gaps remain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP clients to manage a Remnawave panel through its full API, covering users, nodes, hosts, subscriptions, and more with configurable tool profiles and read/write token access.
    15 npm
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables managing a Remnawave VPN panel from MCP clients, providing tools for users, nodes, subscriptions, statistics, billing, and system operations, plus resources and prompts for common admin tasks.
    190
    7 npm
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables AI clients to drive the full Remnawave panel API, exposing one tool per method+path operation (users, nodes, hosts, subscriptions, inbound, bulk actions) plus search, describe, status, audit and metrics helpers. Read-only/read-write gating, deny rules, confirm-preview and dry-run, response secret redaction and an audit journal keep mutations controlled.
    222
    7 npm
    MIT