hostkey-mcp-server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hostkey-mcp-serverlist my servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hostkey MCP Server
MCP server for Hostkey (.com portal, InvAPI invapi.hostkey.com).
Runs locally over stdio — Cursor, VS Code, and other MCP clients.
Hosted remote: https://mcp.hostkey.com/mcp (cloud agents).
Endpoint |
|
Auth |
|
Tools | 132 typed tools + |
Gives the model access to your Hostkey account: servers, catalog and ordering, power, OS reinstall, network, DNS, snapshots, IPMI/console, ISO, S3, Remote Hands, billing, and API keys.
1. Get an API key
InvAPI → API keys → create a key.
Prefer a dedicated key for MCP. Per-server keys limit access to one server.
DNS writes need the pdns/edit permission.
Related MCP server: hostman-mcp-server
2. Install
Cursor
Click the button, replace YOUR_API_KEY with your InvAPI key, then confirm.
Or add to .cursor/mcp.json manually:
{
"mcpServers": {
"hostkey-mcp-server": {
"command": "npx",
"args": ["-y", "hostkey-mcp-server"],
"env": {
"HOSTKEY_API_KEY": "your-api-key"
}
}
}
}Remote (cloud agents)
No local Node/npx. Point the client at the hosted endpoint and send your InvAPI key:
{
"mcpServers": {
"hostkey": {
"url": "https://mcp.hostkey.com/mcp",
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}VS Code
.vscode/mcp.json:
{
"servers": {
"hostkey-mcp-server": {
"command": "npx",
"args": ["-y", "hostkey-mcp-server"],
"env": {
"HOSTKEY_API_KEY": "your-api-key"
}
}
}
}Optional: HOSTKEY_TOKEN_TTL, HOSTKEY_HTTP_TIMEOUT, HOSTKEY_ALLOW_DESTRUCTIVE
(see .env.example).
From source (Node.js ≥ 22.18): npm install && npm run build.
3. Confirming dangerous operations
Every write call needs confirm=true. Without it, nothing changes.
Also:
order_serverdefaults todry_run— a real order only after explicit consent;OS reinstall, PXE, and service cancellation require
HOSTKEY_ALLOW_DESTRUCTIVE=1;passwords and tokens are masked in responses.
Long jobs (deploy, reinstall) return a callback key — poll with check_task.
4. Tools
Groups (full list via tools/list):
Group | Examples |
Servers |
|
Catalog |
|
Power & order |
|
PXE |
|
Network / DNS | ports, PTR, zones and records |
Snapshots, ISO, S3 | VM snapshots, images, buckets |
Remote Hands | duty-shift tickets ( |
Billing | invoices, payments, contacts |
Misc |
|
Prompts
Prompt | Purpose |
| guided server order |
| OS reinstall |
| diagnostics |
Or just ask: “list my servers” / “order a VPS in NL”.
Docs
Available Tools
132 toolsadd_contactAInspect
Add an additional contact to the account (whmcs/add_contact). WARNING: the contact is created with a random email — change it in Invapi.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not destructive, open-world), so the description's job is to add what they don't cover. It does exactly that by disclosing a genuinely non-obvious side effect: the contact is created with a random email and must be corrected in Invapi. Auth/rate-limit details are still absent, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action stated first and the critical WARNING front-loaded where an agent will not miss it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the definition covers what it does, the target system, and the key gotcha. It stops short of explaining which account scope is used or what the call returns, but nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and the schema documents it fully ('Must be true to run the operation'), so the schema carries the load. The description adds no extra meaning about 'confirm', which is the correct baseline when coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add an additional contact to the account') and even names the underlying endpoint (whmcs/add_contact). The word 'additional' implicitly separates it from update_contact/delete_contact, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to reach for this versus update_contact, get_contacts, or delete_contact, nor what prerequisites (a valid account/client) are needed. The only workflow hint is the post-creation fix-up, which is a behavioral caveat 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.
add_dns_domainBInspect
Create a DNS zone and add a domain to the domains table (pdns/add_domain). Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Domain name, e.g. example.com | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true. The description adds a real behavioral fact the annotations omit — the required pdns/edit permission — which is valuable for auth planning. It still omits conflict/duplicate handling and reversibility, but given annotations carry the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence front-loading the action, with the endpoint and permission requirement as compact trailing clauses. Every phrase earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema and annotations covering the mutation profile, the description plus schema are mostly sufficient. The notable gap is the unresolved overlap with the add_dns_zone sibling, which the description does not address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters ('name' with an example, 'confirm' with its meaning) are fully documented in the schema. The description adds no parameter detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs and resources ('Create a DNS zone and add a domain to the domains table') plus the underlying endpoint (pdns/add_domain), so the action is unambiguous. However, it fails to differentiate from the sibling add_dns_zone, and by mentioning both 'create a DNS zone' and 'add a domain' it blurs the boundary between the two tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a permission prerequisite (pdns/edit) but gives no guidance on when to use this tool versus add_dns_zone/add_dns_subdomain, and no exclusions or context for choosing it. The agent is left 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.
add_dns_recordAInspect
Add or update a DNS record in a zone (pdns/add_dns). Requires pdns/edit permission. For SRV records, fill in proto/priority/weight/port/target. Fields mname/rname are marked required for SOA checks in the docs — fill them in on error.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds, defaults to 3600 | |
| name | No | Record name, e.g. www | |
| port | No | Port for SRV | |
| type | Yes | Record type: A, AAAA, CNAME, MX, TXT, SRV… | |
| zone | Yes | Zone name | |
| mname | No | Primary NS in the SOA record | |
| proto | No | Protocol for SRV, e.g. tcp | |
| rname | No | Admin email in the SOA record | |
| target | No | Target domain for SRV | |
| weight | No | Weight for SRV | |
| confirm | Yes | Must be true to run the operation. | |
| content | Yes | Record value, e.g. 10.56.121.5 | |
| old_name | No | Previous record name — for renaming | |
| priority | No | Priority for SRV/MX | |
| increase_soa_serial | No | Auto-increment SOA serial (defaults to true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so safety profile is covered. The description adds real behavioral value beyond that: the required pdns/edit permission, the upsert semantics ('add or update'), and error-recovery guidance for SOA. It does omit that confirm must be true to execute, which is a notable guard the agent must know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with purpose then prerequisites then type-specific detail. No filler, though the final 'fill them in on error' clause is slightly cryptic out of context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with no output schema, the description covers purpose, auth, and the trickiest record types. It omits mention of the mandatory confirm flag and increase_soa_serial default, but those are documented in the schema, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds cross-field conditional meaning the schema lacks: it ties proto/priority/weight/port/target together specifically for SRV records and explains the mname/rname practical trigger (SOA check failure). That is genuine guidance beyond the flat per-parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (add or update) and resource (DNS record in a zone) plus an internal API hint (pdns/add_dns). It clearly contrasts with the delete_dns_record sibling by verb, but never names or distinguishes itself from other write siblings like add_dns_zone or edit_dns_subdomain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives actionable context: the pdns/edit permission requirement, when to populate SRV fields, and the SOA-fill-on-error tip. However, it never states when to use this tool versus alternatives such as edit_dns_subdomain or delete_dns_record, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dns_subdomainAInspect
Add a subdomain to the subdomains table (pdns/add_subdomain). Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Subdomain name | |
| confirm | Yes | Must be true to run the operation. | |
| domain_id | Yes | Domain ID from list_dns_domains | |
| server_id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotation context: the required pdns/edit permission and the backing API endpoint. It still does not say what happens on duplicate names or on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with the action front-loaded and zero filler. The parenthetical endpoint is the only arguably optional element, but it is short and aids traceability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-required-parameter mutation tool with no output schema, the definition covers the action and the auth requirement but omits edge-case behavior (duplicate subdomain, validation failures) and any note on the confirm flag's meaning beyond what the schema already states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (name, confirm, domain_id, server_id) are already documented in the schema, including the cross-reference to list_dns_domains. The description adds no parameter-level detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add a subdomain") and even names the underlying API operation (pdns/add_subdomain). It is distinguishable from siblings like add_dns_domain, add_dns_zone, and edit_dns_subdomain, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and the permission note, but there is no explicit when-to-use guidance, no mention of the edit_dns_subdomain alternative, and no statement of prerequisites beyond the pdns/edit permission requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_dns_zoneBInspect
Create a DNS zone on the authoritative PowerDNS server (pdns/add_zone). Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| dns | No | SOA parameters for the zone; Hostkey defaults apply if omitted | |
| kind | No | Zone type, defaults to Master | |
| name | Yes | Zone name, e.g. example.com | |
| dnssec | No | Enable DNSSEC (defaults to false) | |
| rrsets | No | Use RRset instead of records (defaults to true) | |
| confirm | Yes | Must be true to run the operation. | |
| masters | No | List of master servers (for Slave) | |
| nameservers | No | NS servers for the zone, defaults to ns1.hostkey.com/ns2.hostkey.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description usefully adds the required pdns/edit permission and the authoritative-server target, but says nothing about idempotency, what happens on a name collision, or whether zone creation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, action first, permission second, with zero filler or restated field lists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, one-nested-object mutation with no output schema, the description covers action, target, and permission but omits conflict/failure behavior and any hint of when this is the right choice. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested SOA object, kind enum, dnssec/rrsets defaults, and the mandatory confirm flag are all documented in the schema itself. The description adds no parameter-level meaning beyond that, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Create a DNS zone") and names the underlying target (authoritative PowerDNS server / pdns/add_zone), which is concrete enough to act on. It does not, however, differentiate itself from the sibling add_dns_domain, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance given is the required permission (pdns/edit). There is no statement of when to prefer this tool over add_dns_domain or add_dns_subdomain, nor any prerequisite or conflict conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_ipmi_userBInspect
Create a temporary IPMI user for web access to IPMI (eq/add_ipmi_user).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds one useful behavioral fact, that the created user is 'temporary', but says nothing about credential lifetime, permissions granted, or the need to clean up with remove_ipmi_user.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the action and resource before the trailing parenthetical. The '(eq/add_ipmi_user)' endpoint note is minor internal noise but the structure is otherwise tight and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a 2-parameter mutation whose annotations carry the safety profile, but it omits the lifecycle context an agent would want: how the temporary credential is returned or used, and that remove_ipmi_user is the corresponding cleanup. Nothing misleading, just incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully documented in the schema (id = Server ID, confirm = must be true), giving 100% coverage, so the baseline is 3. The description adds no additional meaning such as credential naming or implications of the confirm flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a temporary IPMI user') and clarifies its purpose ('for web access to IPMI'). It does not, however, differentiate itself from sibling tools like request_rh_kvm or remove_ipmi_user, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for web access to IPMI' implies when the tool is relevant, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as request_rh_kvm or the paired remove_ipmi_user cleanup path. 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.
add_iso_imageAInspect
Add a new ISO image or update an existing one by name (iso/add). Requires special 'add' permission.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Image URL, if required | |
| name | Yes | Image name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, so the safety profile is largely covered. The description adds the specific permission requirement, which is real behavioral value, but does not explain what happens on the update path (overwrite vs merge) for an upsert-style operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the operation front-loaded and the permission caveat trailing. No filler; appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations carrying the safety hints, three fully documented params, and no output schema to explain, the description covers the essentials including the auth requirement. The remaining gap is disambiguation from upload_iso.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents url, name, and confirm, including that confirm must be true. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add a new ISO image or update an existing one by name') and even cites the underlying endpoint (iso/add), so the agent knows exactly what it does. It does not, however, differentiate itself from close siblings like upload_iso or mount_iso, which could confuse selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite ('Requires special add permission'), which is useful context. But it gives no guidance on when to choose this over upload_iso or delete_iso_image, so usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_rhr_commentBInspect
Add a client-visible message to the request history (rhr/chat).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Request ID from list_rhr_requests | |
| confirm | Yes | Must be true to run the operation. | |
| message | Yes | Message text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write/safety profile is largely covered. The description adds genuinely useful context with 'client-visible', flagging that the message is exposed to the client rather than internal-only. It does not explain the confirm requirement or any visibility/permission nuances.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and no filler. Appropriately sized for the tool's simplicity, though it could have used one more clause to cover the confirm gate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter write tool with full schema coverage, no output schema, and annotations covering the safety profile, the core information is present. It is adequate but thin: it omits the confirm prerequisite behavior and any relationship to the other RHR tools, which would help an agent route correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents id, message, and confirm, including that confirm must be true. The description adds only the 'client-visible' qualifier for the message, which is the correct baseline-3 situation where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Add) and resource (a client-visible message to the request history/chat), which is far more informative than the name alone. The 'rhr/chat' parenthetical ties it to the RHR family. It stops short of explicitly distinguishing it from siblings like create_rhr_request or discard_rhr_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus the related RHR tools (list_rhr_requests, create_rhr_request, discard_rhr_request), nor any prerequisites. The reader must infer usage entirely from the one-line purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_static_natAInspect
Create a static DNAT to the server IPMI (nat/add_static_nat): public IP for classic IPMI access. Distinct from Secure IPMI Proxy in the panel — Proxy Active alone may not satisfy this call. Async; track with check_task. On server_ipmi_acl_required pass ip_acl.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ttl | No | NAT lifetime in seconds, if supported | |
| ip_acl | No | Client IP(s) allowed to reach IPMI via NAT (InvAPI ip_acl). Required by some accounts when panel Proxy ACL is not enough. | |
| confirm | Yes | Must be true to run the operation. | |
| secured | No | Secured NAT flag if supported by InvAPI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a non-read-only, non-destructive, open-world operation. The description adds useful behavioral context beyond annotations: the call is asynchronous and should be tracked with `check_task`, and `ip_acl` may be required by some accounts. It does not describe duplicate-NAT behavior, permissions, or side effects in detail, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and resource, then adds only operationally relevant clauses: endpoint, distinction from Secure IPMI Proxy, async tracking, and ACL handling. There is no filler, and each clause contributes to correct tool selection or invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essential context: what it creates, why it is needed versus proxy access, that it is asynchronous, how to track it via `check_task`, and when to supply `ip_acl`. The remaining parameter details are fully covered by the schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all five parameters are already documented, establishing a baseline of 3. The description adds meaningful conditional semantics for `ip_acl` by saying to pass it when `server_ipmi_acl_required` occurs, which goes beyond the schema's generic parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: create a static DNAT for server IPMI, with the underlying endpoint `nat/add_static_nat`. It also clarifies the use case as public IP for classic IPMI access and distinguishes it from the Secure IPMI Proxy feature, so an agent can identify the operation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage condition: it is for classic IPMI access via public IP, and Proxy Active alone may not satisfy the call. It also tells the caller to pass `ip_acl` when `server_ipmi_acl_required` occurs. It does not explicitly name sibling alternatives such as `clear_static_nat`, `remove_static_nat`, or `drop_nat`, so it falls short of full when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_creditAInspect
Pay an invoice in full or in part from the credit balance (whmcs/apply_credit). MONEY: deducts funds from the account.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Payment amount in account currency | |
| confirm | Yes | Must be true to run the operation. | |
| invoice_id | Yes | Invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so the write nature is covered. The description adds meaningful context by warning 'MONEY: deducts funds from the account' and noting partial payments, though it omits prerequisites such as sufficient credit or irreversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, followed by a compact financial warning. The parenthetical API path is minor but harmless, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple financial write tool with full schema coverage and annotations covering the read/write boundary, the description is adequate but incomplete. It does not address prerequisites (e.g., sufficient credit balance), error behavior, or when to choose this over sibling payment tools like mass_pay.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The phrase 'in full or in part' adds a small amount of meaning to the amount parameter by clarifying partial payments are allowed, but it provides no syntax or additional parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Pay'), resource ('invoice'), scope ('in full or in part'), and funding source ('credit balance'). It is clear enough to distinguish from payment-gateway siblings, but it does not explicitly name alternatives such as mass_pay or create_addfunds_invoice, so it falls 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.
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, nor any mention of alternative tools. The purpose implies the tool is for paying an invoice from credit, but that is tautological rather than actionable routing advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
block_ipBInspect
Block an IP address on the server at the Hostkey network level (net/block_ip). Useful for abuse requests.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | IP address | |
| confirm | Yes | Must be true to run the operation. | |
| four_hours | No | true — block is automatically lifted after 4 hours | |
| description | Yes | Block reason |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is partly covered. The description adds the network-level scope and abuse-request framing, but says nothing about reversibility (the four_hours auto-lift and unblock_ip are left undisclosed) or permission requirements. With annotations doing part of the work, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded, plus a short 'useful for' clause. Nothing is wasted, though the parenthetical API path is marginal detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, fully-schema-documented mutation with no output schema, the description covers the core action and safety is partly carried by annotations. However it omits how the block is reversed (four_hours expiry / unblock_ip) and any permission or side-effect context, leaving meaningful gaps for a state-changing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all five parameters (id, ip, description, confirm, four_hours) are documented in the schema itself. The description adds no parameter-level meaning such as the effect of four_hours or the confirm gate, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Block an IP address on the server') and adds the network layer ('Hostkey network level'), so the operation is unambiguous. It does not explicitly contrast itself with the sibling unblock_ip, so an agent has to infer the pairing rather than being routed to it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Useful for abuse requests' gives an implied context for when the tool applies, but does not name unblock_ip as the inverse operation, nor state any exclusions or prerequisites (e.g. needing the server id and a reason). 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.
call_api_rawADestructiveInspect
Universal direct InvAPI call by resource and action, for resources without typed tools (e.g.: iso — ISO image library, s3 — S3 Object Storage, rhr — Remote Hands new version; see action list in the docs: https://hostkey.com/documentation/apidocs/). ALWAYS requires confirm=true; destructive/paid actions additionally require HOSTKEY_ALLOW_DESTRUCTIVE=1. Prefer typed tools when they exist for the needed operation.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | Inject session token (defaults to true) | |
| action | Yes | Resource action, e.g.: list | |
| params | No | Call parameters as an object; nested objects become params[...] | |
| confirm | Yes | Required confirmation. Without confirm=true the call is rejected. | |
| resource | Yes | InvAPI resource without .php, e.g.: iso, s3, rhr, eq, net, whmcs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, but the description adds non-obvious gating context: confirm=true is ALWAYS required and destructive/paid actions additionally need HOSTKEY_ALLOW_DESTRUCTIVE=1. That is real auth/prerequisite disclosure beyond the annotations, though it does not describe response/error behavior for this raw passthrough call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense but well-ordered block: purpose first, examples second, hard requirements third, routing rule last. Every clause earns its place, though the run-on examples-plus-URL sentence is slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a universal passthrough tool with no output schema, the description covers scope, mandatory confirmation, the destructive env-var gate, and alternative routing, which is most of what an agent needs. It does not characterize the shape of returned data or failure modes, a minor gap for an openWorld raw call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the 5 parameters is documented there, including the confirm gate and the nested-object params convention. The description adds resource examples (iso, s3, rhr) and a docs pointer for the action vocabulary, but nothing the schema does not already cover, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Universal direct InvAPI call by resource and action') and immediately scopes it to 'resources without typed tools', naming concrete examples (iso, s3, rhr). An agent can distinguish this generic escape-hatch tool from the many typed siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it (resources lacking typed tools) and when not ('Prefer typed tools when they exist for the needed operation'), plus routes to the docs for the action list. This is exactly the when/when-not/alternative guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_taskARead-onlyInspect
Check async job status by callback key (eq_callback/check). Many InvAPI operations (power on/off, order, reinstall, snapshots) return {"result":"OK","callback":""}. Pass that key here: result="Not ready" — still running; result="OK" — finished (key then expires). Server deploy can take 10–30 minutes. If the client sent progressToken, emits notifications/progress.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Callback key from an async operation response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnly/openWorld annotations: how to interpret result values ('Not ready' vs 'OK'), that the key expires after completion, that deploys can take 10-30 minutes, and that progress notifications are emitted when a progressToken was supplied. This is exactly the lifecycle/timing detail annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then packs interpretation, timing, and notification behavior into a few dense clauses. Every sentence carries usable operational information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations covering return values, the description takes on the full burden and delivers: result semantics, key expiry, and expected latency. Nothing an agent needs to poll and reason about completion is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by explaining the parameter's origin (the key from a prior async response) and its lifecycle (the key expires once the result is 'OK'). It stops short of adding format details, so it is not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Check) and resource (async job status) and names the exact mechanism (eq_callback/check) with the callback key. No sibling tool does this, so it is unambiguous even within a large tool set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when to use it: operations that return {"result":"OK","callback":"<key>"}, enumerating concrete examples (power on/off, order, reinstall, snapshots). It does not state when NOT to use it or name a polling alternative, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_pxe_configADestructiveInspect
PXE reinstall step 7: remove the PXE config (eq/clear_pxe). REQUIRED after completion — otherwise an unexpected reinstall may occur on the next reboot.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. | |
| hostname | Yes | Server hostname |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the mutation profile is known. The description adds genuinely non-obvious behavior beyond that: skipping this step causes an unexpected reinstall on the next reboot, which is exactly the kind of consequence an agent cannot infer from 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the workflow position, then the action, then the consequence of omission — front-loaded and mostly waste-free. The terse 'step 7' and endpoint parenthetical are compact rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param mutation tool with no output schema, it covers purpose, workflow ordering, and failure consequence, which is nearly everything an agent needs. Minor gaps (behavior if the config is already absent, why confirm plus id plus hostname are all required) remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (id, hostname, confirm are all documented, including 'Must be true to run the operation'). The description adds no parameter-level detail, so this is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (remove the PXE config), names the underlying endpoint (eq/clear_pxe), and locates the tool as step 7 of the PXE reinstall workflow. An agent can immediately distinguish it from the sibling create_pxe_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call it ('REQUIRED after completion') and ties it to a concrete sequence position (step 7), which is strong context. It does not name a when-not condition or point at an alternative tool, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_static_natBInspect
Remove stale static NAT forwarding rules by internal IP (nat/clear_static_nat).
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | Internal IP address | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so the agent knows this mutates remote state; the description adds the useful scoping detail that removal is keyed by internal IP (i.e., potentially all rules for that IP), which goes beyond the annotations. It stops short of stating whether the operation is irreversible, idempotent, or requires elevated auth, and destructiveHint=false sits somewhat awkwardly with a verb like "Remove".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The trailing parenthetical "(nat/clear_static_nat)" merely restates the tool name/endpoint and earns little, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so return values need not be explained, and annotations carry the safety profile. Still, for a state-mutating removal keyed by IP, the description leaves unclear whether one rule or all matching rules are deleted and what failure looks like, which is a real gap for an agent deciding to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `ip` and `confirm` are already documented; baseline is 3. The phrase "by internal IP" adds modest value by clarifying that the IP is the selector for which rules are cleared, but the description adds nothing about the mandatory `confirm` flag or the address format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource+scoping: "Remove ... static NAT forwarding rules by internal IP". An agent knows exactly what is affected and how it is keyed. However, it does not distinguish itself from the near-identical sibling remove_static_nat (or drop_nat), so the selection decision is left ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word "stale" hints at the intended scenario (cleaning up obsolete rules), which is a weak implied usage signal. There is no explicit when-to-use, no when-not-to-use, and no routing to remove_static_nat or drop_nat, which is exactly what this tool's closest siblings would require.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_addfunds_invoiceBInspect
Create an invoice to top up the credit balance (whmcs/create_addfunds). MONEY: creates a real invoice for the given amount.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Top-up amount in account currency | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety posture is largely covered. The description does add real value beyond them by flagging that this creates an actual monetary invoice; however it stops short of saying whether funds are captured immediately, whether it is reversible, or what the confirm flag protects against beyond the schema's own text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the key impact signal ('MONEY') is front-loaded. The parenthetical API path is arguably internal plumbing, but it is short and harmless.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a money-moving mutation with no output schema, the description plus annotations cover the essentials: it writes, it's not read-only, it touches the open world, it creates a real invoice, and confirm must be true. It still leaves the agent guessing about downstream effects (payment capture, whether the invoice must be paid separately) and offers no routing hint to the sibling billing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (amount is 'Top-up amount in account currency', confirm is 'Must be true to run the operation'), so the schema carries the parameter burden. The description only restates 'for the given amount' and adds no unit, currency, or range detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create an invoice to top up the credit balance') and even names the backing API operation (whmcs/create_addfunds), so the agent knows exactly what it does. It does not, however, differentiate itself from the many nearby billing siblings like apply_credit or generate_due_invoice, which is where confusion is most likely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no reference to alternatives such as apply_credit or mass_pay that also affect a client's balance. 'MONEY: creates a real invoice for the given amount' is a warning about impact, not a usage rule for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_api_keyAInspect
Create a new API key for the account or a specific server (api_keys/add). The key value is shown once in the response — save it.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | IP allowlist, e.g. 10.0.0.2, 10.4.6.3/24 | |
| name | Yes | Key name | |
| active | Yes | true — key is active | |
| confirm | Yes | Must be true to run the operation. | |
| server_id | No | Server ID; omit for an account-wide key | |
| login_notify_method | Yes | Login notifications for this key; use none for per-server keys | |
| login_notify_address | No | Email or webhook URL for notifications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the write/non-destructive profile is covered structurally. The description adds genuinely new behavioral context beyond annotations: the key value is returned only once and must be saved. It does not mention permission requirements or whether the operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the core action is front-loaded and the one critical caveat (save the key) follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers the one non-obvious return detail (one-time key value). It is missing only peripheral context such as authentication/permission prerequisites for a mutating tool, but overall it is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (7 params, 4 required, enum documented), so the schema already carries parameter meaning and the baseline is 3. The description's scope statement loosely maps to the optional server_id but adds no syntax or formatting detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Create a new API key') and adds scope disambiguation ('for the account or a specific server') plus the underlying endpoint (api_keys/add). It does not explicitly contrast with siblings like update_api_key or get_api_key, so it falls short of the top band, but an agent knows exactly what this does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance relative to alternatives (update_api_key, list_api_keys, list_server_api_keys). The account-vs-server scope is implied but the agent must infer when this tool is the right choice versus other key-management tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pxe_configADestructiveInspect
PXE reinstall step 2: create a PXE config for OS install (eq/create_pxe). DESTRUCTIVE.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| os_id | Yes | OS ID from list_os | |
| confirm | Yes | Must be true to run the operation. | |
| ssh_key | No | Public SSH key | |
| hostname | Yes | Hostname | |
| root_pass | Yes | Root password (min. 8 chars, uppercase letter, digit) | |
| reinstall_key | No | Master key from create_reinstall_task | |
| post_install_script | No | Post-install script | |
| post_install_callback | No | Callback URL after install |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the one-word 'DESTRUCTIVE' adds nothing beyond structured data. The description does supply workflow sequencing (step 2) and the upstream API op (eq/create_pxe), but omits what actually gets destroyed (existing OS/data), the confirm=true gate, and any prerequisite ordering — gaps that matter for an irreversible reinstall.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses with the workflow position front-loaded and the API endpoint in parentheses. No filler; every fragment carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, 5-required destructive mutation with no output schema, the description is thin: it never states that create_reinstall_task must run first to yield reinstall_key, nor that confirm must be true. The annotations cover the safety profile, but the sequencing prerequisite an agent needs to call this correctly is only half-stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 9 parameters, so the schema already documents every field including confirm and reinstall_key semantics. The description adds no parameter-level detail, which is the correct baseline 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.
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 a PXE config for OS install') and pins its position in a workflow ('PXE reinstall step 2'), which separates it from siblings like clear_pxe_config and create_reinstall_task. It stops short of explicitly stating which sibling precedes it, so the distinction is implied rather than named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'PXE reinstall step 2' implies this must follow an earlier step, which is useful ordering context, but no alternative tool is named and no when-not condition is given. An agent must infer that create_reinstall_task produces the reinstall_key this tool expects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reinstall_taskADestructiveInspect
PXE reinstall step 1: create an OS reinstall master key (eq/reinstall). Returns reinstall_key used by check_task to track install stages. DESTRUCTIVE: part of the process that wipes server disks.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
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 structurally; the description adds concrete value by specifying WHAT is destroyed ('wipes server disks') and by naming the returned reinstall_key. It still omits auth/permission requirements and whether the destruction is immediate or deferred to a later step, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose then the return value then the danger warning. Every sentence carries information an agent needs; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly covers the return value (reinstall_key), the destructive consequence, and the link to check_task. It leaves the surrounding reinstall workflow (relationship to create_pxe_config / reinstall_server, and whether the wipe happens here or later) implicit, so an agent may need to infer sequencing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (id, confirm) are documented in the schema, including that confirm must be true. The description adds nothing about parameter meaning or valid values, so this is the baseline case 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('create an OS reinstall master key (eq/reinstall)') and positions it as step 1 of a named flow, plus names the downstream sibling check_task that consumes its output. An agent can distinguish it from reinstall_server or create_pxe_config 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to use it ('PXE reinstall step 1', output feeds check_task to track stages), which is real sequencing guidance. It stops short of naming an alternative or an exclusion (e.g. when to prefer reinstall_server or create_pxe_config instead), so it does not reach the explicit when/when-not bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_rhr_requestAInspect
Create a Remote Hands request (rhr/add): on-site datacenter shift work that cannot be done remotely. Describe the work in as much detail as possible in comment. Use only if the remote server management module is unavailable/not working.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| comment | Yes | Detailed description of the required work | |
| confirm | Yes | Must be true to run the operation. | |
| request_type | No | Work type, if set by a directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that this escalates to on-site humans performing physical datacenter work, which is useful context beyond the annotations, but says nothing about approval flow, cost, expected turnaround, or what happens after submission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with zero filler; the core action is front-loaded and the usage restriction follows immediately. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations covering safety, full schema coverage and no output schema, the description supplies purpose, usage restriction and the critical comment-detail expectation. It omits the request lifecycle (approval, scheduling, notification) that would make it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented in the schema, so the baseline is 3. The description's only param-level contribution is reinforcing that comment should be 'as much detail as possible', which largely restates the schema's 'Detailed description of the required work'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a Remote Hands request (rhr/add)') and immediately qualifies the resource ('on-site datacenter shift work that cannot be done remotely'), which distinguishes it from request_rh_* remote power/KVM helpers and from list_rhr_requests/add_rhr_comment/discard_rhr_request. An agent can identify the tool's niche 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion: 'Use only if the remote server management module is unavailable/not working.' That is a real when-not condition that steers the agent away from misuse. It does not, however, name the specific alternative sibling (e.g. reboot_server, request_rh_power_on) to use first, so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_snapshotAInspect
Create a virtual machine snapshot (vm/create_snapshot). Async operation. Track with check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Virtual machine ID | |
| name | Yes | Snapshot name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds the crucial behavioral fact that this is asynchronous and must be tracked via check_task — information annotations cannot convey. It stops short of describing timing, failure modes, or what happens to existing snapshots.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the async nature, then the tracking tool. Nothing is padded and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no output schema, the description supplies the essentials: what it does, that it is async, and how to poll it. Only minor gaps remain, such as state prerequisites or behavior on an already-snapshotted VM.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, name, and confirm are all documented in the schema itself. The description adds no parameter-level meaning (e.g. naming rules or what confirm guards against), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a virtual machine snapshot') and even names the underlying endpoint (vm/create_snapshot). This clearly distinguishes it from sibling snapshot tools like get_snapshots, remove_snapshot, and restore_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent the operation is async and explicitly routes follow-up polling to check_task, which is real usage guidance. It does not, however, state any prerequisites or when-not-to-use conditions (e.g. snapshot limits, VM state requirements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_api_keyADestructiveInspect
Delete an API key (api_keys/delete). DESTRUCTIVE: apps using the key will lose access.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Key ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the safety bar is lower. The description adds genuine context beyond the annotation by naming the consequence: apps using the key will lose access. It still doesn't state irreversibility or required authorization level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the destructive consequence front-loaded right after the action. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations carry the safety profile, the schema fully documents both parameters, and no output schema is needed for a deletion. The description adds the downstream consequence, making it nearly complete for a simple two-param destructive call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both id and confirm are already documented in the schema. The description adds no meaning beyond that (e.g. where to find the key id), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (API key), plus the underlying endpoint api_keys/delete. It clearly separates itself from create_api_key/update_api_key/list_api_keys by naming the action, though it doesn't explicitly position itself against those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to guidance is given. The destructive warning implies caution, but it never says when deletion is appropriate versus rotating (update_api_key) or revoking via another path – usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cancellation_requestCInspect
Withdraw a service cancellation request (whmcs/delete_cancellation_request).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds nothing beyond the annotations – no auth requirements, no side-effect detail, no explanation that withdrawal cancels an existing request and requires confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted prose. The parenthetical API path is minor noise but harmless, and the core meaning is delivered immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation tool with full schema coverage and annotations, the description is minimally viable. It omits behavioral context (confirm requirement, effect on the underlying cancellation) but the structured fields carry most of the load.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id and confirm) are fully documented in the schema, justifying the baseline 3. The description adds no meaning beyond the schema, though none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ("withdraw") and resource ("service cancellation request"), which lets an agent distinguish it from request_cancellation and get_cancellation_requests. It does not explicitly name those siblings, but the verb+resource pair is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 request_cancellation, get_cancellation_requests, or discard_rhr_request, and no mention of prerequisites such as the confirm flag. The 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.
delete_contactCDestructiveInspect
Delete an additional account contact (whmcs/delete_contact). DESTRUCTIVE.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. | |
| contact_id | Yes | Contact ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the trailing 'DESTRUCTIVE.' merely restates what structured data provides and adds no new context. The description says nothing about irreversibility, cascade effects on linked records, or permission requirements, so it contributes no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. It is efficient, though arguably under-specified rather than truly concise, which keeps it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with full schema coverage and annotations covering the safety profile, the description is minimally adequate. It omits what deletion does to dependent data and any alternative-path guidance, leaving real gaps for a destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with both contact_id and confirm fully documented, so the schema carries the parameter burden and baseline 3 applies. The description adds no format hints (e.g., where to obtain a contact ID) or semantics beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an additional account contact') and even cites the underlying API operation (whmcs/delete_contact). The word 'additional' usefully distinguishes this from deleting the primary client record, though it does not name sibling tools like add_contact or update_contact explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus update_contact, get_contacts, or other contact-management siblings, and no prerequisites or caveats are stated. The only implicit condition is the 'confirm' flag, which is already documented in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_domainADestructiveInspect
Delete a domain by ID: DNS zone, the domain itself, and all its subdomains (pdns/delete_domain). DESTRUCTIVE. Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. | |
| domain_id | Yes | Domain ID from list_dns_domains | |
| server_id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that: it discloses the exact blast radius (zone + domain + subdomains) and the pdns/edit authorization requirement, neither of which appears in annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and scope, then the destructive warning and permission requirement. Every clause earns its place, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers what an agent needs: scope of deletion, the destructive flag, and the required permission. Nothing material is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with domain_id, server_id, and confirm each documented in the schema. The description only adds 'by ID', which the schema already conveys. Baseline 3 is appropriate 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete), resource (a domain), and precisely enumerates blast radius: the DNS zone, the domain itself, and all subdomains. This distinguishes it from siblings like delete_dns_subdomain and delete_dns_zone without needing to open schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the destructive nature explicit and names the required permission (pdns/edit), which is genuine precondition guidance. It does not explicitly state when to choose this over delete_dns_subdomain or delete_dns_zone, though the enumerated scope implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordADestructiveInspect
Delete a DNS record from a zone (pdns/delete_dns). DESTRUCTIVE. Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Record name | |
| type | Yes | Record type | |
| zone | Yes | Zone name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so 'DESTRUCTIVE' largely restates them. However, the description adds a concrete authorization requirement ('Requires pdns/edit permission'), which is real behavioral context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the destructive warning and permission requirement front-loaded; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the safety profile and auth requirement. It stops short of stating irreversibility or behavior when the record does not exist, but annotations already carry the destructive signal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter detail (zone, name, type, confirm) beyond what the schema already documents, so it earns no extra credit here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (DNS record) scoped to a zone, and names the backing operation (pdns/delete_dns). The resource 'record' implicitly separates it from siblings like delete_dns_zone, delete_dns_domain, and delete_dns_subdomain, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage (removing a DNS record) and gives a prerequisite (pdns/edit permission), but offers no explicit when-to-use vs alternatives guidance among the many delete_dns_* and edit_dns_subdomain siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_subdomainADestructiveInspect
Delete a subdomain from the subdomains table (pdns/delete_subdomain). DESTRUCTIVE. Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Subdomain ID | |
| confirm | Yes | Must be true to run the operation. | |
| server_id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so 'DESTRUCTIVE' is largely redundant. The genuinely additive content is the stated pdns/edit authorization requirement and the underlying API endpoint reference, which the annotations do not convey. It stops short of saying what else is affected (e.g. records under the subdomain) or that the deletion is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight fragments with zero filler, front-loaded with the action and resource. Both the DESTRUCTIVE warning and the permission requirement are placed where an agent will see them before parsing parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter destructive call with no output schema, the definition covers purpose, safety flag, required permission, and endpoint. It is nearly complete; only the blast radius of the deletion and any confirmation/lookup requirements are left unstated, which the confirm parameter partially mitigates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: id, confirm and server_id are all documented in the schema, including the 'Must be true to run the operation' semantics for confirm. The description adds no parameter-level detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a subdomain from the subdomains table') and even names the backing endpoint (pdns/delete_subdomain), so an agent can distinguish it from edit_dns_subdomain or add_dns_subdomain. It does not, however, explicitly contrast itself with the similarly named delete_dns_domain or delete_dns_zone siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies the prerequisite 'Requires pdns/edit permission', which tells the agent under what conditions the call will succeed. It gives no when-to-use vs when-not guidance and does not route the agent to alternatives such as edit_dns_subdomain or delete_dns_domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_zoneADestructiveInspect
Delete a DNS zone by name along with all records and metadata (pdns/delete_zone). DESTRUCTIVE. Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| zone | Yes | Zone name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: it discloses that all records and metadata are cascaded away (not just the zone object) and that a specific permission scope (pdns/edit) is required. It stops short of stating irreversibility or confirmation behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its blast radius, followed by the risk flag and permission requirement in short fragments. Slightly telegraphic (three fragments rather than flowing prose) but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema and full annotation coverage, the description supplies the important extras: cascade scope, permission requirement, and the underlying endpoint. Only the absence of any return/error expectation or reversibility note keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'zone' and 'confirm' are already documented in the schema, including the 'must be true' semantics of confirm. The description's 'by name' adds only marginal meaning over the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Delete) and resource (DNS zone) with scope clarified: 'along with all records and metadata'. The named API call (pdns/delete_zone) further pins it down, and it is clearly distinguishable from siblings like delete_dns_domain, delete_dns_subdomain, and delete_dns_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It signals the risk profile ('DESTRUCTIVE') and the required permission ('Requires pdns/edit permission'), which implies caution, but it never says when to prefer this over sibling deletes (e.g. domain vs zone) or any preconditions such as zone must be empty. 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.
delete_iso_imageADestructiveInspect
Delete an ISO image by ID (iso/delete). DESTRUCTIVE. Per docs, available only to Hostkey staff — clients will likely get a permission error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ISO image ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The 'DESTRUCTIVE' label duplicates destructiveHint=true, but the description adds genuinely new context beyond annotations: the authorization requirement and likely permission failure for clients. It stops short of describing irreversibility or effects on mounted ISOs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no padding; the destructive nature and auth caveat lead. The parenthetical endpoint reference is mildly redundant but compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-resource delete with annotations covering the safety profile and full schema documentation, the definition supplies the key extra detail (staff-only access). It omits whether deletion is reversible or how mounted ISOs are affected, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both id and confirm are fully documented in the schema. The description only echoes the 'by ID' concept and adds no syntax or format detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete an ISO image by ID') and even names the underlying endpoint (iso/delete). The operation is unambiguous, though it doesn't explicitly contrast with nearby siblings like unmount_iso.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a useful permission caveat ('available only to Hostkey staff — clients will likely get a permission error') that warns when the call will fail, but gives no positive when-to-use framing nor names an alternative operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_rhr_requestBDestructiveInspect
Cancel/close a Remote Hands request (rhr/discard). DESTRUCTIVE: the request will be cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Request ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so 'DESTRUCTIVE: the request will be cancelled' only restates structured data rather than adding context. Nothing is said about irreversibility, whether the rhr can be recreated, required permissions, or effects on related tasks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, front-loaded with the action and immediately followed by the destructive warning. No filler or redundant explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive operation with full schema coverage and annotations covering the safety profile, plus no output schema to explain, the definition is close to sufficient. The remaining gap is the absence of any usage context distinguishing it from the other rhr and cancellation tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (id and confirm), so the schema already carries full parameter meaning. The description adds no syntax, sourcing, or format detail; 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (cancel/close) and a specific resource (Remote Hands request), with the internal operation name 'rhr/discard' disambiguating it from create_rhr_request, list_rhr_requests, and add_rhr_comment. It does not explicitly name an alternative tool, but the resource+action combination is unambiguous within the sibling set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites beyond the schema-level confirm flag, and no routing to alternatives such as delete_cancellation_request or other rhr management tools. The agent must infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_invoiceARead-onlyInspect
Download an invoice as PDF (whmcs/download_invoice). InvAPI returns binary PDF; MCP returns JSON with encoding=base64 and data — decode to a .pdf file.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint and openWorldHint already tell the agent this is a safe read that reaches outside. The description adds genuinely useful behavior: the API returns binary PDF but MCP returns JSON with base64 encoding, a non-obvious transport difference. However it omits error behavior (e.g., what happens for an invalid or unauthorized invoice_id).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences that front-load the action and include the endpoint and encoding detail. Efficient, though the parenthetical endpoint reference is slightly technical clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a single-param read tool: it says what is produced (PDF), how it arrives (base64 in JSON), and what to do with it. No output schema exists, and the description compensates by describing the return shape. Minor gap on failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter has a clear description ('Invoice number'). The description adds no parameter-level semantics beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (download) and resource (invoice) with the output format (PDF). The sibling list contains get_invoice, get_invoices, and get_server_invoices, and this description makes clear this is the download-PDF variant rather than metadata retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a PDF is needed, but never explicitly contrasts with get_invoice/get_invoices to say when to prefer this over those. Usage context is inferable from the purpose, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_natBDestructiveInspect
Delete a NAT record from the database (nat/drop_nat). DESTRUCTIVE, internal/ops action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | NAT record ID | |
| ip | No | Record IP address | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the description's 'DESTRUCTIVE' label largely repeats structured data. It does add that this is an internal/ops action, which is meaningful context, but says nothing about reversibility, permission requirements, or the confirm guard.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses, front-loaded with the verb and resource. The endpoint parenthetical is a small but useful detail; the 'DESTRUCTIVE' restatement is mild redundancy given the annotations, but the text wastes little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the what but not the how-it-interacts-with-siblings picture, and it never mentions the required confirm flag that the schema mandates. Annotations carry the safety profile, so this is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, covering id, ip, and the required confirm flag, so the baseline is 3. The description adds no parameter guidance at all — notably it never explains that id or ip must be supplied to identify the record.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: delete a NAT record, and even names the internal endpoint (nat/drop_nat). It does not, however, distinguish itself from closely related siblings such as remove_static_nat or clear_static_nat, so an agent could still hesitate between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternatives (clear_static_nat, remove_static_nat). The phrase 'internal/ops action' hints at restricted usage but never states the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_dns_subdomainBInspect
Update a subdomain (pdns/edit_subdomain). Requires pdns/edit permission.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Subdomain ID | |
| confirm | Yes | Must be true to run the operation. | |
| server_id | No | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-destructive, open-world mutation, so the safety profile is covered. The description adds the auth requirement (pdns/edit), but says nothing about what is mutated, reversibility, or side effects beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact fragments with no filler; the operation is front-loaded ahead of the permission note. Efficient, though the parenthetical endpoint reference is redundant with the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage and annotations carrying the safety profile, the essentials are present. It remains thin on the actual mutation surface — it never indicates which subdomain fields can be changed — leaving the agent to infer the edit scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with id, confirm, and server_id all documented in the schema, so the baseline is 3. The description adds no syntax or constraint detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (update) and resource (subdomain), which cleanly separates it from the add_/delete_/list_ DNS subdomain siblings. It does not clarify which attributes of the subdomain are editable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real prerequisite ('Requires pdns/edit permission'), which is genuine usage context. However, it gives no when-to-use vs alternatives guidance and no exclusions relative to add_dns_subdomain or delete_dns_subdomain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_due_invoiceCInspect
Create the next invoice for a server (whmcs/generate_due_invoice).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation nature is partly covered. The description adds nothing beyond that: it omits the 'confirm must be true' guard, does not clarify idempotency (whether repeated calls generate duplicate invoices), and gives no billing side-effect context, which matters for an invoice-generating mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, which is efficient. It is arguably under-specified rather than padded, but as pure structure it is tight and wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a billing mutation tool with no output schema, the description should convey what the call produces and its consequences. It does not explain the resulting invoice, billing period, or side effects, leaving the agent without enough context to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'id' (Server ID) and 'confirm' documented in the schema, so the baseline of 3 applies. The description adds no extra meaning about the parameters beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb+resource ('Create the next invoice for a server'), which is better than a tautology, but 'next invoice' is ambiguous about billing period and cycle, and it is not distinguished from the closely related sibling create_addfunds_invoice. The parenthetical '(whmcs/generate_due_invoice)' is just an internal identifier and adds no disambiguating value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as create_addfunds_invoice, get_invoices, or mass_pay, nor any when-not or prerequisite conditions. The agent is left to infer the intended scenario entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoARead-onlyInspect
Current API token and account info (auth/info): available calls, account type and role, linked server IDs. Useful to verify the connection.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the description only needs to add context. It does disclose the concrete returned fields (available calls, account type/role, linked server IDs), which helps the agent judge whether the call is worth making. It stops short of stating auth requirements or whether the token itself is echoed back, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the resource and its contents, then the use case. No filler or restating of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a read-only annotation, and no output schema, the description carries the burden of describing return content and does so with a concrete field list. Minor gaps (auth semantics, whether token value is included) keep it from being fully complete, but it is sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters with 100% schema coverage, so there is nothing for the description to clarify; the baseline for a parameterless tool applies. Little to add or subtract here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('get account info') and enumerates the payload ('available calls, account type and role, linked server IDs'), which distinguishes it from credential-management siblings like list_api_keys or get_billing_client. An agent can tell what this returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence 'Useful to verify the connection' implies a usage context but names no alternatives and no when-not conditions. Nothing tells the agent whether to prefer this over get_billing_client or list_api_keys for account-level questions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_keyBRead-onlyInspect
Details for a specific API key (api_keys/view).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Key ID from list_api_keys |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the endpoint path, disclosing nothing about auth/permission requirements, behavior on an invalid or foreign key ID, or sensitive-data characteristics of the returned key material.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficiently sized for a trivial getter, though the parenthetical endpoint reference is of marginal value to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only getter with a fully documented single parameter and annotations covering safety, the minimum is met. However, with no output schema, the description could have said what the response contains (key token, permissions, creation date) and it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Key ID from list_api_keys'), so the schema already carries the semantic load. The description adds no format, range, or sourcing detail beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('a specific API key') and implies a retrieve verb via 'Details for', plus the underlying endpoint (api_keys/view). It is clear what the tool returns conceptually, but it never names the sibling it differs from (list_api_keys, get_api_key_history) to help an agent disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch details for one key given an ID. The schema's 'Key ID from list_api_keys' hints at the workflow (list first, then get), but the description itself gives no when-to-use, prerequisites, or alternatives versus get_api_key_history/list_api_keys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_key_historyBRead-onlyInspect
API key usage history for a period (api_keys/history).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Key ID | |
| period_to | No | Period end, YYYY-MM-DD | |
| period_from | No | Period start, YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds only the endpoint and the period-scoping concept, but does not describe return format, pagination, or rate limits. With annotations covering the safety profile, this is minimally acceptable additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It is appropriately sized for a simple read-only tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description could usefully explain what 'usage history' returns (e.g., call counts, bandwidth, time-series data). It also omits any usage guidance. Given the simple read-only nature and complete schema, the description is adequate for invocation but leaves notable gaps for result interpretation and tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (id, period_from, period_to) are already documented in the schema. The description's 'for a period' phrase adds marginal contextual meaning but no syntax or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource ('API key usage history') and scope ('for a period'), and the parenthetical endpoint reinforces the intent. It distinguishes itself from get_api_key and list_api_keys by focusing on historical usage, but does not explicitly name or contrast 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like get_api_key or list_api_keys. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billing_clientBRead-onlyInspect
Client data from billing (whmcs/get_client): contacts, currency, account status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the shape of the payload (contacts, currency, account status) but says nothing about auth requirements, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding; the parenthetical API endpoint is compact. Slightly telegraphic, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the main returned fields, and with no parameters and read-only annotations there is little else an agent needs. Missing only guidance on how it relates to sibling billing/contact tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics for the description to explain; the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Client data from billing') and enumerates the returned fields (contacts, currency, account status), which is more than a tautology. It does not explicitly distinguish itself from near-neighbors like get_contacts or get_server_billing_data, 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.
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 get_contacts, get_account_info, or get_server_billing_data. The reader must infer usage purely from the field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cancellation_requestsBRead-onlyInspect
List of active service cancellation requests (whmcs/get_cancellation_requests).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Server ID (filter) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the 'active' scoping nuance (implying non-active/cancelled requests are excluded), but says nothing about pagination or result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the resource front-loaded. The trailing API endpoint path '(whmcs/get_cancellation_requests)' is marginally useful for traceability but slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with annotations covering safety and full schema coverage, this is minimally adequate. It omits when-to-use routing and any return-shape hints, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one optional parameter with 100% schema coverage ('Server ID (filter)'), so the schema already documents it fully. The description adds no additional meaning about how the id filter behaves (e.g., whether omitting it returns all requests).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('active service cancellation requests'), making the read intent unmistakable. The 'active' qualifier scopes it somewhat, though it doesn't explicitly contrast with siblings like delete_cancellation_request or request_cancellation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus request_cancellation (to create one) or delete_cancellation_request (to remove one). The agent must infer from names alone that this is the read-only listing counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactsBRead-onlyInspect
List of additional account contacts (whmcs/get_contacts).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the internal endpoint path (whmcs/get_contacts), with nothing about return contents, pagination, or whether the list is scoped to the authenticated account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding. The parenthetical API path is arguably noise for an agent, but it costs little and the whole description is one line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, annotated read tool this is close to sufficient, but with no output schema the description could have named the contact fields returned (name, email, etc.) or clarified scope. Adequate but leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the schema is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (account contacts) and implies the list/read verb, which cleanly separates it from the write siblings add_contact, update_contact, and delete_contact. The qualifier 'additional' hints these are secondary contacts rather than the primary billing client, though it is not spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as get_billing_client or the contact mutation tools. No prerequisites, auth requirements, or filtering context are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_historyCRead-onlyInspect
Credit balance movement: credit additions and deductions (whmcs/getcredits).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the upstream endpoint hint (whmcs/getcredits); it says nothing about time range, pagination, or whether the id is a client or server identifier, which is the main behavioral ambiguity here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded clause with the endpoint reference tucked in parentheses; no wasted sentences. It is efficient, though the endpoint detail is of marginal value to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no output schema and read-only annotations, this is minimally adequate, but it omits the return shape (a list of movements) and any temporal/pagination behavior, leaving the agent to discover those at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already documents 'id' as Server ID. The description adds no syntax or interpretation beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (credit balance movement) and enumerates the two kinds of entries it reports (additions and deductions), which is more than a restatement of the name. It does not, however, differentiate itself from adjacent billing siblings such as get_transactions, apply_credit, or get_server_billing_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus an alternative, no prerequisite (e.g. which id is expected), and no scope caveat. 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.
get_dns_zoneARead-onlyInspect
DNS zone contents: all records (A, AAAA, CNAME, MX, TXT, etc.) from the authoritative server (pdns/view_zone).
| Name | Required | Description | Default |
|---|---|---|---|
| zone | Yes | Zone name, e.g. example.com |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context by naming the authoritative backend (pdns/view_zone), which signals live rather than cached data, but it says nothing about pagination, error behavior, or result size for large zones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource front-loaded and no filler. The parenthetical backend reference earns its place as provenance, though the colon fragment is slightly clipped rather than a clean declarative statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and annotations covering safety, this is nearly complete: it states the input subject, the source system, and the shape of the returned data. It stops just short of the profile of a 5 because nothing addresses large-zone responses or failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'zone' parameter is documented with an example (example.com), so the schema does the heavy lifting. The description adds no format constraints or naming rules beyond that, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (DNS zone contents) and enumerates what is returned (A, AAAA, CNAME, MX, TXT, etc.), which distinguishes it from list_dns_zones, add_dns_zone, and delete_dns_zone. Its only weakness is the noun-phrase framing – there is no explicit retrieval verb, though 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by scope: fetch the record set for one zone, given a zone name. There is no explicit when-to-use vs. when-not or reference to siblings such as list_dns_zones, so the agent must infer the selection criteria itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceCRead-onlyInspect
Data for a specific invoice for payment (whmcs/get_invoice).
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that, the description only adds the vague qualifier 'for payment', which is ambiguous rather than informative. It does not disclose what the response contains, whether unpaid invoices differ from paid ones, or any auth/scoping requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, and the resource ('a specific invoice') appears early. It is well-sized for the tool, though the parenthetical API-method reference is marginally useful filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no real behavioral detail, the description leaves the agent guessing what 'data' is returned and how this differs from the large family of related billing/read tools. For a simple one-parameter read this is not catastrophic, but it under-serves a namespace crowded with near-neighbors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single required parameter (invoice_id, documented as 'Invoice number'), so the schema fully carries parameter meaning. The description adds nothing about the parameter's format or where the ID comes from, which is the baseline case for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names the resource (a specific invoice) and implies retrieval via 'Data for...', with the underlying API method 'whmcs/get_invoice' as a parenthetical. However, the verb is nominal rather than action-oriented, and with siblings like get_invoices, get_server_invoices, and download_invoice present, it does nothing to distinguish itself from those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_invoices (list all) or download_invoice (retrieve the document). The phrase 'for payment' hints at a billing context but never says whether this is a pre-payment lookup, a verification step, or what triggers its use. 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.
get_invoicesBRead-onlyInspect
Full list of account invoices (whmcs/get_invoices).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond that – no pagination behavior, no result-size expectations, and no auth prerequisites for a list tool that could return many invoices.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding; the scope ('full list of account invoices') comes before the parenthetical endpoint reference, which is a minor but essentially harmless addition. Efficient and unambiguous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with annotations covering safety and no output schema, the description is close to adequate, but it omits any hint about result volume or pagination, which matters for a 'full list of invoices' call. Adequate but with a clear remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters (schema coverage 100% trivially), so per the rubric a baseline of 4 applies. There is nothing parameter-related for the description to compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb and resource ('get_invoices') and scopes it as the full list of account invoices, which implicitly distinguishes it from get_invoice (single) and get_server_invoices. It does not explicitly name or differentiate against those siblings, but the 'full list' phrasing makes the scope legible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus get_invoice, get_server_invoices, or download_invoice. It simply asserts what it returns, leaving the agent to infer selection criteria from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ip_infoCRead-onlyInspect
Network interface information by IP address (ip/get_ip).
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and outside-the-sandbox behaviour are covered. The description adds nothing beyond a restatement of the resource plus the raw API path '(ip/get_ip)', giving no insight into what fields are returned or whether the IP must be owned by the account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short line that is front-loaded with the resource and the lookup key, with no padding. The parenthetical API path is mildly extraneous but not harmful, and the whole thing is arguably under-specified rather than over-long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema and annotations covering the safety profile, the minimum is met, but the agent is not told what the 'information' comprises (name, MAC, addresses, PTR) or any preconditions on the IP. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'ip' parameter, so the baseline is 3. The phrase 'by IP address' merely echoes the schema and adds no format or validation meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('network interface information') and the keying parameter ('by IP address'), so the agent knows this is a read lookup keyed on an IP. It is a noun phrase rather than a verb+resource sentence, and it does not distinguish itself from nearby siblings like get_network_status, get_port_graphs, or get_ptr_record.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. With siblings such as get_network_status and get_port_graphs operating in the same networking area, the description never says which situation selects this tool, nor does it name an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_statusARead-onlyInspect
Server network interface status (net/get_status): port, switch, VLAN, speed, MAC, link status. Optional port limits the query to one interface (useful when another NIC has no upstream_id).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| port | No | Optional physical/logical interface or switch port (e.g. eth0). Omit to query all; if InvAPI fails on an unmapped NIC, retry with a mapped port from get_server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint annotations covering safety, the description adds value by enumerating the fields returned and noting a behavioral quirk: another NIC may lack an upstream_id. It does not discuss error handling, rate limits, or permissions, but the added return-value context is substantial beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste: the first front-loads the purpose and returned fields, and the second provides a specific, actionable usage note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotations and full schema coverage, the description is nearly complete for this tool. It lists return fields, which compensates for the lack of an output schema, though it could mention error behavior or upstream_id implications more explicitly. Still, it provides all essential context for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's note about `port` limiting the query to one interface (useful when another NIC has no upstream_id) largely repeats information already present in the schema's `port` description, adding no new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves server network interface status and lists the specific fields returned (port, switch, VLAN, speed, MAC, link status). It does not explicitly differentiate from any sibling tool, but no sibling appears to perform a similar network-status retrieval, so an agent can still easily identify its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers a usage hint for the optional `port` parameter ('useful when another NIC has no upstream_id'), which implies when to use that parameter. However, it does not state when to use this tool versus alternatives (e.g., other network-related tools like `get_port_graphs` or `get_server`), leaving overall usage guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payment_gatewayCRead-onlyInspect
Payment methods for a specific invoice (whmcs/getpaymentgw).
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | Invoice number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds nothing beyond the basic purpose: no indication of what the result contains (gateway list, statuses, availability), no auth or scoping notes. The bar is lower with annotations present, yet no extra behavioral context is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence plus an endpoint reference; nothing is wasted and it is front-loaded. It is efficient, though the endpoint token adds little value to an agent selecting the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full schema coverage and safety annotations, the description is minimally adequate. It omits the action verb and any hint of return shape, which matters since no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema description coverage is 100% ('Invoice number'), so the schema carries the semantics. The description's phrase 'for a specific invoice' merely restates the parameter's role and adds no format or usage detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('Payment methods for a specific invoice') but uses a noun phrase with no verb, leaving it ambiguous whether it lists payment gateways available to pay the invoice or methods already used. It also does not distinguish this from nearby billing siblings such as get_invoice or get_transactions. Understandable, but vaguer than a clean 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.
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., the invoice must exist or be unpaid), and no reference to any alternative tool. The agent is left to infer the context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_port_graphsBRead-onlyInspect
Port utilization graphs for a period (net/show_cacti): day/month/year.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| port | Yes | Physical switch port | |
| graph | Yes | 1 — day, 2 — month, 3 — year |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds only a cryptic source reference ('net/show_cacti') and the period granularity, but does not disclose return format, pagination, or any other behavioral trait beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It packs purpose, source hint, and period options efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with full schema coverage and safety annotations, the description covers the core purpose. However, with no output schema, it could say more about what the returned graphs actually contain or how to interpret them.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description repeats the day/month/year options without adding syntax or meaning beyond the schema's 'graph' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource clearly: port utilization graphs for a time period, with day/month/year options. It does not explicitly differentiate from sibling tools, but the resource is specific enough for an agent to identify the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 get_network_status or get_power_status. It merely enumerates the period options, leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_power_statusBRead-onlyInspect
Current server power status (on/off).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is covered. The description adds a small amount of behavioral value by naming the returned states (on/off), but says nothing about latency, freshness, or error behavior when the server is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource and result domain front-loaded and no filler. It is slightly telegraphic and lacks a closing period, but every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, annotation-covered read tool with no output schema, the description covers the essential purpose and the shape of the answer. A brief note on failure cases (unreachable/unknown server) would make it fully complete, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter ('Server ID'), so the schema already carries parameter meaning. The description adds no further qualifier such as whether the ID is a numeric server identifier versus a hostname, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (server power status), plus the returned value domain (on/off), so the agent knows exactly what it retrieves. It does not, however, distinguish itself from lookalike siblings such as get_server or get_network_status, which it could have done in a phrase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives. Siblings like power_on, power_off, request_rh_power_on, and request_rh_power_off are close neighbors, and the description gives no cue about which to pick or any prerequisite (e.g., checking status before a power action).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presetBRead-onlyInspect
Details for one preset or all presets (presets/show). May require auth depending on permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Preset ID; omit for full list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds an auth caveat that annotations do not express, which is genuinely useful, but the hedge 'may require auth depending on permissions' is too vague to be actionable (which permission? what happens if unauthorized?).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded: the resource and scope come first, with a secondary note on auth. The endpoint breadcrumb '(presets/show)' is slightly gratuitous but harmless. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial one-optional-param read tool, the definition is adequate but thin. With no output schema, the agent gets no hint of what 'details' comprise (settings fields? pricing? configuration?), and the auth condition is left unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single parameter's description ('Preset ID; omit for full list') already conveys the optionality semantics. The description's 'one preset or all presets' merely restates that, adding no format or constraint detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and scope precisely: details for a single preset or the full collection, with the underlying endpoint (presets/show) named. However, it never distinguishes itself from siblings like list_presets or search_presets, and 'or all presets' overlaps semantically with list_presets, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the weak conditional 'may require auth depending on permissions,' which gives no actionable rule. Nothing tells the agent when to pick this over list_presets, search_presets, or get_preset_pricing, despite four closely related preset siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_preset_pricingBRead-onlyInspect
Prices for available presets in given currencies (presets/info). No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| currencies | No | Currency codes, comma-separated, e.g. EUR,USD. Default EUR |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety profile is covered. The description adds one useful behavioral fact not in annotations: 'No token required,' which is relevant for unauthenticated access. It does not, however, describe caching, currency defaults beyond the schema, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core purpose front-loaded, plus the endpoint hint and auth note. No wasted words, though it is arguably too terse to be maximally useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read-only tool with 100% schema coverage and clear annotations, the description covers purpose and the notable auth exemption. Since no output schema exists, return-value detail is not strictly required, though a hint about the pricing structure would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the currencies parameter is already fully documented with format ('EUR,USD') and default ('EUR'). The description's 'in given currencies' only restates what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource combination: retrieves pricing for presets in specified currencies. Distinguishes itself as a pricing lookup rather than a preset listing, but does not explicitly differentiate from siblings like get_preset or list_presets, which could also be candidates for preset-related queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_preset (preset details) or list_presets (available presets). The only contextual note is 'No token required,' which covers auth rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ptr_recordBRead-onlyInspect
Current PTR record (reverse DNS) for an IP address (ip/get_ptr).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | IP address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only that the value returned is the 'current' reverse-DNS record, with no note on whether a record may be absent or how the lookup fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with zero padding, front-loading the resource and its reverse-DNS nature. It is arguably too terse to be maximally useful, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally hint at the return shape (e.g., a hostname string) or a not-found case; it only says 'Current PTR record'. For a simple two-parameter read covered by annotations, this is adequate but leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'id' = Server ID and 'ip' = IP address are documented in the schema), so the baseline is 3. The description adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: reads the 'Current PTR record (reverse DNS)' for an IP, and the '(ip/get_ptr)' note pins the underlying endpoint. It does not explicitly distinguish itself from the sibling update_ptr_record, which would be the obvious confusion point, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool returns but never states when to use it versus alternatives such as update_ptr_record or get_ip_info, nor any prerequisites. An agent must infer from the name that this is read-only retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serverARead-onlyInspect
Full server details by ID (eq/show): configuration, network, status, location.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID in InvAPI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description usefully enumerates the data domains returned (configuration, network, status, location), but adds nothing about permissions, freshness, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The parenthetical '(eq/show)' is opaque API jargon that costs a little clarity without adding value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of telling the agent what comes back, and it does list the major content areas. It stops short of anything on pagination, error cases, or the meaning of the '(eq/show)' token.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it as the InvAPI server ID. The description's 'by ID' reinforces but does not extend that meaning, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Full server details by ID') and enumerates the returned content areas (configuration, network, status, location). It is clearly the single-server fetch, implicitly distinct from the plural sibling get_servers, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the precondition (you must already know the server ID), but there is no explicit when-to-use guidance or routing against alternatives like get_servers, get_power_status, or get_server_sensors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_billing_dataCRead-onlyInspect
Billing information for a server rental (whmcs/get_billing_data).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds nothing beyond that – it doesn't say what billing data is returned (rates, renewal, payment status), whether it is cached/live, or whether it requires a billing-scoped API key.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, tight sentence with no filler; the resource is front-loaded. The parenthetical backend path is harmless metadata.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what is returned, and it does not – 'billing information' is left undefined. For a billing-domain getter in a large sibling set, this leaves 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single required integer 'id' fully documented in the schema, so baseline 3 applies. The description contributes no additional parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a resource (billing information for a server rental) and implies a getter via the tool name, but the phrase 'billing information' is vague about what fields are involved. It does not distinguish itself from close siblings like get_server_invoices or get_billing_client, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no alternative named, and no prerequisite stated. With many billing-adjacent siblings (get_invoices, get_server_invoices, get_transactions, get_billing_client), 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.
get_server_invoicesCRead-onlyInspect
Invoices related to a specific server (whmcs/get_related_invoices).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only the upstream API mapping (whmcs/get_related_invoices), which does not disclose pagination, ordering, result shape, or what counts as 'related'. Nothing behavioral beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single economical sentence with no waste, but it is arguably too terse: one short clause plus a parenthetical endpoint reference for a tool that could carry more routing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema this is minimally viable, but it omits what is returned (count, fields, pagination) and how it differs from get_invoices/get_invoice in a large billing sibling group.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'id' is documented as 'Server ID'. The description's 'specific server' phrasing reinforces this but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (invoices) scoped to a specific server, which distinguishes it from the sibling get_invoices (all invoices) and get_invoice (single invoice). It lacks an explicit verb but the noun phrase plus scope is unambiguous enough to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_invoices or get_invoice, nor any prerequisite or context. The scoping phrase 'related to a specific server' hints at the use case but leaves the agent to infer the alternative's condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serversARead-onlyInspect
List Hostkey account servers with filters. Before the first call, automatically refreshes inventory (eq/update_servers). Returns server IDs and brief data; use get_server for the full card.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Find server by IP address | |
| mac | No | Find server by MAC address | |
| group | No | Groups, comma-separated: VPS,Gpu,1CPU,2CPU,AMD,Instances,Storage,Nodes,Micro,Mini,Dell | |
| status | No | Status: rent (active) or power_off (suspended) | |
| location | No | Location codes, comma-separated: NL,US,FI,DE,IS,TR,UK,ES,IT,PL,CH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds a real behavioral trait not present in structured data: an automatic inventory refresh (eq/update_servers) triggered before the first call. It also discloses that results are summary-level, which sets expectations for downstream calls. It does not mention pagination or result caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with identity and scope, then the side effect, then the routing hint. Nothing is padding and each sentence changes agent behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the burden of saying what comes back ('server IDs and brief data') and points to the richer sibling for full detail. The pre-call refresh side effect is also covered. Pagination/volume limits are the only notable omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (ip, mac, group, status, location) already documents its semantics, including the accepted comma-separated codes. The description only says 'with filters' and adds no syntax, precedence, or combination rules beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('List Hostkey account servers') plus the filter scope, and explicitly separates itself from the sibling get_server by scoping its return to IDs and brief data. An agent can pick between get_servers and get_server 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete alternative and the condition that selects it ('use get_server for the full card'), which is exactly the routing decision an agent faces here. It stops short of stating when to use search_servers_by_tag or the stock-server listers, so it isn't fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_sensorsARead-onlyInspect
Hardware sensor readings (temperatures, voltages, fans). Bare-metal only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds the bare-metal eligibility constraint and the sensor categories, but says nothing about permissions, rate limits, or what a caller gets when sensors are unavailable on the target host.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, no filler, and the content enumeration is front-loaded ahead of the scoping caveat. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotation coverage and no output schema, the description supplies the essential distinction (bare-metal) that an agent needs to call it correctly. It stops just short of clarifying behavior on hosts that lack exposed sensors.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (id) exists and the schema documents it fully (100% coverage), so the schema carries the burden. The description adds no format or constraint detail about the id beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (hardware sensor readings) and enumerates the content types (temperatures, voltages, fans), which cleanly distinguishes it from neighbors like get_power_status and get_network_status. It lacks an explicit verb such as 'retrieve', 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Bare-metal only' is an effective when-not condition that rules out virtual servers, so the scope is implied. However, it never names an alternative tool or states when a caller would prefer this over get_server or get_power_status, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_tagsBRead-onlyInspect
All server tags (tags/list). Tags store arbitrary key-value pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful piece of context — that tags hold arbitrary key-value pairs — but says nothing about ordering, pagination, or the shape of the returned collection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the primary purpose is front-loaded ahead of the elaboration. The endpoint parenthetical is marginally useful but slightly technical for a prose description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should describe what comes back; 'arbitrary key-value pairs' partially covers that but leaves the return structure and empty-state behavior unspecified. Adequate but with visible gaps for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented 'id' (Server ID) parameter, so the schema carries the meaning. The description never references the required server id, adding no semantics beyond the schema — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('server tags') and scope ('all'), and the parenthetical endpoint ('tags/list') anchors the operation. It is distinguishable from siblings like search_servers_by_tag or get_server, though it never explicitly names them, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as search_servers_by_tag (which searches servers by tag) or get_server. The only contextual cue is the raw endpoint name, which assumes the reader already knows the API surface.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snapshotsCRead-onlyInspect
List virtual machine snapshots (vm/get_snapshot): name, snapshot_id, date.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Virtual machine ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing behavioral beyond that: no pagination, ordering, volume, or permission context, and no statement of what happens for a VM with no snapshots.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the purpose front-loaded and the return fields listed compactly. It is efficient, though arguably under-specified rather than deliberately minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields (name, snapshot_id, date), which is the main thing an agent needs. However it omits pagination, ordering, empty-result behavior, and any routing to the sibling snapshot operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'id' is documented in the schema as 'Virtual machine ID'. The description adds only the endpoint mapping, not format, range, or error semantics, so the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List virtual machine snapshots') and even names the underlying API endpoint (vm/get_snapshot), which clearly separates it from the mutating siblings create_snapshot, remove_snapshot and restore_snapshot. It stops short of explicitly naming those alternatives, so it is clear but not sibling-differentiating in prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. An agent is not told that this is the read path preceding restore_snapshot or remove_snapshot, nor that it requires an existing VM id. The usage context 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.
get_stock_serverCRead-onlyInspect
Details for a specific stock server (stocks/show).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stock server ID from list_stock_servers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds only the endpoint mapping '(stocks/show)' and says nothing about return shape, error behavior, or access requirements, so it contributes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact fragment that is front-loaded with the essential information and contains no filler. It is efficient, though the endpoint parenthetical is marginally useful to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with full schema coverage and no output schema, the description is minimally adequate. It omits any routing to the list tool or hint about what 'details' includes, leaving a modest gap for an agent deciding between it and list_stock_servers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is fully documented in the schema ('Stock server ID from list_stock_servers'). The description adds no further semantics about the identifier, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (a specific stock server) and an operation (retrieve details), and the parenthetical '(stocks/show)' pins the underlying endpoint. It implies the singular counterpart to list_stock_servers, but never names that sibling explicitly, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus list_stock_servers or any other retrieval sibling, and no prerequisites or exclusions. Usage can only be inferred from the phrase 'a specific stock server' and the schema note that the id comes from list_stock_servers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionsBRead-onlyInspect
List of transactions for the client account (whmcs/transactions).
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | No | Filter by invoice | |
| transaction_id | No | Specific transaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered structurally. The description adds the useful detail that this queries the WHMCS transactions source ('whmcs/transactions'), but says nothing about pagination, result limits, or return shape 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with zero filler, scoping the resource first. Nothing is wasted and the key qualifier is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with two optional filters, no output schema, and annotations covering safety, the description is nearly complete. The only gap is lack of any note on pagination or result volume for the transaction list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both optional filters (invoice_id, transaction_id) are already documented in the schema. The description adds no additional format or behavioral detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource (transactions) and scope ('for the client account'), so an agent knows this is a listing operation over account transactions. It does not, however, distinguish it from adjacent billing siblings like get_invoices, get_credit_history, or get_billing_client, so differentiation 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_invoice or get_credit_history, and no prerequisites or exclusions are stated. Usage must be inferred 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.
get_uploaded_isosARead-onlyInspect
List ISO images uploaded by the client (iso/uploaded).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful scoping context via the iso/uploaded endpoint, clarifying this returns client-uploaded images only, but says nothing about result volume, filtering, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource and its scope stated first and the endpoint hint second. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing with no output schema, the description is nearly sufficient. The remaining gap is the absence of any routing cue between this and list_iso_images, which is the main ambiguity an agent faces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing for the description to add or omit on the parameter front.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a scoped resource (ISO images uploaded by the client), and even names the underlying endpoint (iso/uploaded). It does not distinguish itself from the sibling list_iso_images, so an agent must guess which listing is the right one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of the closely related siblings list_iso_images, upload_iso, add_iso_image or mount_iso. The scope is implied by the name only, leaving the agent to infer the relationship between 'uploaded' and the general ISO catalog.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vm_engineCRead-onlyInspect
Virtualization engine information (vm/get_engine).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond restating the API endpoint in parentheses — no scope, freshness, or content of the engine data — so it contributes almost 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the endpoint reference in parentheses; front-loaded and waste-free. It is terse rather than padded, though the parenthetical adds little for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument read-only tool with no output schema, the description is minimally viable but does not say what the engine information comprises, leaving the agent unable to predict the response. Adequate but with a clear gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description neither helps nor hurts here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource ('virtualization engine information') but the verb is weak and it never says what information is returned, nor distinguishes it from the closest sibling get_vm_stats. An agent can tell it is a read of VM engine data, but not what that data is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives among the many VM/console siblings (get_vm_stats, get_vnc_console, etc.). 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.
get_vm_statsCRead-onlyInspect
Virtual machine statistics (vm/load_stats).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Virtual machine ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds nothing beyond a raw endpoint reference. It does not disclose what statistics are returned, their freshness, or any rate-limit/polling behavior — the parenthetical is a restatement of the API route, not behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short fragment with no waste, but it is undersized rather than efficiently front-loaded — the endpoint parenthetical occupies space that could have carried meaningful scope information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with annotations covering the safety profile and full schema coverage, the minimum is met. What is missing is any indication of the returned statistics (no output schema exists), which matters most for a 'stats' tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single required 'id' parameter already documented as 'Virtual machine ID'. The description adds no format, range, or acquisition guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (virtual machine statistics) and implies retrieval, and the endpoint path (vm/load_stats) narrows it further. However, it never states the verb explicitly nor what 'statistics' means, so an agent cannot tell it apart from siblings like get_vm_engine or get_snapshots without guessing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool, what prerequisites exist, or which sibling to prefer for related VM data (get_vm_engine, get_power_status, get_server_sensors). The agent is left to 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.
get_vnc_consoleARead-onlyInspect
Access the server VNC console (eq/console): returns console.vv config in Base64 for virt-viewer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds valuable behavioral detail beyond that: the exact return format ('console.vv config in Base64') the agent will receive, which is meaningful since there is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the action, the endpoint, and the return type all appear without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool, the description covers purpose and return format well. It does not mention prerequisites (e.g., server power state) that would condition a successful call, but against annotations and the fully documented schema it is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as 'Server ID'. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Access the server VNC console') and immediately names the return artifact ('console.vv config in Base64 for virt-viewer'). This is far more specific than a tautology, though it does not explicitly distinguish itself from the console sibling start_novnc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for virt-viewer' implicitly signals the usage context (native VNC client rather than a browser console), but there is no explicit when-to-use/when-not guidance and start_novnc is never named as the alternative for browser-based access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_api_keysBRead-onlyInspect
List all account API keys (api_keys/list).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds nothing beyond the raw endpoint string 'api_keys/list' – no mention of pagination, result volume, or permissions, which is the kind of context that would earn credit here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste, front-loading the action and resource. The endpoint reference is a compact addition rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple parameterless read tool with no output schema, the description is nearly sufficient, but it omits any indication of return shape or pagination behavior, which an agent cannot recover from the absent output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to clarify. The schema is empty and fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all account API keys'), and the 'account' qualifier implicitly separates it from the sibling list_server_api_keys. However, it never explicitly contrasts the two, so the distinction relies on the agent inferring from the scope word.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the 'account' scoping; there is no statement about when to prefer this over list_server_api_keys or get_api_key / get_api_key_history. Adequate but with a clear missing routing hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_domainsBRead-onlyInspect
List all user domains from the domains table (pdns/list_domains).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description's only extra content is the internal source ('domains table (pdns/list_domains)'), which is implementation detail rather than behavior; it says nothing about pagination, result size, auth scope, or filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and no filler. The parenthetical endpoint reference is marginal value for an agent but costs almost nothing in length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema and annotations covering the safety profile, the description is essentially sufficient. The remaining gap is not clarifying how this list differs from list_dns_zones/list_dns_subdomains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to compensate for. Baseline applies; the description cannot and need not explain parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all user domains') and even names the backing table/endpoint, so the action is unambiguous. However, it does not distinguish itself from close siblings such as list_dns_zones or list_dns_subdomains, leaving the domains-vs-zones boundary for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no pointer to alternatives despite several overlapping DNS listing tools in the sibling set. The agent gets no signal about which listing tool applies to which situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_subdomainsCRead-onlyInspect
List subdomains by server ID (pdns/list_subdomains).
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds nothing behavioral beyond that — no note on pagination, ordering, result size, or what an empty result means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tightly-scoped sentence that is front-loaded with the action and resource, and the parenthetical method reference is compact. Nothing is padded, 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-parameter list tool with full schema coverage the description is minimally adequate, but with no output schema it still omits return shape and pagination expectations that an agent would need to consume results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter (server_id), so the schema carries the burden. The description's 'by server ID' adds no meaning beyond the schema's own 'Server ID' entry, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (subdomains) scoped by server ID, plus the underlying API method. It is distinguishable in principle from siblings like list_dns_domains, but it never names those siblings or clarifies the subdomain-vs-domain boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over list_dns_domains, get_dns_zone, or the add/edit/delete subdomain siblings. Usage is only implied by the noun 'subdomains'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_zonesARead-onlyInspect
List all DNS zones on the account on Hostkey PowerDNS servers (pdns/list_zones).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the backend context (Hostkey PowerDNS servers, pdns/list_zones), but says nothing about result size, pagination, or whether zones include their records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resource and scope come first and the endpoint reference is parenthetical. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the description gives enough to call it correctly. It could be more complete by clarifying how zones relate to the domain/subdomain listing tools, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics burden to carry and the schema is trivially complete. The description's mention of account scope is consistent with the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all DNS zones on the account') and narrows the scope to Hostkey PowerDNS servers, even citing the backing endpoint (pdns/list_zones). It is clear on its own, though it does not explicitly distinguish itself from nearby siblings like list_dns_domains, list_dns_subdomains, or get_dns_zone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus list_dns_domains, get_dns_zone, or list_dns_subdomains, nor any stated prerequisites or exclusions. The agent must infer the intended use 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.
list_iso_imagesARead-onlyInspect
List available ISO images (iso/list_iso). InvAPI requires a server id (for client keys); images are matched to the server configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID in InvAPI (required) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious behavior: results are server-specific and matched to the server configuration rather than being a global catalog, and it flags the InvAPI client-key requirement. Return shape/pagination is not covered, but that is minor for a read-only listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the verb+resource, followed by the key constraint. No filler or repetition of the title, though the parenthetical endpoint reference is somewhat redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only listing tool with no output schema and full annotation coverage, the description provides enough: what it lists, the required input, and the server-scoped matching behavior. Only the absence of sibling differentiation and return-format hints keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter 'id' is already documented as 'Server ID in InvAPI (required)'. The description adds only the rationale ('for client keys') and the matching behavior, which is marginal value 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List available ISO images') and even names the underlying API endpoint (iso/list_iso). It does not distinguish this tool from nearby siblings like get_uploaded_isos, list_os, or list_presets, so an agent must infer the difference 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes a precondition ('InvAPI requires a server id') and that images are matched to the server configuration, which implies when the tool is applicable. However, it never states when to use this versus get_uploaded_isos or mount_iso, and gives no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_osARead-onlyInspect
Operating systems available for a preset/server (os/list). Without instance_id returns OS for all presets. No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | Preset ID from list_presets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context: 'No token required' (auth requirement) and the scope-switching behavior of instance_id, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, all front-loaded and information-dense: resource, endpoint, conditional behavior, and auth note. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-parameter read tool with no output schema, the description covers scope, the global-fallback behavior, and auth requirements. Only the return shape is unstated, which is acceptable given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents instance_id as 'Preset ID from list_presets', so baseline is 3. The description adds meaning beyond the schema by explaining what omitting the optional parameter does (returns OS for all presets), clarifying the semantics of its optionality.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: operating systems available for a preset/server, and even maps it to the raw endpoint (os/list). It is distinguishable from siblings like list_presets and list_software, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The conditional 'Without instance_id returns OS for all presets' implies the two usage modes (scoped vs. global), but there is no explicit when-to-use guidance or reference to sibling tools such as list_presets or list_software.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_post_install_tasksARead-onlyInspect
Available post-install Ansible tasks (jenkins/get_tasks) with applicability tags: gpu, bm, vm, vgpu, default. Without a token — general list; with a token — tasks available to the specific user.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond them by enumerating the applicability tags (gpu, bm, vm, vgpu, default) and disclosing that the result set is scoped by whether a token is supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what the tool returns, then the tag vocabulary and the token-scoping rule. No filler; the parenthetical API path is the only marginally expendable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only listing tool with no output schema, the description supplies the important context an agent needs: the tag taxonomy and the user-scoping behavior. It stops short of describing the item shape returned, but that gap is small.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document and the baseline is 4. The token/scope note actually anticipates the auth-context variation that the empty schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list available post-install Ansible tasks) and even names the backing operation (jenkins/get_tasks), so the agent knows exactly what is returned. It does not explicitly name the complementary sibling run_post_install_task, though the list/run distinction is hard to confuse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains a behavioral condition — token present vs absent changes the scope of the list — which is useful context, but never says when to call this versus run_post_install_task or other discovery tools. Usage is only implied from the name and scope note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_preset_groupsBRead-onlyInspect
Preset groups for catalog categories (presets/groups). No token required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe-read profile is known without the text. The description adds a genuinely useful auth detail ('No token required'), which is not conveyed by the annotations and matters for callers deciding whether to authenticate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource front-loaded and the endpoint and auth note appended. It wastes no words, though the phrasing is terse enough to be slightly cryptic about what a 'preset group' actually is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param read-only listing tool with annotations covering the safety profile and no output schema, the description is minimally adequate. It omits any indication of what the returned group objects contain or how they relate to presets, which would help an agent choose among the preset siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; per the baseline rule this scores 4. No parameter guidance is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Identifies the resource ('preset groups for catalog categories') and even names the underlying endpoint ('presets/groups'), but the verb is implicit and it never distinguishes this from the closely related siblings list_presets, get_preset, and search_presets. An agent can guess this is a listing endpoint, but the distinction from list_presets 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.
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 list_presets or the other preset tools, and no prerequisites or exclusions. The only guidance is the parenthetical endpoint path, which describes location rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsARead-onlyInspect
Current list of available instant servers (VM/BM/GPU/vGPU) with prices for a location. No token required. Use to pick a preset before ordering.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond them: 'No token required' (auth requirements) and 'Current' (freshness of the listing), which are useful for an agent deciding whether it can call this anonymously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource and its scope, followed by the usage cue. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with full schema coverage and safety annotations, the description is nearly sufficient: it explains what the list contains and when to use it. Minor omissions (return shape/pagination) are acceptable since no output schema exists but the tool's nature is a straightforward listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema coverage, the schema already documents location and its allowed values. The description contextualizes that a location drives both availability and pricing, but adds no syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('list presets') and enriches it with the domain ('instant servers (VM/BM/GPU/vGPU) with prices for a location'), so the agent knows exactly what comes back. It does not explicitly distinguish itself from the sibling search_presets, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use to pick a preset before ordering' gives clear when-to-use context tied to the ordering workflow. It offers no explicit when-not-to-use or named alternative, so it lands at a solid 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rhr_requestsARead-onlyInspect
List Remote Hands requests with filtering by location and status (rhr/list).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by request status | |
| location | No | Filter by location, e.g. NL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered structurally. The description adds only the endpoint codename '(rhr/list)' and the filterability, with no return shape, pagination, or default-behavior detail, so it adds light context rather than meaningful transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the action first, then the filter scope, then the endpoint hint. Nothing is wasted and no filler is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless-required, read-only list tool with full schema coverage and annotations covering the safety profile, the description supplies enough to call it correctly. The absence of return-format detail is acceptable since there is no output schema, though it leaves the agent slightly under-informed about result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (status, location) are documented in the schema, including the 'NL' example. The description adds nothing beyond echoing what the schema already defines, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List Remote Hands requests') and describes the filtering axes ('location and status'), which clearly distinguishes it from the create/discard/comment RHR siblings. However, it does not explicitly name any sibling to route between, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of filtering by location and status implies the retrieval context, but there is no explicit when-to-use guidance, no statement of when not to use it versus get_single_request-style siblings, and no prerequisites. Usage is only inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_server_api_keysARead-onlyInspect
List API keys issued for a specific server (api_keys/list_for_server).
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered. The description confirms the read operation and adds the server-scoping constraint, but says nothing about pagination, sorting, or auth requirements beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler; the verb and scope appear immediately and the endpoint reference is short and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one fully documented parameter and annotations carrying the safety profile, the description is adequate. It could optionally clarify the difference from list_api_keys, but nothing essential to invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter (server_id), so the schema already documents it. The description's mention of 'a specific server' only restates the parameter's purpose and adds no format or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and resource ('API keys') plus the scope ('issued for a specific server'), which cleanly distinguishes it from the broader list_api_keys and the single-item get_api_key. The parenthetical endpoint (api_keys/list_for_server) reinforces exactly what operation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for a specific server' implies the usage context, but there is no explicit when-to-use guidance or named alternative (e.g., list_api_keys for all keys vs. this tool for server-scoped keys). Usage is inferable but left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_softwareBRead-onlyInspect
Software (marketplace apps) available for auto-install (software/list). No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH | |
| instance_id | No | Preset ID from list_presets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so read-only semantics are covered. The description does add one piece of behavior annotations do not cover: 'No token required', which is genuinely useful auth context for an agent deciding whether it can call this before authenticating. It says nothing about pagination, result size, or whether the list is region-filtered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, with the resource named first and the auth caveat trailing. The '(software/list)' parenthetical is endpoint trivia of dubious value to an agent, which is the only real slack in otherwise tight phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter read tool with no output schema, the description covers what the tool returns conceptually (available software) and its auth posture. It stops short of explaining how location and instance_id combine to filter results or what happens when both are omitted, leaving a meaningful gap for a listing endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (location with its enum-like country list, instance_id referencing list_presets) are already documented in the schema. The description adds no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource precisely (marketplace apps available for auto-install) and implicitly the verb via the tool name 'list', so it is distinguishable from siblings like list_os or list_presets. It does not explicitly contrast itself with any sibling, but the scope qualifier 'available for auto-install' does the disambiguating work well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus list_presets, list_os, list_traffic_plans, or the other catalog-listing siblings. The only contextual hint is the parenthetical endpoint and 'No token required', which tells the agent about auth but not selection conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_stock_serversARead-onlyInspect
Available stock servers (physical servers of standard configs; deploy within a business day). No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | Server group; GPU servers are not included in other groups | |
| location | Yes | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds two pieces of genuinely useful context that annotations do not carry: the auth situation ('No token required') and the provisioning-time behavior of the returned inventory. It stops short of describing return format 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence front-loads the resource, then qualifies it with the two facts that matter (what they are, how fast they deploy) and the auth note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only list tool with full schema coverage and no output schema, the description supplies the domain context and auth note an agent needs. It would be stronger if it hinted at the result shape or how to follow up (e.g., ordering from a returned stock server).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the group enum and location codes are fully documented in the schema, including the note that GPU servers are excluded from other groups. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Available stock servers') and enriches it with a precise definition — physical servers of standard configs that deploy within a business day. This clearly separates it from get_stock_server (singular lookup) and get_servers (already-owned servers), though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'deploy within a business day' parenthetical implies the use case (finding quickly provisionable hardware), but there is no explicit when-to-use/when-not statement and no alternative tool is named. 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.
list_traffic_plansARead-onlyInspect
Available traffic plans for a preset in a location (traffic_plans/list). No token required.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH | |
| instance_id | Yes | Preset ID from list_presets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds a genuinely useful behavioral fact not present in structured data: 'No token required.' It still says nothing about pagination or result ordering, but the auth disclosure is real added value on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, resource and scope front-loaded, endpoint cited compactly, no filler. Nothing could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only list tool with no output schema, the definition is workable but silent on what a traffic plan contains (fields, units, whether multiple plans are typically returned). With no output schema to fall back on, a brief note on the result shape would have made it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (location with its country-code list, instance_id as a preset ID) are fully documented in the schema. The description only restates that the plans are 'for a preset in a location', adding no syntax or format detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (traffic plans) with two scoping dimensions (preset, location) and even cites the underlying endpoint. It is distinguishable from the similar-sounding s3_list_plans (object-storage plans), though it never names 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.
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 alternatives, nor any prerequisite ordering (e.g. 'call list_presets first to obtain instance_id'). The only implied guidance is the parenthetical endpoint reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logoutAIdempotentInspect
End the current API session (auth/logout): session token is removed from InvAPI. On the next call the client will sign in again with the API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description discloses the actual mechanism: the session token is removed from InvAPI, and re-authentication happens automatically on the next call. This clarifies that the operation mutates client session state but is self-recovering, which is exactly the kind of context annotations cannot convey. It stops short of mentioning failure modes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The primary effect is front-loaded, and the recovery behavior follows as supporting detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description covers the essential effect and the post-call recovery path. The only unaddressed area is error behavior (e.g., logging out with no active session), which is minor for a tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. No parameter information is missing or misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'End the current API session' with the underlying endpoint '(auth/logout)'. No sibling in the list performs session termination, so the agent can identify it immediately and unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case clear (terminate the session) and explains the follow-on behavior that informs the decision: 'On the next call the client will sign in again with the API key.' There are no alternative session tools to disambiguate against, so no explicit exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mass_payCInspect
Create a group invoice to pay multiple invoices at once (whmcs/mass_pay). MONEY.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. | |
| invoices | Yes | Array of invoice numbers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false. The description adds no behavioral context beyond restating the operation: it does not explain financial consequences, required permissions, the role of confirm=true (only in schema), or the outcome of paying invoices. The cryptic 'MONEY.' tag is unhelpful rather than informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main sentence is concise and front-loaded. However, the trailing 'MONEY.' is noise that does not earn its place and adds no actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a financial mutation tool with no output schema, the description is too sparse. It omits critical context such as what happens to funds, whether the operation is immediate or batch-queued, and any failure modes. Annotations cover the safety profile only at a high level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the input schema. The description adds no meaning beyond what the schema provides—it does not clarify invoice number format or what confirm actually controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a group invoice' with the purpose 'to pay multiple invoices at once'. This distinguishes it from read-oriented billing siblings like get_invoice and get_invoices. However, it does not explicitly name an alternative or differentiate from similar mutation tools like apply_credit or create_addfunds_invoice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no exclusions, and no prerequisites described. The phrase 'at once' implies a bulk-payment context but does not tell an agent when mass_pay is preferred over other billing operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mount_isoAInspect
Mount an ISO image on a server (iso/mount_iso). Async operation. Callback key returned — track with check_task. InvAPI expects iso (name or id). Pass iso, or name / iso_id aliases.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| iso | No | ISO name or id (InvAPI field `iso`) | |
| name | No | Alias: image name / iso_name → iso | |
| iso_id | No | Alias: image ID from list_iso_images → iso | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description discloses that the operation is asynchronous and returns a callback key for polling via check_task — genuinely useful behavior an agent cannot infer from annotations. It doesn't describe failure modes or preconditions (e.g., ISO 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then async behavior, then parameter hints — no filler. The final alias sentence partially repeats the schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the two things an agent most needs for a mount operation: that it's async and how to follow up. With no output schema, the callback-key note substitutes adequately; only preconditions and error behavior remain undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents id, iso, name, iso_id and confirm. The description restates the InvAPI field name and alias mapping, adding only marginal clarification about which parameter takes precedence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Mount an ISO image on a server') and even names the API path iso/mount_iso. It doesn't explicitly contrast with the sibling unmount_iso, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent this is async and that the returned callback key should be tracked with check_task, which is actionable context. It stops short of stating when not to use it (e.g., when an ISO is already mounted, or to use unmount_iso instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_serverAInspect
Order an instant or stock server (eq/order_instance). IMPORTANT: ordering charges the credit balance or creates an invoice. Defaults to dry_run=true — only checks preset/OS availability and returns a summary without placing an order. For a real order pass dry_run=false and confirm=true after explicit user consent on the cost. Deploy takes 10–30 minutes; status via check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| os_id | Yes | OS ID from list_os | |
| own_os | No | 1 — do not install OS (manual install) | |
| preset | Yes | Preset ID or name from list_presets (e.g. 108 or vm.pico) | |
| confirm | No | Required (=true) for a real order | |
| dry_run | No | Default true: validate parameters without placing an order or charging | |
| soft_id | No | Software ID from list_software (optional) | |
| ssh_key | No | Public SSH key for root | |
| hostname | No | Hostname; default is generated from location and ID | |
| promocode | No | Discount promocode | |
| root_pass | Yes | Root password: min. 8 chars, uppercase, digit, special char (not @ or #) | |
| traffic_plan | Yes | Traffic plan ID from list_traffic_plans | |
| deploy_notify | No | Email notification when deploy finishes (recommended true) | |
| deploy_period | Yes | Billing period | |
| location_name | Yes | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH | |
| post_install_script | No | Script run after deploy | |
| post_install_callback | No | Callback URL after deploy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic profile (not read-only, open-world, non-idempotent, non-destructive); the description adds the critical consequence — charging the credit balance or creating an invoice — plus the dry-run default, the confirmation gate, and the 10–30 minute deploy window. This is exactly the context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded with the cost warning, and every clause earns its place: scope, charge consequence, dry-run default, real-order recipe, deploy timing. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter, high-stakes ordering tool with no output schema, the description covers the safety-critical asymmetry (validate vs. charge), the consent prerequisite, and where to check progress. Nothing an agent needs to avoid an unintended purchase is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining the interaction between dry_run and confirm and the cost implication attached to them. It doesn't touch the other 14 parameters, but those are already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (order) and resource (instant or stock server) and even names the underlying endpoint (eq/order_instance). An agent can immediately distinguish it from siblings like list_presets, get_stock_server, or create_reinstall_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the safe path (default dry_run=true validates without charging), the condition for a real order (dry_run=false AND confirm=true after explicit user consent on cost), and the follow-up for status (check_task). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
port_offADestructiveInspect
Disable a server network port (net/port_off). DESTRUCTIVE: the server will lose network connectivity on this interface.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| port | Yes | Physical switch port from get_network_status | |
| confirm | Yes | Must be true to run the operation. |
TDQS
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 known. The description earns credit by adding the concrete consequence — the server loses network connectivity on that interface — which is more actionable than a generic destructive flag. It stops short of stating reversibility or the confirm gate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste, front-loading the action and immediately following with the risk warning. Nothing could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the safety annotations plus the connectivity-loss warning cover the essentials, and the confirm requirement lives in the schema. Adding reversibility (use port_on to restore) would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (id, port, confirm) are already documented in the schema. The description adds no syntax or format detail beyond that, which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Disable) and resource (server network port), with the underlying API operation (net/port_off) in parentheses. It is clearly distinguishable from sibling port_on by semantics, though it never names the opposite operation explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the counterpart port_on, and no stated prerequisites (e.g. that confirm must be true or that the port comes from get_network_status). The purpose implies the usage but nothing routes the agent among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
port_onCInspect
Enable a server network port (net/port_on).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| port | Yes | Physical switch port from get_network_status | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true, and the description's 'Enable' is consistent with them. Beyond that it adds nothing behavioral — no note that toggling a port can disrupt network connectivity, no mention of the confirm gate's purpose, no side-effect disclosure. With annotations covering only the safety flag, more context was warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no padding, which is appropriate for a simple toggle. It loses a point only because the redundant '(net/port_on)' parenthetical occupies space without informing the agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The operation is simple and the schema and annotations cover parameters and safety, but the description omits the operational context an agent needs — relationship to port_off, where the port string comes from, and disruption risk. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the id, port, and confirm parameters are fully documented in the schema itself. The description adds no syntax or format detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Enable) and resource (server network port), which is clear enough to distinguish it from read tools like get_network_status. However, it does not name or contrast the obvious sibling port_off, and the parenthetical '(net/port_on)' merely restates the tool name rather than adding scope information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the complementary port_off tool, and no note that the port argument should come from get_network_status (that hint only lives in the schema). The agent gets no routing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
power_offADestructiveInspect
Power off a server (eq/off). DESTRUCTIVE: interrupts all services on the server. Requires confirm=true. Async: response includes a callback key for check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Required confirmation. Without confirm=true the call is rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds substantial value beyond them: it spells out the consequence ('interrupts all services'), the mandatory confirmation gate, and the async nature with a callback key for check_task. This tells the agent exactly what will be destroyed and how to follow up.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and the destructive warning. Every clause carries actionable information (API op, destructiveness, confirmation requirement, async follow-up) with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the safety profile, the confirmation prerequisite, and the asynchronous follow-up mechanism via check_task. An agent has everything needed to invoke it correctly and handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema (id as Server ID, confirm as required). The description reinforces that confirm=true is mandatory but adds no new syntax, format, or edge-case detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Power off a server') with the underlying API operation '(eq/off)'. The action is clearly distinct from siblings like power_on, reboot_server, and request_rh_power_off without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies useful prerequisites ('Requires confirm=true') and a strong warning that it 'interrupts all services', which implicitly steers the agent away from casual use. However, it never explicitly states when to choose this over alternatives such as reboot_server or power_on, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
power_onAIdempotentInspect
Power on a server (eq/on). Async: response includes a callback key for check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Required confirmation. Without confirm=true the call is rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=true), and the description adds genuinely new behavioral context: the call is asynchronous and the response carries a callback key to be polled via check_task. It stops short of saying how long the operation takes or what the callback key looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences, action and async follow-up front-loaded, zero filler. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with no output schema, the description covers what the annotations cannot: the async nature and the check_task polling path. Only minor gaps remain (server-state preconditions, rough operation latency).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id, confirm) are already documented in the schema, including the confirm=true rejection rule. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Power on a server') with the underlying API action (eq/on), which clearly separates it from power_off and reboot_server. It does not, however, disambiguate against the other power-related siblings in the list (request_rh_power_on, port_on), which an agent can only resolve by opening the other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the async note tells the agent it must follow up with check_task, but there is no statement of when to choose this over reboot_server, request_rh_power_on, or port_on, nor any preconditions (e.g. server state) for calling it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reboot_serverADestructiveInspect
Reboot a server (eq/reboot). Interrupts services during reboot. Requires confirm=true. Async: response includes a callback key for check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Required confirmation. Without confirm=true the call is rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and non-idempotency, so the safety profile is covered structurally. The description adds real context beyond that: the service interruption during reboot and the asynchronous callback-key/check_task pattern, which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences with the action, the risk, the required flag, and the async contract front-loaded in that order. No filler, no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains that the response carries a callback key for check_task, closing the async loop. It is complete enough to invoke correctly, missing only the sibling-routing decision (RH vs standard reboot).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both id and confirm are documented in the schema itself, including the rejection behavior for confirm. The description restates the confirm=true requirement without adding format or semantics beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Reboot a server') and even maps it to the underlying endpoint (eq/reboot), so the action is unambiguous. It does not differentiate from the near-siblings request_rh_reboot or the power_on/power_off family, leaving the agent to infer which reboot path applies to which server type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the hard precondition ('Requires confirm=true') and routes the async follow-up to check_task, which is genuinely actionable. However it offers no when-to-use vs request_rh_reboot/power_off guidance and no when-not conditions, so alternative selection is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reinstall_serverADestructiveInspect
Reinstall OS on an existing server (simplified path via eq/order_instance with id). DESTRUCTIVE: all disk data will be erased. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1 in the server environment, confirm=true, and re-entering the server's current hostname. Async: status via check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| os_id | Yes | New OS ID from list_os (0 + own_os=1 — no OS install) | |
| own_os | No | 1 — do not install OS | |
| confirm | Yes | Required (=true) to start reinstall | |
| soft_id | No | Software ID from list_software | |
| ssh_key | No | Public SSH key for root | |
| hostname | Yes | Current server hostname — confirms the correct server is selected | |
| root_pass | Yes | New root password | |
| deploy_notify | No | ||
| post_install_script | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the destructiveHint annotation by spelling out that all disk data is erased, the required environment flag, the confirm gate, the hostname-matching safeguard, and the asynchronous execution model with check_task polling. This is exactly the extra context an agent needs before firing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: action first, then the destructive warning, then prerequisites and async handling. No filler, and the riskiest information is surfaced early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent, no-output-schema tool, the description covers impact, gating requirements, and result-checking path. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so most parameters are already documented. The description reinforces confirm and hostname semantics but adds little syntax or format detail (e.g., os_id/own_os interaction, ssh_key vs root_pass) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Reinstall OS on an existing server') and notes the simplified implementation path. It does not explicitly contrast with the sibling create_reinstall_task, but the destructive reinstall action is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions for invocation (HOSTKEY_ALLOW_DESTRUCTIVE=1, confirm=true, re-entering the current hostname) and routes to check_task for status. It stops short of stating when to prefer this over create_reinstall_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_ipmi_userBInspect
Remove a temporary IPMI user (eq/remove_ipmi_user).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so safety profile is largely covered. The description adds the 'temporary' qualifier, which reconciles reasonably with destructiveHint=false (removing a temp account is not data destruction), but it discloses nothing about the confirm gate, permissions, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the purpose is stated immediately. The parenthetical API identifier is the only non-earning element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity two-parameter tool with full schema coverage and annotations covering safety, so the terse description is nearly sufficient. However, a mutating removal tool with a required confirm flag would benefit from one line on prerequisites or the follow-up state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'id' (Server ID) and 'confirm' (must be true to run) are already fully documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove a temporary IPMI user') and scopes it to temporary users, which implicitly distinguishes it from the add_ipmi_user sibling. The trailing '(eq/remove_ipmi_user)' is an API-name restatement that adds no selection value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus add_ipmi_user or reset_ipmi, and no stated prerequisites (e.g., an IPMI user must exist, correct server id required). The agent must infer 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.
remove_snapshotADestructiveInspect
Delete a snapshot (vm/remove_snapshot). DESTRUCTIVE: the snapshot is permanently deleted. Deletion is only possible on a powered-off VM.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Virtual machine ID | |
| name | Yes | Snapshot name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description is not the sole source of the safety profile. It still adds value beyond them by stressing permanence ("permanently deleted") and the powered-off VM requirement, a state precondition annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact clauses, front-loaded with the action, then the risk, then the precondition. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with full annotation coverage, a fully documented schema, and no output schema, the description supplies exactly the missing pieces: permanence and the powered-off VM precondition. Nothing an agent needs to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (id, name, confirm) are documented in the schema itself. The description adds no additional meaning about parameter format or the confirm gate, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Delete a snapshot") and even names the underlying API method (vm/remove_snapshot). This clearly separates it from the sibling read/creation tools get_snapshots, create_snapshot, and restore_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit precondition for use: "Deletion is only possible on a powered-off VM." That is real routing guidance, though it does not name alternative tools (e.g. restore_snapshot) or say when not to delete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_static_natCInspect
Remove static DNAT to the server IPMI (nat/remove_static_nat).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is partly covered. The description adds nothing beyond the verb and API endpoint: it doesn't say whether removal is reversible, what happens to the IPMI mapping afterward, or what the confirm flag guards against. There is no contradiction with annotations, but the description contributes almost 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that is front-loaded with the action and resource. The trailing API path is mildly useful reference but borders on filler; the sentence otherwise wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with full schema coverage, no output schema, and annotations covering safety, the description is minimally adequate. It stops short of explaining the effect of the removal or how it relates to the sibling NAT tools, which is the main missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents 'id' (Server ID) and 'confirm' (must be true to run). The description adds no meaning beyond that, which is the baseline expectation 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Remove static DNAT to the server IPMI', which is unambiguous about the operation. However, it does not distinguish itself from the closely related siblings clear_static_nat, drop_nat, or add_static_nat, leaving the agent to infer the distinction. The API path parenthetical is informational but not differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no when-to-use or when-not-to-use guidance. Given siblings like clear_static_nat and drop_nat that likely overlap, the absence of any alternative routing is a notable gap. The agent must guess which removal tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_cancellationADestructiveInspect
Request service cancellation (whmcs/request_cancellation). DESTRUCTIVE: cancellation_type=1 — immediate cancel with partial refund (if possible), 0 — cancel at end of billing period. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. | |
| cancellation_type | Yes | 1 — immediate (partial refund if possible), 0 — at end of billing period | |
| terminate_reason_custom | No | Cancellation reason |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint annotation by disclosing the refund consequence ('partial refund if possible'), the two timing behaviors, and the environment prerequisite for enabling destructive calls. This is exactly the operational context an agent needs before invoking an irreversible action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler; the destructive warning and env prerequisite are front-loaded rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-output-schema tool, the description covers effect, timing, refund implication, and gating prerequisites. Minor gaps remain (e.g., what confirm/id refer to is left to the schema, and no post-call state is described), but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum values are already documented in the schema, so the description largely restates cancellation_type. Baseline 3 is appropriate; the 'if possible' refund caveat adds only marginal meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Request service cancellation') plus the underlying endpoint (whmcs/request_cancellation), and is clearly distinct from the read-side siblings get_cancellation_requests and delete_cancellation_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong preconditions (requires HOSTKEY_ALLOW_DESTRUCTIVE=1) and explains the semantics of each cancellation_type, which tells the agent when each mode applies. It does not, however, explicitly route the agent away from related siblings like delete_cancellation_request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_checkAInspect
Remote Hands request: check the server and boot it into the OS (jira/request_check). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true and non-read-only/non-destructive, and the description adds meaningful behavior on top: this is an asynchronous, human-mediated workflow where status lives in a ticket and the link arrives via email. That is the kind of out-of-band detail an agent needs and cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight clauses front-load the action, with the internal endpoint reference (jira/request_check) parenthetically tucked away rather than leading. Slightly dense with jargon but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the return path (ticket holds status, link emailed) so the agent knows not to expect an immediate result payload. Remaining gap is the absence of any permissions or cost/timing expectations for an open-world request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (id = Server ID, confirm = must be true), so the schema already carries the semantics. The description adds nothing about parameter format or the meaning of confirm in this ticket-creation flow, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete action set: check the server and boot it into the OS, framed as a Remote Hands request that creates a datacenter ticket. That is specific enough to separate it from generic reboot/power tools, though it never explicitly contrasts itself with the sibling request_rh_reboot / request_rh_pxe_boot / request_rh_power_on variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes what happens after the call (ticket created, correspondence in ticket, emailed link) but gives no condition for choosing this over the other request_rh_* tools or over direct power/boot operations. The agent must infer usage from the phrase 'check the server and boot it into the OS' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_kvmAInspect
Remote Hands request: attach IP KVM to the server (jira/request_kvm). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive write (readOnlyHint=false, destructiveHint=false, openWorldHint=true), but the description adds genuinely useful context: it creates a Remote Hands ticket routed to the datacenter on-call shift, and the status/correspondence live in that ticket with a link emailed. That asynchronous, ticket-driven outcome is not derivable from annotations. It stops short of noting the confirm=true gating behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler, and the core action is front-loaded ahead of the ticket/notification detail. The parenthetical jira/request_kvm is compact rather than redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly fills the return-value gap by explaining that the result is a ticket with a link emailed and correspondence tracked there. The only remaining gap is the confirm=true requirement, which the schema covers adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (id as Server ID, confirm as a required true flag) are already documented in the schema. The description adds no syntax, format, or constraint detail beyond what is provided there, which is the expected baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (attach IP KVM to the server) and ties it to the underlying jira/request_kvm operation. Within the request_rh_* sibling family (power_on, power_off, reboot, pxe_boot, check) the KVM attachment is unambiguous, so an agent can route here 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the purpose: request this when you need IP KVM attached. There is no explicit when-to-use/when-not, no mention that the operation is asynchronous, and no pointer to alternatives such as the generic create_rhr_request or request_rh_check siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_power_offADestructiveInspect
Remote Hands request: power off the server manually (jira/request_poff). DESTRUCTIVE for running services. Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds real context beyond them: it is a manual datacenter action, it opens a Remote Hands ticket for the on-call shift, and status/correspondence live in the ticket with a link emailed. It does not cover timing/SLA or whether the server must be reachable first.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the action and the destructive warning, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, no-output-schema tool, the description covers what triggers it, where the outcome is tracked, and the destructive consequence. It lacks only explicit routing guidance versus the self-service power_off sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both id and confirm, so the schema already carries the semantics. The description adds nothing about parameter format or values, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('power off the server manually') and the channel ('Remote Hands request', jira/request_poff), which cleanly separates it from the self-service power_off and from sibling Remote Hands tools like request_rh_reboot and request_rh_power_on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'manually' and the ticket-creation detail imply this is for cases where the datacenter on-call must physically act, but the description never explicitly says when to choose this over power_off or request_rh_reboot. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_power_onAInspect
Remote Hands request: power on the server manually (jira/request_pon). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely new behavior: it creates a Remote Hands ticket for the datacenter on-call shift, that status/correspondence live in the ticket, and that a link is emailed. That is meaningful context a caller could not derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus a parenthetical identifier; the core action leads and the ticket/link behavior follows. No filler, though the parenthetical jumps registry-style detail slightly ahead of the conversational flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter ticket-creating tool with no output schema, the description sufficiently explains what happens after invocation (ticket, status there, emailed link). It stops short of stating timing, permissions, or what to do if the request fails, but nothing essential to invoking is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% ('Server ID', 'Must be true to run the operation'), so both parameters are already documented. The description adds no syntax, format, or interpretation beyond the schema, matching the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('power on the server manually') and names the underlying mechanism ('Remote Hands request ... jira/request_pon'). This distinguishes it from the sibling power_on (automated API power) and request_rh_power_off by making the manual/Remote-Hands nature explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'power on the server manually' and the Remote Hands framing, but the description never explicitly routes the agent between this and the sibling power_on, nor states prerequisites or when manual intervention is required. Context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_pxe_bootAInspect
Remote Hands request: boot the server via PXE (jira/request_PXEboot). Needed when reinstalling OS on servers without a remote management module. Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive and open-world. The description goes further by disclosing the async ticketing workflow: a ticket is created for the datacenter on-call shift, status and correspondence live in the ticket, and the link is emailed. That is meaningfully beyond the annotation set, though it omits any expectation of latency 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses with the action stated first, followed by the trigger condition and the ticket mechanics. The parenthetical path is compact and the sentences all earn their place, though the last sentence is slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully pre-answers 'what happens next' by explaining that results arrive via ticket and email. Combined with full parameter coverage, an agent has what it needs to call this correctly; only latency/error expectations are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'id' (Server ID) and 'confirm' (must be true) are already fully documented. The description adds only an indirect hint that the target is a server; it contributes no format or constraint detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('boot the server via PXE') scoped as a Remote Hands ticket, and the internal marker (jira/request_PXEboot) pins the operation. An agent can distinguish this from request_rh_reboot, request_rh_power_on and request_rh_kvm 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit condition ('needed when reinstalling OS on servers without a remote management module'), which is real routing context. It does not, however, name the sibling alternatives an agent might weigh (e.g. set_boot_device, create_reinstall_task), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_rh_rebootADestructiveInspect
Remote Hands request: reboot the server manually (jira/request_reboot). Creates a Remote Hands ticket for the datacenter on-call shift; status and correspondence are in the ticket (link will be emailed).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: a ticket is created for the datacenter on-call shift, status/correspondence live in the ticket, and a link is emailed. It does not, however, state that the action is irreversible or discuss timing/SLA.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and mechanism before the secondary detail about ticket correspondence. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two well-documented params, the description adequately explains what happens on invocation (ticket created, link emailed, correspondence in the ticket). Complete enough for an agent to call it correctly, though outcome/result details are thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both id and confirm. The description adds no additional meaning about parameter values, formats, or the confirmation gate, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (reboot the server) with a scope qualifier (Remote Hands, manually) and the underlying mechanism (jira/request_reboot ticket creation). The 'Remote Hands' framing implies physical/datacenter intervention, which helps distinguish it from reboot_server, but no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'manually' and 'datacenter on-call shift' — an agent can infer this is for cases requiring human intervention. However, there is no explicit when-to-use/when-not guidance and no named alternative (reboot_server, request_rh_power_on/off) to route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_sales_assistanceBInspect
Ticket to the sales department (jira/request_assistance): cancellation or transfer of a service and similar requests. Describe details in message.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Server ID, if the request concerns a server | |
| confirm | Yes | Must be true to run the operation. | |
| message | Yes | Request details: what to cancel/transfer and why | |
| subject | No | Request subject |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), open-world, and non-destructive behavior. The description adds that details go into a message and frames the result as a 'ticket,' but says nothing about processing/turnaround, whether the ticket is asynchronous, or what confirmation yields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler, and the tool's identity is front-loaded. It is efficient, though it wastes the opportunity to spend that brevity on disambiguation from overlapping siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write/ticket-creation tool with no output schema, the description is thin: it doesn't explain what comes back, expected latency, or how it differs from request_cancellation. Given full schema coverage the basics are covered, but decision-critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (id, confirm, message, subject) are already documented in the schema. The description's only addition is 'Describe details in message,' which restates the schema and adds no new syntax or semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (create/open a ticket) and resource (sales department), plus the domain scope 'cancellation or transfer of a service.' However, it does not differentiate itself from sibling tools like request_cancellation or create_rhr_request, which overlap in intent, so an agent could still pick the wrong one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'cancellation or transfer of a service and similar requests' implies when to reach for this tool, but it names no alternatives and gives no explicit when-not guidance. With siblings like request_cancellation available, the boundary between them 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.
reset_billing_passwordAInspect
Reset the billing account password (whmcs/reset_password): a reset link is sent to the given email. Email must match the account email.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Account email | ||
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the operation does not change the password directly but sends a reset link to the email, and the email must match the account. It stops short of covering auth requirements or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence pairing the action, the underlying endpoint, and the key constraint. No filler; the parenthetical endpoint reference is the only slightly extraneous element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with full schema coverage and annotations covering the safety profile, the description supplies what's missing: the email-link mechanism and the email-match constraint. The undocumented confirm/required-flag detail is already carried by the schema, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description adds one constraint beyond the schema (email must match the account email), but never mentions the required 'confirm' flag, so it only marginally exceeds the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reset the billing account password') and even names the underlying call (whmcs/reset_password). There is no closely related sibling to distinguish from, so it does not need explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one precondition ('Email must match the account email'), which implies the correct invocation context, but it never states when to prefer this over alternatives or any other eligibility conditions. 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.
reset_ipmiAInspect
Reboot the server IPMI module (eq/unit_reset). Use when IPMI is unresponsive.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the agent knows this is a mutating but non-destructive remote operation. The description adds useful scope context (the reset targets the IPMI submodule, not the server), but says nothing about side effects such as temporary IPMI unavailability, the required confirmation gate, or expected downtime, leaving behavioral gaps for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the action is front-loaded and the usage condition follows immediately. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema mutation tool with annotations covering safety, the description tells the agent what the tool touches and when to reach for it. The main remaining gap is the absence of any note on downtime or the confirm requirement's purpose, but the schema covers the mechanics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'id' and 'confirm' fully documented in the schema, so the baseline is 3. The description adds no syntax, format, or value guidance beyond what the schema already provides for these two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reboot the server IPMI module') and even names the underlying operation (eq/unit_reset). This clearly distinguishes it from the many other reboot/power siblings such as reboot_server, power_off, and request_rh_reboot, which target the whole server rather than the IPMI module.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the triggering condition: 'Use when IPMI is unresponsive.' That is a concrete when-to-use context, clearly implying this is a recovery action rather than routine power control. It does not name an alternative tool or state when NOT to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_snapshotADestructiveInspect
Restore a VM from a snapshot (vm/restore_snapshot). DESTRUCTIVE: the current VM disk state will be overwritten with the snapshot state.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Virtual machine ID | |
| name | Yes | Snapshot name | |
| confirm | Yes | Must be true to run the operation. |
TDQS
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 structured. The description adds real value beyond that by naming exactly what is destroyed ('current VM disk state will be overwritten'), which is the key operational consequence for the agent to reason about.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action first, the destructive consequence immediately after. Nothing is wasted and the risk information is front-loaded rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description needn't explain returns, and the annotations cover the safety flags. The destructive effect and confirmation requirement are made clear; only finer details like reversibility or post-restore VM state are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, name, and confirm are already documented, including the requirement that confirm must be true. The description adds no formatting or semantic detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Restore a VM from a snapshot') plus the underlying API operation, so an agent can distinguish it from create_snapshot, remove_snapshot, and get_snapshots 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The destructive warning implies caution, but there is no explicit guidance on when to use this over alternatives or what prerequisites (beyond the confirm flag) must hold. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_post_install_taskBInspect
Run a Jenkins/Ansible task on a server (jenkins/call): task ID or name from list_post_install_tasks + extra params. E.g. installing GPU drivers after OS reinstall.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| task | Yes | Task ID or name from list_post_install_tasks | |
| params | No | Additional task parameters | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the agent knows this is a non-destructive but state-changing external call. The description adds that execution is a Jenkins/Ansible task run, but says nothing about whether it is asynchronous, how long it takes, how to poll status, or what permissions are required. With annotations carrying the safety profile, this is a limited but non-zero contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the verb and resource, then appends the task-source pointer and an example. Every clause earns its place, though the parenthetical '(jenkins/call)' is backend detail an agent does not need for tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, externally-executed task runner with no output schema, the description omits important context: whether the call returns immediately or produces a job to poll (check_task exists as a sibling), whether required confirm gating is enforced, and what the arbitrary params object should contain. Annotations cover the safety profile but not the execution lifecycle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, task, params and confirm are all documented in the schema itself, including the constraint that confirm must be true. The description's statements about 'task ID or name from list_post_install_tasks' and 'extra params' merely restate schema content, adding no format, default, or constraint detail beyond it. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Run a Jenkins/Ansible task on a server') and even names the backing endpoint (jenkins/call), so the action is unambiguous. It points to list_post_install_tasks as the source of task identifiers and gives a concrete scenario (GPU drivers after OS reinstall). It stops short of contrasting itself against the closest siblings such as create_reinstall_task or check_task, which would earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example ('installing GPU drivers after OS reinstall') implies the post-install context, and the pointer to list_post_install_tasks tells the agent where to obtain the task argument. However, there is no explicit when-not-to-use guidance, no mention of alternative task tools (create_reinstall_task, check_task), and no note on prerequisites such as the server being in a post-reinstall state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_cancel_account_deletionAInspect
Cancel S3 service deletion initiated via billing and restore the account to active status (s3/cancel_payment_account_deletion).
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is carried by structured data; the description consistently adds that the outcome is account restoration to active status. It does not mention the mandatory 'confirm' gate, authorization requirements, or whether an already-active account errors out.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the operation first and the effect second; no filler. The trailing API route in parentheses is traceability rather than agent-usable information, a minor non-value-adding element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, non-destructive mutation with full schema documentation and no output schema, the description covers what it does and the resulting state change, which is what an agent needs to select it. Only the confirm-required behavior and error conditions are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (s3uid, confirm, account_id) documented in-schema including the deprecated alias and the omit-if-token-bound case. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Cancel S3 service deletion') plus the resulting effect ('restore the account to active status'), which is more than the name alone conveys. It does not name the counterpart operations (s3_delete_account / s3_delete_payment_account), but the purpose is unambiguous against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'initiated via billing' implicitly scopes when this tool applies (an S3 deletion that came through the billing path), which helps select it over other S3 teardown tools. However, there is no explicit when-to-use/when-not guidance or named alternative for deleting an account outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_create_accountBInspect
Create an S3 account: bind a plan and initial bucket (s3/create_account). Requires authentication.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | Initial bucket name | |
| confirm | Yes | Must be true to run the operation. | |
| plan_id | No | Plan ID from s3_list_plans | |
| location | No | Location from s3_get_locations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a useful authentication requirement and names the underlying endpoint (s3/create_account), but says nothing about what binding a plan actually changes or whether the operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses, with the core purpose front-loaded before the endpoint and auth note. No wasted sentences, though the parenthetical endpoint reference is low-value for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description does not indicate what a successful account creation returns (credentials, IDs, status) or how to verify completion. It is adequate given the strong annotation and schema coverage, but leaves a gap around outcome handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so plan_id, location, bucket, and confirm are all documented in the schema. The description merely echoes the plan/bucket concepts and adds no format or constraint detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create an S3 account") and clarifies the effect (binding a plan and initial bucket), which cleanly distinguishes it from s3_create_bucket and s3_create_order. However it never names those siblings explicitly, so the differentiation relies on the agent's inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite ("Requires authentication") and contextualizes the operation as an account-provisioning step, which implies when it applies. It gives no when-not guidance and does not point to alternatives such as s3_create_bucket for subsequent buckets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_create_bucketBInspect
Create a new bucket in an existing S3 account (s3/create_bucket).
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| bucket | Yes | Bucket name | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, destructive=false, openWorld=true), and the description adds essentially nothing beyond them — no note on name uniqueness/global namespace, idempotency on retry, permission requirements, or what is returned. The only extra is the API route, which is marginal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; the verb and resource come first and the API path is a compact parenthetical. Nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple create operation with full schema coverage and annotations, the essentials are present, but the description omits the required confirm gate, whether creation is chargeable, and what success yields. Adequate but with clear gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (including the deprecated account_id alias and the required confirm flag) are documented in the schema. The description adds no parameter meaning beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a new bucket') and scopes it ('in an existing S3 account'), plus the underlying API route. It is clearly distinguishable from siblings like s3_delete_bucket and s3_get_buckets, though it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention that an account must already exist (s3_create_account vs this tool), and no note that 'confirm' must be set true. The phrase 'existing S3 account' only hints at a prerequisite, leaving selection and usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_create_orderAInspect
Create a paid S3 storage order linked to billing (s3/create_order). MONEY: creates a real order/invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. | |
| plan_id | No | Plan ID | |
| location | No | Location |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, open-world mutation. The description adds real context beyond them: this creates a genuine paid order/invoice with monetary consequences, which is the key behavioural fact an agent needs before calling it. It still omits irreversibility, idempotency, and duplicate-order behaviour.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short front-loaded sentences with zero filler: the action, its billing linkage, and the money warning. The API path is the only marginally redundant element and it is tucked at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, fully-documented mutation with no output schema, the description covers the critical risk (real invoice) but is silent on what a successful call produces, whether duplicate orders can be created, and what payment prerequisites apply. Adequate, but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so plan_id, location, and the required confirm flag are documented in the schema itself. The description adds only the qualifier 'paid' and no per-parameter detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Create a paid S3 storage order') scoped to billing, and the API path (s3/create_order) removes ambiguity about which endpoint runs. It does not explicitly differentiate from near-neighbours such as order_server or s3_create_account, so the agent still has to infer that this is the S3-storage variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over siblings like order_server, s3_list_plans, or s3_create_account, and no preconditions beyond what the schema already enforces. The 'MONEY' note is a risk warning rather than usage guidance, so the agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_delete_accountADestructiveInspect
Fully delete a user's S3 account (s3/delete_account). DESTRUCTIVE: all buckets and data will be deleted. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
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 known; the description then adds substantive context: the blast radius ('all buckets and data will be deleted') and an environment-level authorization gate. It stops short of saying whether deletion is immediate vs scheduled or reversible, which matters given a cancel-deletion sibling exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the operation and API path, then the destructive warning, then the prerequisite. Every sentence carries distinct, actionable information with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter destructive mutation with no output schema and full annotation coverage, the description supplies what the structured fields do not: blast radius and the destructive-gate requirement. The remaining gap is recoverability — nothing says whether the account can be restored or whether this blocks other operations while pending.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the s3uid omission rule, the confirm must-be-true rule, and the deprecated account_id alias, so the schema carries all parameter meaning. The description adds nothing parameter-specific, which is acceptable at full coverage but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('fully delete') and resource ('a user's S3 account') and even cites the underlying API path (s3/delete_account). The word 'fully' plus 'all buckets and data will be deleted' cleanly separates it from narrower siblings like s3_delete_bucket, s3_delete_payment_account, and s3_cancel_account_deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a genuine precondition (HOSTKEY_ALLOW_DESTRUCTIVE=1 must be set), which is real usage guidance an agent needs before attempting the call. However, it never says when to prefer this over siblings such as s3_cancel_account_deletion or s3_delete_payment_account, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_delete_bucketADestructiveInspect
Delete a bucket from an S3 account (s3/delete_bucket). DESTRUCTIVE: all files in the bucket will be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| bucket | Yes | Bucket name | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=true, so the safety profile is covered. The description adds valuable context by stating the concrete consequence: 'all files in the bucket will be deleted'. However, it does not mention the required confirmation flag or irreversibility beyond that consequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and is front-loaded with the core action. Every sentence adds useful information: the first states purpose and API path, the second states the destructive consequence. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with full annotation coverage (destructiveHint=true), a fully documented schema, and no output schema, the description provides the essential warning that all files are deleted. It could be slightly more complete by mentioning the confirm=true requirement explicitly, but the schema already documents that parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are fully documented in the schema itself. The description adds no parameter-level meaning beyond what is already in the schema, which is acceptable given the high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Delete a bucket from an S3 account'. It also includes the underlying API operation path. Because it explicitly names the bucket as the target, it is inherently distinguishable from sibling operations like s3_delete_file and s3_delete_account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explain when to use this tool versus alternatives such as s3_delete_file, s3_delete_account, or s3_delete_bucket-like operations. It also does not mention prerequisites like the required confirm=true flag, though that is documented in the schema. It merely implies usage through the tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_delete_fileADestructiveInspect
Delete a file from a bucket (s3/delete_file). DESTRUCTIVE: the file is permanently deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | File key (name) | |
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| bucket | Yes | Bucket name | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is known; the description adds only the word 'permanently', which sharpens the consequence but largely restates the annotation. It does not mention the required confirm flag, error behavior for missing files, or idempotency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the effect front-loaded and the destructive warning immediately after. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and annotations plus schema already cover safety and inputs, so the description is nearly sufficient. However, for an irreversible delete it could state the confirm requirement and what happens on a missing key, which are gaps an agent would want covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all five parameters (bucket, file, s3uid, confirm, account_id) are documented in the schema, so baseline 3 applies. The description adds no parameter-level meaning such as file-key format or the precedent order between s3uid and the deprecated account_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a file from a bucket') plus the underlying API path, which is clearly distinct from siblings like s3_delete_bucket or s3_get_files. It stops short of naming an alternative tool, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a strong implicit signal ('DESTRUCTIVE: permanently deleted') that tells the agent this is an irreversible action, but it offers no explicit when-to-use/when-not guidance or routing to sibling tools such as s3_delete_bucket for bucket-level removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_delete_payment_accountADestructiveInspect
Initiate S3 account deletion via service cancellation in billing (s3/delete_payment_account). DESTRUCTIVE: an end date will be set on the active service. Requires HOSTKEY_ALLOW_DESTRUCTIVE=1.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, so marking it DESTRUCTIVE repeats structured data. What earns credit is the added semantics: deletion is implemented as a scheduled service end date rather than an immediate purge, plus the required environment flag — neither of which is visible in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the destructive warning front-loaded immediately after the purpose. The parenthetical API path is slightly redundant but minimal overhead; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the destructive nature, the mechanism (end date on the service), and the env-var gate, which is solid for a no-output-schema mutation tool. It omits two things an agent needs: how this differs from s3_delete_account, and that the action appears reversible via the s3_cancel_account_deletion sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so s3uid optionality, the confirm requirement, and the deprecated account_id alias are already fully documented in the schema. The description adds no parameter-level information beyond the schema, which meets the baseline but no more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Initiate S3 account deletion via service cancellation in billing') and names the underlying API path. However, it does not differentiate itself from the closely-named sibling s3_delete_account, which is the single most important distinction an agent must make here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real precondition ('Requires HOSTKEY_ALLOW_DESTRUCTIVE=1'), which is actionable usage guidance. But it never says when to prefer this tool over s3_delete_account or s3_cancel_account_deletion, so the agent is left to guess between near-identical siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_get_bucketsARead-onlyInspect
List S3 account buckets and usage (s3/get_buckets_rmq). Pass s3uid or account_id from s3_get_users. May return a task key — then track with check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID from s3_get_users.s3uid | |
| account_id | No | Numeric id from s3_get_users.id (alias; resolved to s3uid) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and open-world. The description adds useful behavioral context beyond annotations: it may return a task key and that task should be tracked with check_task, revealing an async workflow. It does not discuss permissions or return shape, but that is less critical for a read-only 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact clauses, front-loads the core action, and every sentence provides actionable information: the resource, the ID source, and the task-tracking follow-up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with complete schema coverage and annotations, the description covers the key prerequisites and the async-task follow-up. It does not explain what 'usage' contains or whether calling with no ID lists everything, but those gaps are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including their provenance and the account_id alias behavior. The description repeats the provenance from s3_get_users but adds no syntax or constraint details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List S3 account buckets and usage.' The endpoint hint '(s3/get_buckets_rmq)' implicitly distinguishes it from the queue-based sibling, but no explicit sibling differentiation is given.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent where to get the required identifiers ('Pass s3uid or account_id from s3_get_users') and what to do if a task key is returned ('track with check_task'). It does not explicitly compare with the sibling s3_get_buckets_via_queue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_get_buckets_via_queueARead-onlyInspect
Same as s3_get_buckets: list buckets via s3/get_buckets_rmq. Prefer s3_get_buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID from s3_get_users.s3uid | |
| account_id | No | Numeric id from s3_get_users.id (alias; resolved to s3uid) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the fact that the call is routed through s3/get_buckets_rmq, but does not say whether that makes the operation asynchronous, slower, or a fallback path — the main behavioral question an agent would have about a "via queue" variant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses: the equivalence statement first, then the routing preference. No filler, and the most decision-relevant information (prefer the other tool) is present and easy to extract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter read tool with full schema coverage and an output-free contract, the definition covers equivalence and routing adequately. The remaining gap is behavioral: nothing tells the agent when the queued path is expected to be used or how it differs in outcome from s3_get_buckets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: s3uid and account_id are both documented, including that account_id is an alias resolved to s3uid. The description adds nothing about parameters, which is acceptable given the schema does the work, but it earns no extra credit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("list buckets") and explicitly frames itself as an equivalent variant of the sibling s3_get_buckets, so an agent can tell the two apart. It does not explain what "via_queue" / s3/get_buckets_rmq actually means, so the underlying mechanism stays opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Prefer s3_get_buckets" is an explicit routing instruction to the alternate sibling, which is the key selection signal here. It stops short of saying when this queued variant is the right choice (e.g., fallback when the direct call fails), so the condition for using it is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_get_filesARead-onlyInspect
List files in a bucket with pagination and search (s3/get_files).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Ignored; use search / limit. InvAPI paginates with continuation_token. | |
| limit | No | Page size (mapped to InvAPI max_keys, max 100) | |
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| bucket | Yes | Bucket name | |
| search | No | Search string by file name | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that pagination and search are supported, which is useful behavioral context, but it does not describe return format, pagination mechanics, or operational constraints beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-formed sentence with the core operation front-loaded and no wasted text. The endpoint reference in parentheses is compact and useful for disambiguation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the fully described schema, read-only and open-world annotations, and no output schema, the description is mostly sufficient for calling the tool. It does not explain pagination mechanics such as continuation_token, but the schema covers the parameter-level details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters, including bucket, search, limit, and the deprecated/ignored page field, are documented in the schema. The description mentions pagination and search at a high level but adds no parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists files in a bucket, with pagination and search, and includes the underlying endpoint s3/get_files. This distinguishes it from nearby S3 tools such as s3_get_buckets, which lists buckets rather than files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'List files in a bucket with pagination and search', but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. The agent can infer this is for file listing within a bucket, but the description does not route it among alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_get_locationsBRead-onlyInspect
List available locations for S3 (s3/get_available_locations).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered externally. The description adds only the underlying endpoint string, with no information about auth requirements, pagination, or how locations relate to the account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that leads with the verb and resource, with the endpoint parenthetical as a minor but harmless addition. Nothing wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list call with annotations covering the safety profile and no output schema, the description is sufficient to call it correctly. Only minor context, such as what a location represents or the return shape, is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters and schema coverage is 100%, so there is nothing to disambiguate. Baseline of 4 is appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (available locations for S3), so an agent immediately knows what it returns. There is no close sibling it needs to be distinguished from among the s3_* family, so no differentiation is required.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is a discovery/enumeration call for S3 locations. No explicit when-to-use, prerequisites, or alternatives are provided, and none of the sibling tools are named as related choices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_get_usersARead-onlyInspect
List S3 users with service, traffic, and storage usage info (s3/get_users). Full filtering is available to administrators. Use returned s3uid/id with s3_get_buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Filter by location (for administrators) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declared, this is a safe read the annotations already cover. The description adds behavior beyond that: filtering scope depends on administrator privileges. It does not disclose pagination or result-size behavior, keeping it out of the top band.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource and its payload, then the access constraint and the follow-up call. The parenthetical API path is minor noise but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description names the returned identifiers (s3uid/id) and the usage data fields, and it covers the admin-filtering constraint. Return shape detail and pagination remain unstated, which is the only real gap for a single-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'location' parameter that the schema already documents as admin-only. The description's 'full filtering is available to administrators' restates that constraint rather than adding format, matching, or syntax detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List S3 users') plus the payload the tool returns (service, traffic, storage usage). It differentiates from most siblings by identifying s3_get_buckets as the follow-on, though it does not distinguish itself from other s3_* list tools such as s3_get_locations or s3_get_buckets_via_queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage context: filtering is admin-gated and the returned s3uid/id feeds s3_get_buckets. It never states when this tool is the wrong choice versus neighboring s3 list tools, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_list_plansBRead-onlyInspect
List available S3 storage plans (s3/list_plans).
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location (filter), if supported |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that — no note on whether the list is location-scoped, whether it can be empty, or that it is a read-only catalog lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the verb and resource, with zero filler. Nothing redundant or misplaced.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, annotation-covered read-only list tool with a fully documented single parameter and no output schema, the description is minimally sufficient. It still omits what a 'plan' represents and how the result relates to ordering (s3_create_order), leaving an agent to infer the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single location parameter is documented in the schema itself ('Location (filter), if supported'). The description adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list available S3 storage plans, with the underlying API path 's3/list_plans' as corroboration. The resource is distinct from siblings like list_traffic_plans and s3_get_locations, but the description never explicitly differentiates itself from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives such as s3_get_locations or list_traffic_plans, and no stated prerequisites or follow-up actions (e.g., feeding a plan into s3_create_order). Usage must be inferred 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.
s3_show_keyARead-onlyInspect
Get a decrypted S3 access key (s3/show_key). SECRET: do not log or share with third parties.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| key_type | Yes | Key type | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safe-read profile (readOnlyHint, openWorldHint), but the description adds genuinely useful context beyond them: the value is decrypted and secret, with an explicit handling warning not to log or share. It stops short of noting audit logging or who is permitted to retrieve keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core action front-loaded and the security warning immediately following. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining the return value, and it only says 'decrypted S3 access key' without specifying the response fields or how access_key versus secret_key selection affects output. Adequate for a three-parameter read, but the missing 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters, including the key_type enum and the conditional s3uid note, are already documented in the schema. The description adds no parameter semantics of its own, making baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieves a decrypted S3 access key. The name and parenthetical endpoint mapping make it distinguishable from key-listing siblings like list_api_keys or get_api_key, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus alternatives such as s3_get_users or get_api_key, and no prerequisites stated (e.g., whether s3uid must be known first). Usage is only implied by the description and the schema's conditional field note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
s3_update_traffic_infoBInspect
Update S3 account traffic information (s3/update_traffic_info). Available to administrators only.
| Name | Required | Description | Default |
|---|---|---|---|
| s3uid | No | S3 account UID; omit only if the token is bound to a single S3 account | |
| confirm | Yes | Must be true to run the operation. | |
| account_id | No | Deprecated alias for s3uid / get_users.id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context — the admin-only auth requirement — but says nothing about immediacy of effect, what happens to unmentioned traffic settings, or how the required confirm flag gates execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the endpoint slug parenthesized for traceability. Efficient, though the parenthetical restates the tool name and consumes space that could carry actual behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating, admin-gated tool with a mandatory confirm parameter and no output schema, the description should explain what the update accomplishes and what to expect afterwards. The safety profile and parameter semantics are covered by structured fields, but the description leaves a real gap around what 'traffic information' means.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains s3uid, confirm and the deprecated account_id alias. The description adds no parameter meaning of its own, and notably does not clarify that no parameter actually specifies the new traffic values, which is the most confusing thing about the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') and resource ('S3 account traffic information'), which distinguishes it from read-only siblings like s3_get_users and s3_list_plans. It stops short of saying what aspect of traffic is updated (quota, plan, overage), so an agent still cannot tell exactly what the mutation changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'Available to administrators only', which is an authorization prerequisite rather than a when/when-not rule. No alternative sibling is named and no condition for preferring this tool over s3_list_plans or s3_create_order is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_presetsBRead-onlyInspect
Search free servers matching a preset name (e.g. vm.pico). Requires auth.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Preset name, e.g. vm.pico | |
| scope | No | free (default) — available only | |
| location | Yes | Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds the auth requirement, which is useful. However, it says 'free servers' while the scope parameter permits 'all', an unresolved inconsistency, and it says nothing about result volume or pagination for an open-world search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and ending with the prerequisite. No filler, though the phrasing is terse enough to leave the free/all scope question unaddressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only search with a fully documented schema and no output schema, the description covers the essentials plus the auth requirement. It falls short on clarifying the free-vs-all scope distinction and how the results relate to the preset listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, scope, and location are all documented in the schema, including the enum and the free/all distinction. The description only repeats the vm.pico example already present in the schema and adds no new syntax or format meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (free servers matched by preset name) with a concrete example (vm.pico). It is distinguishable from list_presets/get_preset in spirit, but it never names those siblings, so the differentiation must be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only prerequisite given is 'Requires auth.' There is no statement of when to use this over list_presets, get_preset, or list_stock_servers, nor any exclusion guidance. Usage is implied by the phrase 'matching a preset name' but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_servers_by_tagARead-onlyInspect
Search servers by tag name or value (tags/search_user). Returns server IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | Tag search pattern |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered structurally. The description adds useful return context ('Returns server IDs') and even names the backing endpoint (tags/search_user), but gives no detail on pagination, match semantics, or empty-result behavior. Adequate, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the purpose is front-loaded and the return-value note follows immediately. Nothing could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only search with fully described schema and annotations covering safety, the definition is essentially complete, and it even discloses the return type (server IDs) despite having no output schema. It stops short of 5 only because matching semantics and result limits are unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter ('value' – 'Tag search pattern') is already documented in the schema, so the baseline is 3. The description's 'tag name or value' hints that the pattern can match either facet of a tag, adding slight nuance, but no syntax, format, or matching-rule detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('search') plus resource ('servers') and the discriminator ('by tag name or value'), which separates it from sibling get_server_tags (which lists a server's tags) and get_servers (which lists servers unfiltered). It does not name those siblings explicitly, so it lands just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'search servers by tag' implies the use case (you have a tag and want matching servers), but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g., use get_servers instead). 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.
set_boot_deviceADestructiveInspect
Set server boot order (eq/boot_dev): pxe — network boot (reinstall step 3), disk — boot from disk (step 6), cd — mounted ISO.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| media | Yes | Boot device | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the mutation/safety profile is covered. The description adds useful behavioral context by explaining what each boot mode actually does (network vs disk vs mounted ISO), but says nothing about confirmation requirements, side effects, or reversibility beyond what annotations supply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the core action front-loaded and the enum semantics bundled inline; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with full schema coverage, no output schema, and annotations carrying the safety profile, the description supplies enough to act correctly, including workflow placement. It is only marginally short on explicit when-to-use-vs-sibling guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description genuinely enriches the 'media' enum by defining each value's meaning (pxe = network boot, disk = boot from disk, cd = mounted ISO) beyond the schema's bare 'Boot device' label. It adds little for 'id' or 'confirm', which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Set server boot order') and even names the underlying API field (eq/boot_dev), so an agent immediately knows it changes a server's boot device. It does not, however, explicitly distinguish itself from related siblings like request_rh_pxe_boot or reinstall_server, which also touch boot/PXE behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Workflow placement is hinted at via '(reinstall step 3)' and '(step 6)' and the prerequisite 'cd — mounted ISO', giving implicit context for when each mode applies. But there is no explicit statement of when to use this tool versus alternatives (e.g., request_rh_pxe_boot), leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_main_ipBInspect
Set the primary IP address of the server (ip/set_main) when there are multiple addresses.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | IP address | |
| main | Yes | IP address that will become primary | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the agent knows this is a non-destructive write. The description adds the multiple-address precondition, but does not say what side effects a primary-IP change has (service interruption, reverse DNS implications) or that confirm must be true — that requirement lives only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the effect stated first and the precondition second. The parenthetical API identifier is mildly redundant but useful for traceability, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations carry the safety profile and the schema fully documents all four required parameters, so the description only needs to add situational context. It covers the precondition but omits any note on the impact of changing the primary address or the confirm-required behavior, leaving a modest gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so id, ip, main and confirm are all documented in the schema and the baseline is 3. The description adds no disambiguation between the two similar parameters (ip vs main), which is the one place extra prose would have helped.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Set the primary IP address of the server") and even maps it to the underlying API call (ip/set_main). An agent can tell this apart from other IP-related siblings like get_ip_info or update_ptr_record, though the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause "when there are multiple addresses" gives an implicit precondition for use, which is more than nothing. However, it names no alternatives (e.g., how to first inspect addresses via get_ip_info) and states no exclusions or prerequisites such as needing the server in a known state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_novncBRead-onlyInspect
Start a NoVNC (HTML5) server console session (eq/novnc): returns a link to open in the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| white_ip | No | IP allowed to connect from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description usefully adds that a session is created and that the return is a browser link (important since there is no output schema), but omits any auth/permission or session-lifetime context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first, and no wasted wording. The unexplained "(eq/novnc)" parenthetical is a minor blemish.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly discloses the return value (a browser link), and annotations carry the safety profile. It remains incomplete on how this differs from get_vnc_console and on session behavior, leaving a real ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (id, white_ip) are documented in the schema. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Start") and resource ("NoVNC (HTML5) server console session"), and even clarifies the return ("a link to open in the browser"). However, it does not distinguish itself from the sibling get_vnc_console, which appears to overlap in purpose, and the "(eq/novnc)" tag is unexplained jargon.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives such as get_vnc_console or request_rh_kvm. The agent is left to infer the scenario (interactive browser console) 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.
unblock_ipCInspect
Unblock an IP address on the server (net/unblock_ip).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | IP address | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation/safety profile is covered. The description adds nothing beyond the raw endpoint name — it does not say what state change occurs, whether the IP must currently be blocked, or what happens to existing block rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the operation front-loaded and no filler. It is efficient, though the parenthetical endpoint reference is minor overhead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and full annotation coverage, the core need is met, but for a mutation tool the description could say more about effect and prerequisites. It is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (id, ip, confirm) are documented in the schema, so the description neither needs nor provides parameter detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (unblock) and resource (IP address) with the scope (on the server), which is clear enough to act on. It does not, however, distinguish itself from the sibling block_ip or explain the relationship between them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the sibling block_ip that performs the inverse operation. The agent must infer that this reverses a prior block.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unmount_isoAInspect
Unmount an ISO image from a server (iso/unmount_iso). Async operation. Callback key returned — track with check_task.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the operation is async and returns a callback key that must be polled via check_task. It does not describe side effects on the running server or whether the ISO remains uploaded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero filler: the action first, then the async trait, then the tracking instruction. Every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, annotation-covered, no-output-schema tool, the description covers the action, the async nature, and the return-tracking mechanism. Nothing an agent needs in order to invoke and follow up on the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'id' and 'confirm' fully documented in the schema, so the baseline is 3. The description adds no extra meaning about either parameter (e.g., whether 'id' is a server or ISO identifier).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Unmount an ISO image from a server') and even names the underlying endpoint (iso/unmount_iso). An agent can immediately distinguish it from the sibling mount_iso and from delete_iso_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides operational context that the call is asynchronous and that the returned callback key should be tracked with check_task, which effectively tells the agent the follow-up flow. It does not, however, state when to unmount versus other ISO-management siblings such as mount_iso or delete_iso_image.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_api_keyBInspect
Update API key settings (api_keys/edit): name, IP allowlist, notifications, active flag.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Key ID | |
| ip | No | IP allowlist | |
| name | Yes | Key name | |
| active | Yes | true — key is active | |
| confirm | Yes | Must be true to run the operation. | |
| login_notify_method | Yes | Login notification method | |
| login_notify_address | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the mutation/safety profile is covered. The description adds the editable field set but omits meaningful behavior such as the mandatory 'confirm' gate required by the schema, permission/auth requirements, or reversibility. With annotations carrying the safety burden, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and endpoint first and no filler. It is appropriately sized for a straightforward update tool, though it is terse enough to omit useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with 5 required fields, the description is minimally viable: annotations cover safety and the schema covers params, but it never mentions the required 'confirm' flag or any return behavior. No output schema exists, so nothing external compensates for the missing operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents nearly every parameter. The description paraphrases some of them (name, IP allowlist, notifications, active flag) but adds no format, constraint, or enum detail beyond what the schema provides. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update API key settings') and enumerates the editable fields (name, IP allowlist, notifications, active flag). The verb 'update' cleanly distinguishes it from the sibling create_api_key, delete_api_key, get_api_key and list_api_keys. It lacks an explicit sibling callout, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the other api_key siblings, nor any prerequisite or precondition stated. The endpoint reference (api_keys/edit) hints at context but does not tell the agent when this is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_billing_clientBInspect
Update client data in billing (whmcs/update_client): name, company, address, email, phone, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be true to run the operation. | |
| billing_city | No | ||
| billing_email | No | ||
| billing_state | No | ||
| billing_country | No | ||
| billing_address1 | No | ||
| billing_address2 | No | ||
| billing_lastname | No | ||
| billing_postcode | No | ||
| billing_firstname | No | ||
| billing_companyname | No | ||
| billing_phonenumber | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), so the description's main added value is confirming the mutation targets an external billing module (whmcs/update_client). It says nothing about partial-update semantics, reversibility, or auth needs, so it adds only modest context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, resource and backend path leading. No filler, though the trailing 'etc.' is slightly sloppy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter mutation with no output schema and near-zero schema coverage, the definition omits critical behavior: whether omitted fields are left unchanged, whether the whole record is overwritten, and how errors surface. This is a significant gap for an update operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 8% (only 'confirm' is documented), so the description must compensate. The field list (name, company, address, email, phone) maps loosely onto the billing_* parameters but uses generic terms and 'etc.' rather than matching parameter names, leaving the correspondence inferential.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update client data in billing') plus the backend module (whmcs/update_client), and enumerates the main fields touched. It implicitly distinguishes itself from the sibling get_billing_client, though it never names it explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only implies usage through its verb. There is no statement of when to use this versus get_billing_client, whether the client must already exist, or any prerequisite/authorization context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_contactBInspect
Update an additional contact (whmcs/update_contact): email, password, phone. Providing a phone enables SMS 2FA.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Contact email | ||
| confirm | Yes | Must be true to run the operation. | |
| password2 | No | New contact password | |
| contact_id | Yes | Contact ID | |
| phonenumber | No | Phone (enables SMS 2FA) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly=false, destructive=false, openWorld=true). The description adds one genuinely useful behavioral fact: supplying a phone number enables SMS 2FA, a side effect not visible elsewhere. It omits the required `confirm=true` gate and any sense of reversibility, so it is helpful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the mutating fields front-loaded and the notable side effect last. The internal '(whmcs/update_contact)' breadcrumb is slightly noisy but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotation coverage of prerequisites, the description should at minimum mention that `confirm` must be true to run. It covers the field list but leaves the agent to discover the required confirmation flag from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already names every parameter. The description adds meaning only for `phonenumber` (enables SMS 2FA); it says nothing about the required `confirm` flag or that `password2` is a password change. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an additional contact') and enumerates the mutable fields (email, password, phone). It is clearly distinct from add_contact and delete_contact by the verb, though it never contrasts itself with update_billing_client, the nearest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of the alternatives (update_billing_client, add_contact, delete_contact) in a sibling list full of near-identical contact/account mutations. The word 'additional' hints at scope but the agent must infer everything else.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_ptr_recordBInspect
Update the PTR record for an IP address (ip/update_ptr). Multiple records are passed separated by %0A.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | IP address | |
| ptr | Yes | New PTR value | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=true, so the agent knows this mutates external state. The description adds the batch-input format ('Multiple records passed separated by %0A'), which is genuinely useful behavioral context, but omits whether existing PTR values are overwritten and whether the operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core purpose front-loaded and the separator note following. No padding or redundancy, though the parenthetical API path is of marginal value to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param mutation tool with full schema coverage and annotations covering safety, the essentials are present. However, it lacks return-value expectations (no output schema), overwrite semantics, and any guidance on partial failure when multiple records are submitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (id, ip, ptr, confirm) are already documented in the schema. The description adds only the multi-record separator convention, which isn't captured in the schema's 'New PTR value' field description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update the PTR record for an IP address') with a parenthetical API path mapping, clearly distinguishing it from sibling get_ptr_record. It doesn't name siblings explicitly but the read/write distinction is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_ptr_record or other DNS tools, no prerequisites stated (such as requiring the IP to already exist or belong to the server), and no mention of the mandatory confirm flag's role as a safety gate beyond schema description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_isoBInspect
Upload a new ISO image by URL (iso/upload). Available to clients.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Direct URL of the ISO image | |
| name | No | Image name in the library | |
| confirm | Yes | Must be true to run the operation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, open-world operation, so the safety profile is covered. The description adds only the entitlement note ('Available to clients'); it says nothing about persistence of the download, size limits, or what happens if the URL is unreachable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, action front-loaded, with no padding. The '(iso/upload)' endpoint aside is arguably redundant, which keeps it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple three-parameter mutation with full schema coverage and a safety-carrying annotation set, the essentials are present. What is missing is sibling disambiguation versus 'add_iso_image' and any note about the asynchronous upload/download nature of a URL-based ingestion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so 'url', 'name', and 'confirm' are already documented in the schema. The phrase 'by URL' lightly reinforces the url parameter but adds no format or syntax detail beyond it; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Upload a new ISO image') and clarifies the mechanism ('by URL'), so the action is unambiguous. It does not, however, differentiate itself from the sibling 'add_iso_image', leaving the agent to guess which one adds an existing library image versus ingests a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Available to clients' is the only usage condition given, and it is an entitlement hint rather than a when-to-use rule. There is no guidance on when to prefer this over 'add_iso_image', nor any prerequisite about the URL being reachable.
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.
14 tool updates
v1.0.8- Changed
add_static_nat3 fields changed- added
Input schema / properties / ip_aclAdded value: +{ + "description": "Client IP(s) allowed to reach IPMI via NAT (InvAPI ip_acl). Required by some accounts when panel Proxy ACL is not enough.", + "type": "string" +} - added
Input schema / properties / securedAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "integer" + } + ], + "description": "Secured NAT flag if supported by InvAPI" +} - added
Input schema / properties / ttlAdded value: +{ + "description": "NAT lifetime in seconds, if supported", + "type": "integer" +}
- Changed
get_network_status1 field changed- added
Input schema / properties / portAdded value: +{ + "description": "Optional physical/logical interface or switch port (e.g. eth0). Omit to query all; if InvAPI fails on an unmapped NIC, retry with a mapped port from get_server.", + "type": "string" +}
- Changed
mount_iso3 fields changed- added
Input schema / properties / isoAdded value: +{ + "description": "ISO name or id (InvAPI field `iso`)", + "type": [ + "string", + "number" + ] +} - changed
Input schema / properties / iso_id / descriptionPrevious value: -"Image ID from list_iso_images"New value: +"Alias: image ID from list_iso_images → iso" - changed
Input schema / properties / name / descriptionPrevious value: -"Image name (if identifying by name)"New value: +"Alias: image name / iso_name → iso"
- Changed
s3_cancel_account_deletion1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_create_bucket1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_delete_account1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_delete_bucket1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_delete_file1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_delete_payment_account1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_get_buckets3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid; prefer s3uid"New value: +"Numeric id from s3_get_users.id (alias; resolved to s3uid)" - changed
Input schema / properties / s3uid / descriptionPrevious value: -"S3 account UID (s3uid) from s3_get_users or create_account/order. Numeric id (e.g. 13457) or string uid."New value: +"S3 account UID from s3_get_users.s3uid" - removed
Input schema / requiredRemoved value: -[ - "s3uid" -]
- Changed
s3_get_buckets_via_queue3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid; prefer s3uid"New value: +"Numeric id from s3_get_users.id (alias; resolved to s3uid)" - changed
Input schema / properties / s3uid / descriptionPrevious value: -"S3 account UID (s3uid) from s3_get_users or create_account/order. Numeric id (e.g. 13457) or string uid."New value: +"S3 account UID from s3_get_users.s3uid" - removed
Input schema / requiredRemoved value: -[ - "s3uid" -]
- Changed
s3_get_files3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id" - changed
Input schema / properties / limit / descriptionPrevious value: -"Page size"New value: +"Page size (mapped to InvAPI max_keys, max 100)" - changed
Input schema / properties / page / descriptionPrevious value: -"Page number"New value: +"Ignored; use search / limit. InvAPI paginates with continuation_token."
- Changed
s3_show_key1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
- Changed
s3_update_traffic_info1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"Deprecated alias for s3uid"New value: +"Deprecated alias for s3uid / get_users.id"
11 tool updates
v1.0.4- Changed
s3_cancel_account_deletion2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_create_bucket2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_delete_account2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_delete_bucket2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_delete_file2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_delete_payment_account2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_get_buckets3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid; prefer s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID (s3uid) from s3_get_users or create_account/order. Numeric id (e.g. 13457) or string uid.", + "type": [ + "string", + "number" + ] +} - added
Input schema / requiredAdded value: +[ + "s3uid" +]
- Changed
s3_get_buckets_via_queue3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid; prefer s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID (s3uid) from s3_get_users or create_account/order. Numeric id (e.g. 13457) or string uid.", + "type": [ + "string", + "number" + ] +} - added
Input schema / requiredAdded value: +[ + "s3uid" +]
- Changed
s3_get_files2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_show_key2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
- Changed
s3_update_traffic_info2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"S3 account ID (if required; check via s3_get_users)"New value: +"Deprecated alias for s3uid" - added
Input schema / properties / s3uidAdded value: +{ + "description": "S3 account UID; omit only if the token is bound to a single S3 account", + "type": [ + "string", + "number" + ] +}
117 tool updates
v1.0.3- Changed
add_dns_domain1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Имя домена, например example.com"New value: +"Domain name, e.g. example.com"
- Changed
add_dns_record14 fields changed- changed
Input schema / properties / content / descriptionPrevious value: -"Значение записи, например 10.56.121.5"New value: +"Record value, e.g. 10.56.121.5" - changed
Input schema / properties / increase_soa_serial / descriptionPrevious value: -"Автоинкремент SOA-сериала (по умолчанию true)"New value: +"Auto-increment SOA serial (defaults to true)" - changed
Input schema / properties / mname / descriptionPrevious value: -"Primary NS в SOA-записи"New value: +"Primary NS in the SOA record" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя записи, например www"New value: +"Record name, e.g. www" - changed
Input schema / properties / old_name / descriptionPrevious value: -"Прежнее имя записи — для переименования"New value: +"Previous record name — for renaming" - changed
Input schema / properties / port / descriptionPrevious value: -"Порт для SRV"New value: +"Port for SRV" - changed
Input schema / properties / priority / descriptionPrevious value: -"Приоритет для SRV/MX"New value: +"Priority for SRV/MX" - changed
Input schema / properties / proto / descriptionPrevious value: -"Протокол для SRV, например tcp"New value: +"Protocol for SRV, e.g. tcp" - changed
Input schema / properties / rname / descriptionPrevious value: -"Email администратора в SOA-записи"New value: +"Admin email in the SOA record" - changed
Input schema / properties / target / descriptionPrevious value: -"Целевой домен для SRV"New value: +"Target domain for SRV" - changed
Input schema / properties / ttl / descriptionPrevious value: -"TTL в секундах, по умолчанию 3600"New value: +"TTL in seconds, defaults to 3600" - changed
Input schema / properties / type / descriptionPrevious value: -"Тип записи: A, AAAA, CNAME, MX, TXT, SRV…"New value: +"Record type: A, AAAA, CNAME, MX, TXT, SRV…" - changed
Input schema / properties / weight / descriptionPrevious value: -"Вес для SRV"New value: +"Weight for SRV" - changed
Input schema / properties / zone / descriptionPrevious value: -"Имя зоны"New value: +"Zone name"
- Changed
add_dns_subdomain3 fields changed- changed
Input schema / properties / domain_id / descriptionPrevious value: -"ID домена из list_dns_domains"New value: +"Domain ID from list_dns_domains" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя сабдомена"New value: +"Subdomain name" - changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
add_dns_zone10 fields changed- changed
Input schema / properties / dns / descriptionPrevious value: -"SOA-параметры зоны; при пропуске применяются дефолты Hostkey"New value: +"SOA parameters for the zone; Hostkey defaults apply if omitted" - changed
Input schema / properties / dns / properties / mname / descriptionPrevious value: -"Primary NS, например ns1.hostkey.com"New value: +"Primary NS, e.g. ns1.hostkey.com" - changed
Input schema / properties / dns / properties / rname / descriptionPrevious value: -"Email администратора, например admin.example.com"New value: +"Admin email, e.g. admin.example.com" - changed
Input schema / properties / dns / properties / serial / descriptionPrevious value: -"Сериал зоны, рекомендуется YYYYMMDD00"New value: +"Zone serial, recommended YYYYMMDD00" - changed
Input schema / properties / dnssec / descriptionPrevious value: -"Включить DNSSEC (по умолчанию false)"New value: +"Enable DNSSEC (defaults to false)" - changed
Input schema / properties / kind / descriptionPrevious value: -"Тип зоны, по умолчанию Master"New value: +"Zone type, defaults to Master" - changed
Input schema / properties / masters / descriptionPrevious value: -"Список master-серверов (для Slave)"New value: +"List of master servers (for Slave)" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя зоны, например example.com"New value: +"Zone name, e.g. example.com" - changed
Input schema / properties / nameservers / descriptionPrevious value: -"NS-серверы зоны, по умолчанию ns1.hostkey.com/ns2.hostkey.com"New value: +"NS servers for the zone, defaults to ns1.hostkey.com/ns2.hostkey.com" - changed
Input schema / properties / rrsets / descriptionPrevious value: -"Использовать RRset вместо records (по умолчанию true)"New value: +"Use RRset instead of records (defaults to true)"
- Changed
add_ipmi_user1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
add_iso_image2 fields changed- changed
Input schema / properties / name / descriptionPrevious value: -"Имя образа"New value: +"Image name" - changed
Input schema / properties / url / descriptionPrevious value: -"URL образа, если требуется"New value: +"Image URL, if required"
- Changed
add_rhr_comment2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID заявки из list_rhr_requests"New value: +"Request ID from list_rhr_requests" - changed
Input schema / properties / message / descriptionPrevious value: -"Текст сообщения"New value: +"Message text"
- Changed
add_static_nat1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
apply_credit2 fields changed- changed
Input schema / properties / amount / descriptionPrevious value: -"Сумма оплаты в валюте аккаунта"New value: +"Payment amount in account currency" - changed
Input schema / properties / invoice_id / descriptionPrevious value: -"Номер инвойса"New value: +"Invoice number"
- Changed
block_ip4 fields changed- changed
Input schema / properties / description / descriptionPrevious value: -"Причина блокировки"New value: +"Block reason" - changed
Input schema / properties / four_hours / descriptionPrevious value: -"true — блокировка автоматически снимется через 4 часа"New value: +"true — block is automatically lifted after 4 hours" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address"
- Changed
call_api_raw5 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Действие ресурса, например: list"New value: +"Resource action, e.g.: list" - changed
Input schema / properties / auth / descriptionPrevious value: -"Подставлять сессионный токен (по умолчанию true)"New value: +"Inject session token (defaults to true)" - changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязательное подтверждение. Без confirm=true вызов отклоняется."New value: +"Required confirmation. Without confirm=true the call is rejected." - changed
Input schema / properties / params / descriptionPrevious value: -"Параметры вызова объектом; вложенные объекты превращаются в params[...]"New value: +"Call parameters as an object; nested objects become params[...]" - changed
Input schema / properties / resource / descriptionPrevious value: -"Ресурс InvAPI без .php, например: iso, s3, rhr, eq, net, whmcs"New value: +"InvAPI resource without .php, e.g.: iso, s3, rhr, eq, net, whmcs"
- Changed
check_task1 field changed- changed
Input schema / properties / key / descriptionPrevious value: -"Callback-ключ из ответа асинхронной операции"New value: +"Callback key from an async operation response"
- Changed
clear_pxe_config2 fields changed- changed
Input schema / properties / hostname / descriptionPrevious value: -"Имя хоста сервера"New value: +"Server hostname" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
clear_static_nat1 field changed- changed
Input schema / properties / ip / descriptionPrevious value: -"Внутренний IP-адрес"New value: +"Internal IP address"
- Changed
create_addfunds_invoice1 field changed- changed
Input schema / properties / amount / descriptionPrevious value: -"Сумма пополнения в валюте аккаунта"New value: +"Top-up amount in account currency"
- Changed
create_api_key6 fields changed- changed
Input schema / properties / active / descriptionPrevious value: -"true — ключ активен"New value: +"true — key is active" - changed
Input schema / properties / ip / descriptionPrevious value: -"Белый список IP, например 10.0.0.2, 10.4.6.3/24"New value: +"IP allowlist, e.g. 10.0.0.2, 10.4.6.3/24" - changed
Input schema / properties / login_notify_address / descriptionPrevious value: -"Email или webhook URL для уведомлений"New value: +"Email or webhook URL for notifications" - changed
Input schema / properties / login_notify_method / descriptionPrevious value: -"Уведомления о входах по ключу; для per-server ключа используйте none"New value: +"Login notifications for this key; use none for per-server keys" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя ключа"New value: +"Key name" - changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера; если не указан — ключ на весь аккаунт"New value: +"Server ID; omit for an account-wide key"
- Changed
create_pxe_config8 fields changed- changed
Input schema / properties / hostname / descriptionPrevious value: -"Имя хоста"New value: +"Hostname" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / os_id / descriptionPrevious value: -"ID ОС из list_os"New value: +"OS ID from list_os" - changed
Input schema / properties / post_install_callback / descriptionPrevious value: -"URL callback после установки"New value: +"Callback URL after install" - changed
Input schema / properties / post_install_script / descriptionPrevious value: -"Скрипт после установки"New value: +"Post-install script" - changed
Input schema / properties / reinstall_key / descriptionPrevious value: -"Мастер-ключ из create_reinstall_task"New value: +"Master key from create_reinstall_task" - changed
Input schema / properties / root_pass / descriptionPrevious value: -"Пароль root (мин. 8 символов, заглавная буква, цифра)"New value: +"Root password (min. 8 chars, uppercase letter, digit)" - changed
Input schema / properties / ssh_key / descriptionPrevious value: -"Публичный SSH-ключ"New value: +"Public SSH key"
- Changed
create_reinstall_task1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
create_rhr_request3 fields changed- changed
Input schema / properties / comment / descriptionPrevious value: -"Подробное описание требуемых работ"New value: +"Detailed description of the required work" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / request_type / descriptionPrevious value: -"Тип работ, если задаётся справочником"New value: +"Work type, if set by a directory"
- Changed
create_snapshot2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID виртуальной машины"New value: +"Virtual machine ID" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя снапшота"New value: +"Snapshot name"
- Changed
delete_api_key1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID ключа"New value: +"Key ID"
- Changed
delete_cancellation_request1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
delete_contact1 field changed- changed
Input schema / properties / contact_id / descriptionPrevious value: -"ID контакта"New value: +"Contact ID"
- Changed
delete_dns_domain2 fields changed- changed
Input schema / properties / domain_id / descriptionPrevious value: -"ID домена из list_dns_domains"New value: +"Domain ID from list_dns_domains" - changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
delete_dns_record3 fields changed- changed
Input schema / properties / name / descriptionPrevious value: -"Имя записи"New value: +"Record name" - changed
Input schema / properties / type / descriptionPrevious value: -"Тип записи"New value: +"Record type" - changed
Input schema / properties / zone / descriptionPrevious value: -"Имя зоны"New value: +"Zone name"
- Changed
delete_dns_subdomain2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сабдомена"New value: +"Subdomain ID" - changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
delete_dns_zone1 field changed- changed
Input schema / properties / zone / descriptionPrevious value: -"Имя зоны"New value: +"Zone name"
- Changed
delete_iso_image1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID ISO-образа"New value: +"ISO image ID"
- Changed
discard_rhr_request1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID заявки"New value: +"Request ID"
- Changed
download_invoice1 field changed- changed
Input schema / properties / invoice_id / descriptionPrevious value: -"Номер инвойса"New value: +"Invoice number"
- Changed
drop_nat2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID записи NAT"New value: +"NAT record ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес записи"New value: +"Record IP address"
- Changed
edit_dns_subdomain2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сабдомена"New value: +"Subdomain ID" - changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
generate_due_invoice1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_api_key1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID ключа из list_api_keys"New value: +"Key ID from list_api_keys"
- Changed
get_api_key_history3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID ключа"New value: +"Key ID" - changed
Input schema / properties / period_from / descriptionPrevious value: -"Начало периода, YYYY-MM-DD"New value: +"Period start, YYYY-MM-DD" - changed
Input schema / properties / period_to / descriptionPrevious value: -"Конец периода, YYYY-MM-DD"New value: +"Period end, YYYY-MM-DD"
- Changed
get_cancellation_requests1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера (фильтр)"New value: +"Server ID (filter)"
- Changed
get_credit_history1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_dns_zone1 field changed- changed
Input schema / properties / zone / descriptionPrevious value: -"Имя зоны, например example.com"New value: +"Zone name, e.g. example.com"
- Changed
get_invoice1 field changed- changed
Input schema / properties / invoice_id / descriptionPrevious value: -"Номер инвойса"New value: +"Invoice number"
- Changed
get_ip_info1 field changed- changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address"
- Changed
get_network_status1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_payment_gateway1 field changed- changed
Input schema / properties / invoice_id / descriptionPrevious value: -"Номер инвойса"New value: +"Invoice number"
- Changed
get_port_graphs3 fields changed- changed
Input schema / properties / graph / descriptionPrevious value: -"1 — день, 2 — месяц, 3 — год"New value: +"1 — day, 2 — month, 3 — year" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / port / descriptionPrevious value: -"Физический порт свитча"New value: +"Physical switch port"
- Changed
get_power_status1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_preset1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID пресета; без него — список всех"New value: +"Preset ID; omit for full list"
- Changed
get_preset_pricing1 field changed- changed
Input schema / properties / currencies / descriptionPrevious value: -"Коды валют через запятую, например EUR,USD. По умолчанию EUR"New value: +"Currency codes, comma-separated, e.g. EUR,USD. Default EUR"
- Changed
get_ptr_record2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address"
- Changed
get_server1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера в InvAPI"New value: +"Server ID in InvAPI"
- Changed
get_server_billing_data1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_server_invoices1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_server_sensors1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_server_tags1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
get_servers5 fields changed- changed
Input schema / properties / group / descriptionPrevious value: -"Группы через запятую: VPS,Gpu,1CPU,2CPU,AMD,Instances,Storage,Nodes,Micro,Mini,Dell"New value: +"Groups, comma-separated: VPS,Gpu,1CPU,2CPU,AMD,Instances,Storage,Nodes,Micro,Mini,Dell" - changed
Input schema / properties / ip / descriptionPrevious value: -"Найти сервер по IP-адресу"New value: +"Find server by IP address" - changed
Input schema / properties / location / descriptionPrevious value: -"Коды локаций через запятую: NL,US,FI,DE,IS,TR,UK,ES,IT,PL,CH"New value: +"Location codes, comma-separated: NL,US,FI,DE,IS,TR,UK,ES,IT,PL,CH" - changed
Input schema / properties / mac / descriptionPrevious value: -"Найти сервер по MAC-адресу"New value: +"Find server by MAC address" - changed
Input schema / properties / status / descriptionPrevious value: -"Статус: rent (активный) или power_off (приостановлен)"New value: +"Status: rent (active) or power_off (suspended)"
- Changed
get_snapshots1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID виртуальной машины"New value: +"Virtual machine ID"
- Changed
get_stock_server1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID stock-сервера из list_stock_servers"New value: +"Stock server ID from list_stock_servers"
- Changed
get_transactions2 fields changed- changed
Input schema / properties / invoice_id / descriptionPrevious value: -"Фильтр по инвойсу"New value: +"Filter by invoice" - changed
Input schema / properties / transaction_id / descriptionPrevious value: -"Конкретная транзакция"New value: +"Specific transaction"
- Changed
get_vm_stats1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID виртуальной машины"New value: +"Virtual machine ID"
- Changed
get_vnc_console1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
list_dns_subdomains1 field changed- changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
list_iso_images3 fields changed- added
Input schema / properties / idAdded value: +{ + "description": "Server ID in InvAPI (required)", + "type": "integer" +} - removed
Input schema / properties / server_idRemoved value: -{ - "description": "ID сервера (обязателен для клиентских ключей)", - "type": "integer" -} - added
Input schema / requiredAdded value: +[ + "id" +]
- Changed
list_os1 field changed- changed
Input schema / properties / instance_id / descriptionPrevious value: -"ID пресета из list_presets"New value: +"Preset ID from list_presets"
- Changed
list_presets1 field changed- changed
Input schema / properties / location / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"
- Changed
list_rhr_requests2 fields changed- changed
Input schema / properties / location / descriptionPrevious value: -"Фильтр по локации, например NL"New value: +"Filter by location, e.g. NL" - changed
Input schema / properties / status / descriptionPrevious value: -"Фильтр по статусу заявки"New value: +"Filter by request status"
- Changed
list_server_api_keys1 field changed- changed
Input schema / properties / server_id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
list_software2 fields changed- changed
Input schema / properties / instance_id / descriptionPrevious value: -"ID пресета из list_presets"New value: +"Preset ID from list_presets" - changed
Input schema / properties / location / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"
- Changed
list_stock_servers2 fields changed- changed
Input schema / properties / group / descriptionPrevious value: -"Группа серверов; GPU-серверы не входят в остальные группы"New value: +"Server group; GPU servers are not included in other groups" - changed
Input schema / properties / location / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"
- Changed
list_traffic_plans2 fields changed- changed
Input schema / properties / instance_id / descriptionPrevious value: -"ID пресета из list_presets"New value: +"Preset ID from list_presets" - changed
Input schema / properties / location / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"
- Changed
mass_pay1 field changed- changed
Input schema / properties / invoices / descriptionPrevious value: -"Массив номеров инвойсов"New value: +"Array of invoice numbers"
- Changed
mount_iso3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / iso_id / descriptionPrevious value: -"ID образа из list_iso_images"New value: +"Image ID from list_iso_images" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя образа (если используется идентификация по имени)"New value: +"Image name (if identifying by name)"
- Changed
order_server16 fields changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязателен (=true) для реального заказа"New value: +"Required (=true) for a real order" - changed
Input schema / properties / deploy_notify / descriptionPrevious value: -"Уведомление о завершении деплоя на email (рекомендуется true)"New value: +"Email notification when deploy finishes (recommended true)" - changed
Input schema / properties / deploy_period / descriptionPrevious value: -"Период оплаты"New value: +"Billing period" - changed
Input schema / properties / dry_run / descriptionPrevious value: -"По умолчанию true: проверка параметров без создания заказа и списания средств"New value: +"Default true: validate parameters without placing an order or charging" - changed
Input schema / properties / hostname / descriptionPrevious value: -"Имя хоста; по умолчанию генерируется из локации и ID"New value: +"Hostname; default is generated from location and ID" - changed
Input schema / properties / location_name / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH" - changed
Input schema / properties / os_id / descriptionPrevious value: -"ID ОС из list_os"New value: +"OS ID from list_os" - changed
Input schema / properties / own_os / descriptionPrevious value: -"1 — не устанавливать ОС (ручная установка)"New value: +"1 — do not install OS (manual install)" - changed
Input schema / properties / post_install_callback / descriptionPrevious value: -"URL callback после деплоя"New value: +"Callback URL after deploy" - changed
Input schema / properties / post_install_script / descriptionPrevious value: -"Скрипт, выполняемый после деплоя"New value: +"Script run after deploy" - changed
Input schema / properties / preset / descriptionPrevious value: -"ID или имя пресета из list_presets (например, 108 или vm.pico)"New value: +"Preset ID or name from list_presets (e.g. 108 or vm.pico)" - changed
Input schema / properties / promocode / descriptionPrevious value: -"Промокод на скидку"New value: +"Discount promocode" - changed
Input schema / properties / root_pass / descriptionPrevious value: -"Пароль root: мин. 8 символов, заглавная буква, цифра, спецсимвол (кроме @ и #)"New value: +"Root password: min. 8 chars, uppercase, digit, special char (not @ or #)" - changed
Input schema / properties / soft_id / descriptionPrevious value: -"ID ПО из list_software (опционально)"New value: +"Software ID from list_software (optional)" - changed
Input schema / properties / ssh_key / descriptionPrevious value: -"Публичный SSH-ключ для root"New value: +"Public SSH key for root" - changed
Input schema / properties / traffic_plan / descriptionPrevious value: -"ID трафик-плана из list_traffic_plans"New value: +"Traffic plan ID from list_traffic_plans"
- Changed
port_off2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / port / descriptionPrevious value: -"Физический порт свитча из get_network_status"New value: +"Physical switch port from get_network_status"
- Changed
port_on2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / port / descriptionPrevious value: -"Физический порт свитча из get_network_status"New value: +"Physical switch port from get_network_status"
- Changed
power_off2 fields changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязательное подтверждение операции. Без confirm=true вызов отклоняется."New value: +"Required confirmation. Without confirm=true the call is rejected." - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
power_on2 fields changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязательное подтверждение операции. Без confirm=true вызов отклоняется."New value: +"Required confirmation. Without confirm=true the call is rejected." - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
reboot_server2 fields changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязательное подтверждение операции. Без confirm=true вызов отклоняется."New value: +"Required confirmation. Without confirm=true the call is rejected." - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
reinstall_server8 fields changed- changed
Input schema / properties / confirm / descriptionPrevious value: -"Обязателен (=true) для запуска переустановки"New value: +"Required (=true) to start reinstall" - changed
Input schema / properties / hostname / descriptionPrevious value: -"Текущий hostname сервера — служит подтверждением, что сервер выбран верно"New value: +"Current server hostname — confirms the correct server is selected" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / os_id / descriptionPrevious value: -"ID новой ОС из list_os (0 + own_os=1 — без установки ОС)"New value: +"New OS ID from list_os (0 + own_os=1 — no OS install)" - changed
Input schema / properties / own_os / descriptionPrevious value: -"1 — не устанавливать ОС"New value: +"1 — do not install OS" - changed
Input schema / properties / root_pass / descriptionPrevious value: -"Новый пароль root"New value: +"New root password" - changed
Input schema / properties / soft_id / descriptionPrevious value: -"ID ПО из list_software"New value: +"Software ID from list_software" - changed
Input schema / properties / ssh_key / descriptionPrevious value: -"Публичный SSH-ключ для root"New value: +"Public SSH key for root"
- Changed
remove_ipmi_user1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
remove_snapshot2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID виртуальной машины"New value: +"Virtual machine ID" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя снапшота"New value: +"Snapshot name"
- Changed
remove_static_nat1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_cancellation3 fields changed- changed
Input schema / properties / cancellation_type / descriptionPrevious value: -"1 — немедленно (частичный возврат при возможности), 0 — в конце биллинг-периода"New value: +"1 — immediate (partial refund if possible), 0 — at end of billing period" - changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / terminate_reason_custom / descriptionPrevious value: -"Причина отмены"New value: +"Cancellation reason"
- Changed
request_rh_check1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_rh_kvm1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_rh_power_off1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_rh_power_on1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_rh_pxe_boot1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_rh_reboot1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
request_sales_assistance3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера, если запрос касается сервера"New value: +"Server ID, if the request concerns a server" - changed
Input schema / properties / message / descriptionPrevious value: -"Детали запроса: что отменить/перенести и почему"New value: +"Request details: what to cancel/transfer and why" - changed
Input schema / properties / subject / descriptionPrevious value: -"Тема запроса"New value: +"Request subject"
- Changed
reset_billing_password1 field changed- changed
Input schema / properties / email / descriptionPrevious value: -"Email аккаунта"New value: +"Account email"
- Changed
reset_ipmi1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
restore_snapshot2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID виртуальной машины"New value: +"Virtual machine ID" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя снапшота"New value: +"Snapshot name"
- Changed
run_post_install_task3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / params / descriptionPrevious value: -"Дополнительные параметры задачи"New value: +"Additional task parameters" - changed
Input schema / properties / task / descriptionPrevious value: -"ID или имя задачи из list_post_install_tasks"New value: +"Task ID or name from list_post_install_tasks"
- Changed
s3_cancel_account_deletion1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
s3_create_account3 fields changed- changed
Input schema / properties / bucket / descriptionPrevious value: -"Имя начального бакета"New value: +"Initial bucket name" - changed
Input schema / properties / location / descriptionPrevious value: -"Локация из s3_get_locations"New value: +"Location from s3_get_locations" - changed
Input schema / properties / plan_id / descriptionPrevious value: -"ID тарифного плана из s3_list_plans"New value: +"Plan ID from s3_list_plans"
- Changed
s3_create_bucket2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)" - changed
Input schema / properties / bucket / descriptionPrevious value: -"Имя бакета"New value: +"Bucket name"
- Changed
s3_create_order2 fields changed- changed
Input schema / properties / location / descriptionPrevious value: -"Локация"New value: +"Location" - changed
Input schema / properties / plan_id / descriptionPrevious value: -"ID тарифного плана"New value: +"Plan ID"
- Changed
s3_delete_account1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
s3_delete_bucket2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)" - changed
Input schema / properties / bucket / descriptionPrevious value: -"Имя бакета"New value: +"Bucket name"
- Changed
s3_delete_file3 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)" - changed
Input schema / properties / bucket / descriptionPrevious value: -"Имя бакета"New value: +"Bucket name" - changed
Input schema / properties / file / descriptionPrevious value: -"Ключ (имя) файла"New value: +"File key (name)"
- Changed
s3_delete_payment_account1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
s3_get_buckets1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
s3_get_buckets_via_queue1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
s3_get_files5 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)" - changed
Input schema / properties / bucket / descriptionPrevious value: -"Имя бакета"New value: +"Bucket name" - changed
Input schema / properties / limit / descriptionPrevious value: -"Размер страницы"New value: +"Page size" - changed
Input schema / properties / page / descriptionPrevious value: -"Номер страницы"New value: +"Page number" - changed
Input schema / properties / search / descriptionPrevious value: -"Поисковая строка по имени файла"New value: +"Search string by file name"
- Changed
s3_get_users1 field changed- changed
Input schema / properties / location / descriptionPrevious value: -"Фильтр по локации (для администраторов)"New value: +"Filter by location (for administrators)"
- Changed
s3_list_plans1 field changed- changed
Input schema / properties / location / descriptionPrevious value: -"Локация (фильтр), если поддерживается"New value: +"Location (filter), if supported"
- Changed
s3_show_key2 fields changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)" - changed
Input schema / properties / key_type / descriptionPrevious value: -"Тип ключа"New value: +"Key type"
- Changed
s3_update_traffic_info1 field changed- changed
Input schema / properties / account_id / descriptionPrevious value: -"ID S3-аккаунта (если требуется; уточняйте через s3_get_users)"New value: +"S3 account ID (if required; check via s3_get_users)"
- Changed
search_presets3 fields changed- changed
Input schema / properties / location / descriptionPrevious value: -"Локация: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH"New value: +"Location: NL/US/FI/DE/IS/TR/UK/ES/IT/PL/CH" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя пресета, например vm.pico"New value: +"Preset name, e.g. vm.pico" - changed
Input schema / properties / scope / descriptionPrevious value: -"free (по умолчанию) — только свободные"New value: +"free (default) — available only"
- Changed
search_servers_by_tag1 field changed- changed
Input schema / properties / value / descriptionPrevious value: -"Шаблон поиска по тегам"New value: +"Tag search pattern"
- Changed
set_boot_device2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / media / descriptionPrevious value: -"Устройство загрузки"New value: +"Boot device"
- Changed
set_main_ip3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address" - changed
Input schema / properties / main / descriptionPrevious value: -"IP-адрес, который станет основным"New value: +"IP address that will become primary"
- Changed
start_novnc2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / white_ip / descriptionPrevious value: -"IP, с которого разрешено подключение"New value: +"IP allowed to connect from"
- Changed
unblock_ip2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address"
- Changed
unmount_iso1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID"
- Changed
update_api_key5 fields changed- changed
Input schema / properties / active / descriptionPrevious value: -"true — ключ активен"New value: +"true — key is active" - changed
Input schema / properties / id / descriptionPrevious value: -"ID ключа"New value: +"Key ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"Белый список IP"New value: +"IP allowlist" - changed
Input schema / properties / login_notify_method / descriptionPrevious value: -"Способ уведомлений о входах"New value: +"Login notification method" - changed
Input schema / properties / name / descriptionPrevious value: -"Имя ключа"New value: +"Key name"
- Changed
update_contact4 fields changed- changed
Input schema / properties / contact_id / descriptionPrevious value: -"ID контакта"New value: +"Contact ID" - changed
Input schema / properties / email / descriptionPrevious value: -"Email контакта"New value: +"Contact email" - changed
Input schema / properties / password2 / descriptionPrevious value: -"Новый пароль контакта"New value: +"New contact password" - changed
Input schema / properties / phonenumber / descriptionPrevious value: -"Телефон (включает 2FA по SMS)"New value: +"Phone (enables SMS 2FA)"
- Changed
update_ptr_record3 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"ID сервера"New value: +"Server ID" - changed
Input schema / properties / ip / descriptionPrevious value: -"IP-адрес"New value: +"IP address" - changed
Input schema / properties / ptr / descriptionPrevious value: -"Новое значение PTR"New value: +"New PTR value"
- Changed
upload_iso2 fields changed- changed
Input schema / properties / name / descriptionPrevious value: -"Имя образа в библиотеке"New value: +"Image name in the library" - changed
Input schema / properties / url / descriptionPrevious value: -"Прямой URL ISO-образа"New value: +"Direct URL of the ISO image"
132 tool updates
v1.0.1- First observed
add_contact - First observed
add_dns_domain - First observed
add_dns_record - First observed
add_dns_subdomain - First observed
add_dns_zone - First observed
add_ipmi_user - First observed
add_iso_image - First observed
add_rhr_comment - First observed
add_static_nat - First observed
apply_credit - First observed
block_ip - First observed
call_api_raw - First observed
check_task - First observed
clear_pxe_config - First observed
clear_static_nat - First observed
create_addfunds_invoice - First observed
create_api_key - First observed
create_pxe_config - First observed
create_reinstall_task - First observed
create_rhr_request - First observed
create_snapshot - First observed
delete_api_key - First observed
delete_cancellation_request - First observed
delete_contact - First observed
delete_dns_domain - First observed
delete_dns_record - First observed
delete_dns_subdomain - First observed
delete_dns_zone - First observed
delete_iso_image - First observed
discard_rhr_request - First observed
download_invoice - First observed
drop_nat - First observed
edit_dns_subdomain - First observed
generate_due_invoice - First observed
get_account_info - First observed
get_api_key - First observed
get_api_key_history - First observed
get_billing_client - First observed
get_cancellation_requests - First observed
get_contacts - First observed
get_credit_history - First observed
get_dns_zone - First observed
get_invoice - First observed
get_invoices - First observed
get_ip_info - First observed
get_network_status - First observed
get_payment_gateway - First observed
get_port_graphs - First observed
get_power_status - First observed
get_preset - First observed
get_preset_pricing - First observed
get_ptr_record - First observed
get_server - First observed
get_server_billing_data - First observed
get_server_invoices - First observed
get_server_sensors - First observed
get_server_tags - First observed
get_servers - First observed
get_snapshots - First observed
get_stock_server - First observed
get_transactions - First observed
get_uploaded_isos - First observed
get_vm_engine - First observed
get_vm_stats - First observed
get_vnc_console - First observed
list_api_keys - First observed
list_dns_domains - First observed
list_dns_subdomains - First observed
list_dns_zones - First observed
list_iso_images - First observed
list_os - First observed
list_post_install_tasks - First observed
list_preset_groups - First observed
list_presets - First observed
list_rhr_requests - First observed
list_server_api_keys - First observed
list_software - First observed
list_stock_servers - First observed
list_traffic_plans - First observed
logout - First observed
mass_pay - First observed
mount_iso - First observed
order_server - First observed
port_off - First observed
port_on - First observed
power_off - First observed
power_on - First observed
reboot_server - First observed
reinstall_server - First observed
remove_ipmi_user - First observed
remove_snapshot - First observed
remove_static_nat - First observed
request_cancellation - First observed
request_rh_check - First observed
request_rh_kvm - First observed
request_rh_power_off - First observed
request_rh_power_on - First observed
request_rh_pxe_boot - First observed
request_rh_reboot - First observed
request_sales_assistance - First observed
reset_billing_password - First observed
reset_ipmi - First observed
restore_snapshot - First observed
run_post_install_task - First observed
s3_cancel_account_deletion - First observed
s3_create_account - First observed
s3_create_bucket - First observed
s3_create_order - First observed
s3_delete_account - First observed
s3_delete_bucket - First observed
s3_delete_file - First observed
s3_delete_payment_account - First observed
s3_get_buckets - First observed
s3_get_buckets_via_queue - First observed
s3_get_files - First observed
s3_get_locations - First observed
s3_get_users - First observed
s3_list_plans - First observed
s3_show_key - First observed
s3_update_traffic_info - First observed
search_presets - First observed
search_servers_by_tag - First observed
set_boot_device - First observed
set_main_ip - First observed
start_novnc - First observed
unblock_ip - First observed
unmount_iso - First observed
update_api_key - First observed
update_billing_client - First observed
update_contact - First observed
update_ptr_record - First observed
upload_iso
TDQS
Scored across 132 tools
Most tools map to distinct resource/action pairs, but several areas overlap: s3_get_buckets and s3_get_buckets_via_queue are explicitly duplicative, preset listing/getting/searching is split across multiple tools, and Remote Hands power/reboot requests sit alongside direct power/reboot tools. call_api_raw also overlaps with nearly every typed tool, so misselection is plausible despite generally helpful descriptions.
The set is predominantly snake_case with recognizable resource prefixes such as s3_, request_rh_, and dns. There are minor inconsistencies in verb choice (get vs list vs show) and some bare or abbreviated names like mass_pay, logout, and rhr, but the convention remains readable overall.
132 tools is far beyond a manageable surface and exceeds the rubric's 50+ extreme-mismatch threshold. Even for a broad hosting platform, the presence of call_api_raw suggests the typed surface could have been kept much smaller.
Coverage is broad across server lifecycle, billing, DNS, S3, networking, IPMI, snapshots, ISO management, API keys, and Remote Hands. Some operations are permission-gated, staff-only, or only available through call_api_raw, but overall the domain has few dead ends.
Maintenance
Related MCP Connectors
Manage Vozora VPS servers, SSH keys, firewalls, DNS and usage from an AI agent.
- mcpOAuthnet.hepcloud
Manage HepCloud (Turkish cloud) servers and managed PostgreSQL from your AI assistant. OAuth 2.1.
Manage VeriTeknik servers, DNS, backups and support tickets from your AI assistant.
MCP server for Hostkey .ru (InvAPI): servers, power, order, DNS, S3, billing
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables users to manage Hetzner Cloud resources including servers, load balancers, and volumes through natural language commands. It facilitates infrastructure operations such as resource creation, security configuration, and real-time pricing queries within AI-powered environments.69 npm1-

hostman-mcp-serverofficial
AlicenseAqualityDmaintenanceEnables deploying applications to Hostman, creating VPCs, databases, and floating IPs, and managing VCS providers through natural language prompts.127 npmMIT- AlicenseBqualityDmaintenanceEnables management of Timeweb Cloud resources including servers, databases, Kubernetes clusters, S3 storage, DNS, SSH keys, and floating IPs through natural language.976 npmMIT
- AlicenseAqualityDmaintenanceEnables managing DigitalOcean cloud resources, including Droplets, databases, domains, and more, via natural language.121MIT