the-real-hetzner-mcp
Provides typed tools covering the Hetzner Cloud API, including read and write operations for Hetzner Cloud resources such as servers and Cloud DNS zones/RRSets. Includes hand-tuned server-operation wrappers, a raw request escape hatch, pagination, action polling, and optional write-confirmation, read-only, and tool-denial safeguards.
the-real-hetzner-mcp
An unofficial local Model Context Protocol (MCP) server
(stdio) for the Hetzner Cloud API: every operation of the vendored Hetzner Cloud API
specification as a typed tool, read and write, plus hand-tuned wrappers for the common server
operations. npm package: @mguttmann/hetzner-cloud-mcp.
Unofficial project. This server is not affiliated with, endorsed by, sponsored by or
supported by Hetzner Online GmbH. "Hetzner" is a trademark of Hetzner Online GmbH. The vendored
API specification (specs/cloud.spec.json) is Hetzner's and is not covered by this project's
MIT License. See NOTICE.
Maintenance status
Maintained on a best-effort basis by one maintainer (@mguttmann) in spare time. There is no support contract and no guaranteed response time.
Security fixes take priority over features. Report vulnerabilities privately through GitHub private vulnerability reporting, never in a public issue; see SECURITY.md.
Only the latest minor release gets fixes (SECURITY.md lists the supported versions).
Dependency updates come from Dependabot; CI fails when a runtime dependency has a known high or critical advisory.
Releases are built and published by GitHub Actions from a tag on
main, with a CycloneDX SBOM,SHA256SUMSand build provenance (CHANGELOG.md lists the changes).Issues and pull requests are welcome. Tool names, parameters and environment variables are kept stable between releases; see AGENTS.md for the contract rules.
Related MCP server: hetzner-mcp
Features
Full coverage of the Hetzner Cloud API via codegen from
specs/cloud.spec.json(one generated tool per operation), plus hand-tuned wrappers for the common server operations. The exact tool list and count are pinned bytests/tools-contract.test.tsagainsttests/snapshots/tools-contract.json.hcloud_raw_requestas a generic escape hatch for any endpoint.Capped 429 backoff, automatic pagination with a soft-cap, action polling with a wall-clock budget (see Timeouts and retries).
Optional write guard
HETZNER_CONFIRM_WRITES=true: every tool that is not read-only returns a preview (tool name and input) unless the call carriesconfirm: "YES".Optional operator switches
HETZNER_READ_ONLY=true(only read-only tools andGETthroughhcloud_raw_requestrun) andHETZNER_DENY_TOOLS(tool name globs that always return an error). Both leave the tool list and the schemas unchanged.
Out of Scope
Not covered: Hetzner Robot (the dedicated-server API), Hetzner DNS (the standalone DNS product, a separate API from Cloud DNS) and Hetzner Storage Boxes. They are not part of the Cloud API and the codegen has no spec for them.
Covered: Cloud DNS zones and RRSets (/v1/zones) are part of the Cloud API spec, so they are in scope through the generated tools.
Installation
Requires Node.js 22.12 or newer (engines in package.json; the CI matrix in .github/workflows/ci.yml tests the floor and the current Node lines).
Do not install 0.1.x. npm versions below 0.2.0 (0.1.0 and 0.1.1) are affected by a path-injection vulnerability that is fixed in 0.2.0, see SECURITY.md.
From npm (0.2.0 or newer)
The package name is exactly @mguttmann/hetzner-cloud-mcp; packages with similar names are not from this project.
npm install -g "@mguttmann/hetzner-cloud-mcp@>=0.2.0"The version range makes npm refuse the vulnerable 0.1.x versions. If npm reports that no matching version exists, 0.2.0 is not published yet: install from a pinned git commit instead. In your MCP client config the command is then just hetzner-cloud-mcp (no path needed).
With npx (no global install)
npx -y "@mguttmann/hetzner-cloud-mcp@>=0.2.0"MCP clients start it the same way, see Variant C. Keep the version range: without it npx would take whatever version npm serves as latest.
From the MCP Registry
Once listed, the server is in the official MCP Registry as io.github.mguttmann/the-real-hetzner-mcp, with the npm package above as its package. Clients that install from the registry use the same npm package.
From a pinned git commit
git clone https://github.com/mguttmann/the-real-hetzner-mcp.git
cd the-real-hetzner-mcp
git checkout <full commit sha>
npm ci
npm run buildPin a full commit SHA, not a branch name: the commit of the v0.2.0 tag (git rev-list -n 1 v0.2.0) or a later commit on main. npm ci installs exactly the committed lockfile.
Setup
With the npm package, set the variables in the env block of your MCP client configuration (see MCP Connector Setup); the package ships no .env file. In a git checkout:
cp .env.example .env
# Add HETZNER_API_TOKEN to .env (Read & Write token from the Hetzner Cloud Console)npm run refresh-spec and npm run generate are not part of the setup: they change the tool surface (see Spec Updates).
The server reads its configuration from the environment. At startup it also loads the .env file in the package directory (next to package.json, dotenv), never one from the current working directory; variables that are already set win. A deployment can pass the file explicitly instead, from any working directory: node --env-file=/path/to/.env dist/index.js.
Optional smoke test against the real API (four read-only calls):
npm run test:liveConfiguration
Only HETZNER_API_TOKEN is required. The defaults below are pinned by tests/config.test.ts. A numeric value that is not a positive number, and an unknown boolean or log level, falls back to the default. Exceptions that stop the server at startup instead: an invalid HETZNER_API_BASE and an unknown HETZNER_READ_ONLY value.
Variable | Default | Meaning |
| (required) | Hetzner Cloud API token, sent as a bearer token on every request. The server can do exactly what this token allows. |
|
| API base URL. Must be |
|
|
|
|
|
|
| (empty) | Comma-separated tool name globs ( |
|
|
|
|
| Wall-clock budget for one API request, all attempts and retry delays included. |
|
| Longest single retry delay. A 429 whose |
|
| Wall-clock budget of a |
|
| Pause between two polls. The |
|
| Soft cap on the items an auto-paginated list collects; a capped list reports |
|
| Soft cap on the pages an auto-paginated list requests. |
|
| Largest tool result text in bytes, counted as sent (JSON-escaped). A longer result is cut and ends with |
|
| Wall-clock budget of one auto-paginated list. When it ends, the pages read so far come back with |
|
|
|
Development only: RUN_LIVE_TESTS=1 enables tests/live-smoke.test.ts (set by npm run test:live), and HETZNER_LIVE_SMOKE_ANCHORS optionally names servers that test expects to find.
Timeouts and retries
Retries: a 429 is retried after Retry-After, or after a short backoff when the header is
missing (Hetzner refills one request per second; RateLimit-Reset is the time the bucket is
full again and is not used as a delay). A 5xx is retried with backoff, except for POST, which
may already have been processed. With the defaults one tool call answers within about
max(HTTP_TIMEOUT_MS, ACTION_POLL_TIMEOUT_MS) (tests/call-budget.test.ts measures this), so it
stays below a 60 s client call timeout, common in MCP clients and gateways. Keep that relation if you
raise the values. Auto-paginated lists run one request per page within
PAGINATION_TIMEOUT_MS; when that budget ends, the pages read so far come back with
truncated: true and a note, never as a list that looks complete.
When polling fails or the budget runs out after a successful write, the tool returns the write
response (for example the new resource id and a one-time root_password) with
polling_timed_out: true, plus polling_error if polling failed.
MCP protocol
The server speaks MCP over stdio only and opens no network port.
Protocol revisions: a client that asks for
2024-11-05,2025-03-26,2025-06-18or2025-11-25gets that revision back; a client that asks for a newer one (for example2026-07-28) ininitializegets2025-11-25(tests/server.test.ts).2026-07-28 is opt-in: with
MCP_SERVE_MODERN_PROTOCOL=truethe server also answers a client that opens withserver/discoverand serves it the 2026-07-28 revision, with the same tools. A client that opens withinitializestill gets the 2025-era session above (tests/serve-protocol.test.ts). The default isfalse: a client in auto mode (such as the pythonmcpclient) would switch to the new revision as soon as it is offered, so turn it on only after checking the client. Seedocs/adr/0001-mcp-sdk-v2.md.Message size limit: one inbound JSON-RPC message (one stdin line) may be at most 10 MiB, the MCP SDK's stdio limit (
tests/transport-lifecycle.test.ts). A longer line closes the transport: the server logsmcp transport erroron stderr and exits with code 1. Keep large arguments (for exampleuser_data) well below that size. Outbound, a tool result is cut atMAX_OUTPUT_BYTES(at most 8 MiB,tests/output-cap.test.ts) and then ends with an[output truncated by MAX_OUTPUT_BYTES=...]marker.
MCP Connector Setup (Claude Desktop / Claude Code)
Append to your client's MCP config (~/Library/Application Support/Claude/claude_desktop_config.json for Claude Desktop, or the equivalent in Claude Code).
Variant A: installed via npm
{
"mcpServers": {
"hetzner-cloud": {
"command": "hetzner-cloud-mcp",
"env": {
"HETZNER_API_TOKEN": "...",
"HETZNER_CONFIRM_WRITES": "false",
"LOG_LEVEL": "warn"
}
}
}
}Variant B: from a git checkout
{
"mcpServers": {
"hetzner-cloud": {
"command": "node",
"args": ["/absolute/path/to/the-real-hetzner-mcp/dist/index.js"],
"env": {
"HETZNER_API_TOKEN": "...",
"HETZNER_CONFIRM_WRITES": "false",
"LOG_LEVEL": "warn"
}
}
}
}Variant C: with npx
{
"mcpServers": {
"hetzner-cloud": {
"command": "npx",
"args": ["-y", "@mguttmann/hetzner-cloud-mcp@>=0.2.0"],
"env": {
"HETZNER_API_TOKEN": "...",
"HETZNER_CONFIRM_WRITES": "false",
"LOG_LEVEL": "warn"
}
}
}
}Restart the client to pick up the change. tools/list should expose the tools pinned in tests/snapshots/tools-contract.json, all named hcloud_*.
Tools: overview
Hand-tuned Wrappers
Tool | What it does |
| Server list with |
| Fetch a server by |
| poweron / poweroff / reboot / shutdown / reset in a single tool. |
| Rebuild a server, |
|
|
| Toggle automatic backups. |
| Toggle rescue mode, default |
| Change server type, default |
| Server metrics, |
| Apply a firewall to a server, by-id OR by-name. |
| Arbitrary request against the API. Query parameters go in |
| Poll an action until success/error or timeout. |
Generated Tools
One tool per OpenAPI operation, naming scheme hcloud_<verb>_<resource> or hcloud_<resource>_<action>_action. On name collision with a wrapper the generated tool gets the suffix _raw (hcloud_list_servers_raw, hcloud_get_server_raw, hcloud_get_server_metrics_raw).
Run tools/list in the Inspector to see the full list.
Input Validation
Arguments are checked against the tool's declared inputSchema before the
handler runs. The low-level MCP SDK server validates only the shape of the
tools/call request, so this check is what makes the advertised schema binding.
A violation returns an isError result naming the offending property; the
handler is not invoked and no request reaches the Hetzner API.
What is enforced:
Resource ids must be JSON integers >= 1. String-encoded numbers such as
"42"are rejected rather than coerced. Path parameters that the API declares as strings (id_or_name,rr_name,rr_type) stay strings, but a string used in the path has to name a single segment, see below.Top-level types,
enum,minimum/maximum,minLength/maxLengthand flat array elements (element type,items.enum,items.minimum/maximum), plusrequired. For a parameter declared as an array of scalars a bare scalar is also accepted and checked against the element schema: for a repeatable query parameter such assortorstatusit serialises to exactly the same single parameter, so rejecting it would break a call that has always worked. The one array-typed parameter that goes into a request body,hcloud_server_rescue.ssh_keys, normalises the scalar into a one-element array, so the value a caller sends is always used or refused, never silently dropped. Per-element messages for a bad array are capped at the first 10 plus a count (tests/validate-input.test.ts), so a large input cannot be amplified into the result or the log.Unknown top-level properties, for the tools whose schema declares
additionalProperties: false(all wrappers and all generated tools). The out-of-band keysconfirm,waitandauto_paginateare always tolerated, so sendingconfirmwhileHETZNER_CONFIRM_WRITESis disabled, orwait/auto_paginateto a tool that does not declare them, is not an error; those keys are dropped before the request is built.A path parameter must name exactly one path segment. For the parameters the API declares as strings (
id_or_name,rr_name) the value is rejected if it is empty, is.or.., contains/or\, or contains a percent-encoded separator or dot (%2f,%5c,%2ein any casing). Reason: percent-encoding keeps such a value inside one segment only as far as the local URL parser is concerned. The actor that resolves the path is the origin, which decodes encoded separators and resolves dot segments before routing, so without this check a crafted value could address a different resource than the tool's own. Legitimate values are untouched: IDN zone names (raw or punycode), a trailing dot,@,*,*.sub,_dmarcand the like all pass and are percent-encoded as before.Path segments are percent-encoded at every interpolation site, and the HTTP client refuses any path that URL normalisation would change. Rejected:
?and#(which truncate the path into query/fragment),\(a path separator to the URL parser), characters outside RFC 3986pcharsuch as control characters (which the parser strips, so they could otherwise form a dot segment), empty segments, and./..segments in every spelling, including the percent-encoded ones. The assembled URL is then compared against the intended target: its origin must be the configured one and its path must equal the base path plus the requested path exactly, so any remaining normalisation aborts the request instead of redirecting it. This client-side check only sees what the local URL parser would rewrite, so it is the last line of defence, not the whole guarantee: the per-parameter rule above is what covers what the origin would rewrite.Rejected input produces no HTTP request at all, not a sanitised one.
What is deliberately not enforced: the contents of a request body. Those
trees are the Hetzner Cloud API's own contract: it validates them and its 400
responses are surfaced to the caller unchanged. format, pattern and
nullable are not evaluated either.
Validation failures are logged with the offending property name and the type
of the offending value; the value itself is only quoted back to the caller, so a
malformed body carrying a private key or password does not end up in the log.
Note on hcloud_raw_request: it remains a deliberate escape hatch that accepts
any path by design, so it is not constrained to a resource whitelist. It is
pinned to the configured API base URL (origin and path prefix), but a caller
granted this tool can reach any endpoint of the Hetzner Cloud API. Like every
other tool it rejects a percent-encoded separator or dot (%2F, %5C, %2E in
any casing) in its path, because the origin, not the local URL parser, decides
what an encoded separator means. Grant hcloud_raw_request accordingly.
Spec Updates
When Hetzner updates the OpenAPI:
npm run refresh-spec # re-downloads specs/cloud.spec.json
# update the fetch date and the SHA-256 in specs/SOURCE.md
npm run generate # rebuilds src/tools/generated/operations.ts
npm test # codegen and contract snapshots show the diff
npm run refresh-snapshot # rewrite the snapshots deliberately (after review)
git add specs/cloud.spec.json specs/SOURCE.md src/tools/generated/operations.ts tests/snapshots/tool-registry.json tests/snapshots/tools-contract.json
git commit -m "chore(spec): refresh from Hetzner"A refresh changes tool input schemas and can add tools, which MCP clients and gateways see as
a contract change. List it under "Behaviour changes" in CHANGELOG.md. If the new spec makes a
body field of an existing tool required, keep the old list in PINNED_BODY_REQUIRED in
scripts/generate.ts, so the tool contract does not tighten; the API still rejects a call that
lacks the field. A new tool changes the tool count and name hash of the gateway baseline,
which live in one file, tests/gateway-baseline.json, read by tests/tools-contract.test.ts
and by the CI and release smoke.
Development
Tool contract snapshot
tests/tools-contract.test.ts builds the registry exactly as the stdio server does
(src/build-registry.ts) and compares every tool against tests/snapshots/tools-contract.json:
name, inputSchema.required, a sha256 of the canonical (key-sorted) JSON of inputSchema
(with and without HETZNER_CONFIRM_WRITES=true), a sha256 of the description, and the
annotations. It also pins the tool count and the sha256 of the sorted tool names to the
gateway baseline; those two values live in tests/gateway-baseline.json and are not rewritten by
any script.
npm run refresh-snapshot regenerates both tests/snapshots/tool-registry.json and
tests/snapshots/tools-contract.json. Run it only for a deliberate contract change and review
the diff: a changed required, schema or description hash changes what MCP clients see.
Stdio smoke test
npm run smoke spawns dist/index.js (run npm run build first), sends initialize,
notifications/initialized and tools/list over stdio, and prints the negotiated protocol
version, serverInfo, the tool count and the sha256 of the sorted tool names as JSON. It needs
no network:
HETZNER_API_TOKEN=dummy HETZNER_API_BASE=http://127.0.0.1:1 npm run smoke -- \
--min-tools <n> --expect-names-sha256 <sha256>
# or with an env file, passed to node as --env-file:
npm run smoke -- --env-file ./smoke.envOptions: --protocol-version <v>, --min-tools <n>, --expect-names-sha256 <hex>,
--baseline <file> (sets both from a JSON file with toolCount and namesSha256),
--server <path> (default dist/index.js) and --timeout-ms <ms>; the defaults are at the top
of scripts/smoke-stdio.mjs. Exit code 0 means all checks passed, 1 a check failed, 2 the
server did not start or answer. CI runs it with --baseline tests/gateway-baseline.json, the file
tests/tools-contract.test.ts also reads.
Manual Verification Recipe
Run before declaring a release ready:
npm run inspectoropens the MCP Inspector with this server.tools/list: verify the count equalstoolCountintests/snapshots/tools-contract.jsonand that every wrapper in the table above appears.hcloud_list_servers(no args): verify against at least one known server in your account.hcloud_get_serverwithname: "<one of your server names>": should return id, type, ip.hcloud_create_ssh_keywith{ name: "mcp-smoke", public_key: "<your test key>" }: note the returned id.hcloud_delete_ssh_keywith that id: confirm clean removal.
Do not run power/rebuild/snapshot operations against production servers as part of a smoke test.
Security
See SECURITY.md for supported versions, how to report a vulnerability privately and the threat model (token authority, the confirm guard, grants by tool name).
License
MIT, see LICENSE, except the vendored Hetzner Cloud API specification
(specs/cloud.spec.json), which is Hetzner's; see NOTICE and
specs/SOURCE.md.
Available Tools
202 toolshcloud_apply_firewall_to_serverBDestructive
Apply a firewall (by id or by name) to a server. Hand-tuned wrapper around POST /firewalls/{id}/actions/apply_to_resources.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | ||
| firewall_id | No | ||
| firewall_name | No |
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 that it hits POST /firewalls/{id}/actions/apply_to_resources and that the firewall may be selected by id or name, but it never says what the mutation actually does to existing firewall assignment on the server (replace vs. append) or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, and the core action is front-loaded before the implementation note. Nothing here 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 3-parameter mutation with no output schema and a sibling that overlaps almost entirely, the description is thin: it omits replacement semantics, the id/name mutual-exclusivity rule, and why to pick this over hcloud_firewall_apply_to_resources_action. The endpoint reference is useful but is implementation trivia rather than agent-facing 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 0%, so the description must compensate, and it partially does by clarifying the id-vs-name selector for the firewall. It does not clarify that server_id and the firewall selector are separate concerns, nor whether firewall_id and firewall_name are mutually exclusive or which wins if both are supplied.
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 ("Apply a firewall ... to a server") and even names the underlying API endpoint. It does not differentiate from the sibling hcloud_firewall_apply_to_resources_action, which performs the same POST against arbitrary resources, so an agent has to infer the scoping difference.
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, no exclusions. The presence of hcloud_firewall_apply_to_resources_action (a near-identical sibling) makes the missing routing guidance a real gap — nothing says to prefer this one when targeting a single server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_certificate_retry_actionA
Retry Issuance or Renewal
Retry a failed Certificate issuance or renewal.
Only applicable if the type of the Certificate is managed and the issuance or renewal status is failed.
Operation specific errors
Status | Code | Description |
| CAA record does not allow certificate authority | |
| Certificate Authority: DNS validation failed | |
| Certificate Authority: Too many authorizations failed recently | |
| Certificate Authority: Too many certificates issued for registered domain | |
| Certificate Authority: Too many duplicate certificates | |
| Could not verify domain delegated to zone | |
| DNS zone not found | |
| DNS zone is a secondary zone |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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 safety profile is covered. The description adds meaningful context beyond that: the state preconditions and a table of operation-specific errors (e.g. `dns_zone_not_found`, `caa_record_does_not_allow_ca`) that tell the agent what failure outcomes mean. It does not describe whether a successful retry mutates the certificate's status or how the action is queued, which keeps it from 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?
Purpose and preconditions are front-loaded in the first two sentences, which is ideal. The error table adds bulk, but it is structured and directly relevant to diagnosing retry failures 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 mutation tool with no output schema and fully covered parameters, the description supplies the key operational constraint (managed + failed) and the known error surface. What's missing is minor: no statement of required permissions or what the returned action represents, but nothing critical for correct invocation 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%, so both `id` and `wait` are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the 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 ('Retry') and resource ('Certificate issuance or renewal') with the exact scope of the operation. An agent can distinguish this from sibling tools like hcloud_get_certificate_action or hcloud_update_certificate 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?
Provides explicit preconditions: only applicable when the Certificate type is `managed` and the issuance/renewal status is `failed`. This is a clear when-to-use gate that prevents misuse, even though it doesn't name an alternative sibling for the non-failed case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_certificateA
Create a Certificate
Creates a new Certificate.
The default type uploaded allows for uploading your existing certificate and private_key in PEM format. You have to monitor its expiration date and handle renewal yourself.
In contrast, type managed requests a new Certificate from Let's Encrypt for the specified domain_names. Only domains managed by Hetzner DNS are supported. We handle renewal and timely alert the project owner via email if problems occur.
For type managed Certificates the action key of the response contains the Action that allows for tracking the issuance process. For type uploaded Certificates the action is always null.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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), so the description's job is added context — and it delivers: managed certs are renewed automatically with email alerts, issuance is asynchronous and trackable via the response `action`, and `action` is always null for uploaded. It does not discuss failure modes or what happens if issuance fails, which keeps it short of 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?
Front-loaded with the core action, then mode-specific detail in a logical order. Slight waste in the duplicated 'Create a Certificate / Creates a new Certificate' opener, but the remaining sentences each carry real 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?
No output schema exists, and the description compensates by explaining the shape of the response's `action` field for both modes. Combined with mode requirements and renewal semantics, an agent has everything needed to construct a valid call and interpret the result.
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?
Goes beyond the schema's per-field 'Required for type X' notes by explaining the trade-off between the two types and the consequences of each (PEM upload + self-managed renewal vs Let's Encrypt issuance restricted to Hetzner DNS domains). It adds little for `name`, `labels`, and `wait`, 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?
States a specific verb and resource ('Create a Certificate') and immediately splits the operation into its two distinct modes, uploaded vs managed, so an agent understands not just what it creates but which variant it is creating. The resource name cleanly separates it from the many get_/list_/update_/delete_ certificate 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?
Explicitly contrasts the two modes and the conditions selecting each: uploaded requires you to monitor expiration and renew yourself, managed requires domains hosted on Hetzner DNS. That is strong when-to-use guidance for the mode decision, though it gives no guidance on when to call this versus hcloud_update_certificate or hcloud_certificate_retry_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_firewallC
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
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 profile is covered. The description adds genuine value beyond that with a table of operation-specific 422 errors (server_already_added, incompatible_network_type, firewall_resource_not_found), which tells an agent what failure modes to expect. It still omits what the call returns, whether the firewall is created unattached, and any auth/permission 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?
The error table is compact and useful, but the opening two lines ('Create a Firewall' followed by 'Create a Firewall') are pure duplication with no informational payload. The useful content (error codes) is not 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 create tool with a deeply nested body and no output schema, the description should at minimum say what is created and returned and how the firewall is attached. It covers failure modes well but leaves the success path and the apply_to attachment behavior entirely 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?
Top-level schema description coverage is 0% — the single 'body' parameter has no description — and the description does not compensate by explaining the request body at all (name uniqueness, rules limits, apply_to semantics). The nested properties are well documented in the schema itself, but the description contributes nothing about 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?
The description states a specific verb and resource ('Create a Firewall'), which is unambiguous against the many get/list/update siblings. However, the first two lines merely restate the tool name and title, and there is no explicit differentiation from related creation tools (hcloud_create_network, hcloud_create_server) or from hcloud_firewall_set_rules_action.
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 hcloud_apply_firewall_to_server or hcloud_firewall_apply_to_resources_action, and no prerequisites are mentioned. Usage is only implied by the verb 'Create'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_floating_ipB
Create a Floating IP
Create a Floating IP.
Provide the server attribute to assign the Floating IP to that server or provide a home_location to locate the Floating IP at. Note that the Floating IP can be assigned to a Server in any Location later on. For optimal routing it is advised to use the Floating IP in the same Location it was created in.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write behavior (readOnlyHint=false), non-destructiveness, and open-world scope. The description adds lifecycle context: assignment can happen later and routing is optimized in the home location. It omits cost, quota, idempotency, and failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the opening 'Create a Floating IP' is repeated as 'Create a [Floating IP]' and the many long markdown links make it noisier than needed. The substantive guidance is still reasonably 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 creation tool with a nested body and no output schema, the description covers the core assignment model but leaves out the required `type` choice and wait behavior. Annotations cover safety, but an agent still needs the schema for key creation decisions.
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 description adds meaning for `server` and `home_location`, including later assignment and routing implications. It never mentions the required `type` enum or `wait`, so it only partially compensates for the 50% schema description 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 'Create a Floating IP' with a specific verb and resource, so the operation is immediately identifiable. It does not explicitly distinguish itself from siblings such as hcloud_create_primary_ip or hcloud_update_floating_ip.
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?
Explains conditional use of `server` versus `home_location` and notes that later assignment is possible, which gives some contextual guidance. It does not state when to choose floating IP creation over alternatives like primary IP creation, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_load_balancerC
Create a Load Balancer
Creates a Load Balancer.
Operation specific errors
Status | Code | Description |
|
| The source port you are trying to add is already in use |
|
| The specified Primary IP has the wrong IP version |
|
| The IP is not owned by the owner of the project of the Load Balancer |
|
| The Load Balancer is not attached to a network |
|
| The server you are trying to add as a target is not attached to the same network as the Load Balancer |
|
| The server that you are trying to add as a public target does not have a public IPv4 address |
|
| The Load Balancer target you are trying to define is already defined |
|
| The specified Primary IP is already assigned to a resource |
|
| The specified Primary IP is blocked |
|
| The specified Primary IP is bound to a different Location than the Load Balancer |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 operation. The description adds useful operation-specific errors, but it does not explain creation behavior, idempotency, required permissions, or what the 'wait' parameter actually changes beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two lines are redundant ('Create a Load Balancer' / 'Creates a Load Balancer'), wasting the only prose sentence on a restatement. The bulk of the description is an error table with no front-loaded explanation of what the tool does or how to call it correctly.
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 complex creation tool with nested targets, services, and health checks, the description provides only API error codes. It omits prerequisites, core creation semantics, how the wait parameter behaves, and any integration guidance with sibling tools like hcloud_load_balancer_add_target_action or hcloud_load_balancer_add_service_action.
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 input schema is deeply documented for nested properties, with descriptions for fields like name, labels, network, targets, services, algorithm, and public_net. The description itself contributes no parameter meaning beyond the schema. At 50% schema description coverage, the schema still carries most of the semantic load, so a 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 is essentially a tautology: 'Create a Load Balancer' followed by 'Creates a Load Balancer.' It restates the tool name and title without adding scope, distinguishing it from siblings like hcloud_list_load_balancers or hcloud_update_load_balancer, or clarifying what a load balancer creation entails.
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 prerequisites (e.g., required permissions, network/location constraints), and no exclusions. The operation-specific error table is not usage guidance; it only lists API failure cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_networkA
Create a Network
Creates a Network.
The provided ip_range can only be extended later on, but not reduced.
Subnets can be added now or later on using the add subnet action. If you do not specify an ip_range for the subnet the first available /24 range will be used.
Routes can be added now or later by using the add route action.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description's job is to add context — and it does: it discloses the key lifecycle constraint that `ip_range` can only be extended later, never reduced, which is a genuine irreversibility trait an agent should know before calling. It stops short of covering auth/permission needs or that creation is asynchronous and returns an 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?
Four short paragraphs, front-loaded with the verb+resource, followed by the constraints that matter most at call time and cross-links to the follow-up actions. No filler, and each sentence carries a distinct constraint or pointer.
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-`body` create tool with no output schema, the description covers the immutability of `ip_range` and the subnet default, which are the highest-value gaps. It does not mention that the call is asynchronous / returns an action to poll (relevant given hcloud_wait_action exists in the sibling set), nor any permission requirements, leaving the agent to infer the post-create workflow.
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?
Top-level schema description coverage is reported at 0% (the `body` wrapper is undescribed), but the nested properties are richly documented in the schema itself. The description adds real semantics on top: the extend-only rule for `ip_range`, and the default that an unspecified subnet `ip_range` gets the first available /24 — the latter is not present in the schema. It leaves name, labels, routes objects, vswitch_id and expose_routes_to_vswitch entirely to the schema, so a 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 ("Create a Network"), so an agent can immediately distinguish it from hcloud_get_network, hcloud_update_network, hcloud_list_networks and hcloud_delete_network by name alone. The opening line is somewhat redundant ("Create a Network" followed by "Creates a [Network]"), and there is no explicit sibling routing, which keeps it below 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?
Usage is implied through the references to the add-subnet and add-route actions, telling the agent this is the creation entry point and later modifications go elsewhere. However, it never says when to prefer this over alternatives, nor states prerequisites or what happens on conflicts (e.g., duplicate names / overlapping ranges).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_placement_groupC
Create a PlacementGroup
Creates a new Placement Group.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, and the description adds no behavioral context beyond them — no note about quota limits, what action is polled by the `wait` flag, or what is returned. There is no contradiction with annotations, but the description contributes nothing extra.
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 short and front-loaded, but the second line merely restates the first, so one of the two sentences does not earn its place. Brevity here comes at the cost of substance rather than from efficiency.
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/mutation tool with a nested request body, no output schema, and only 50% parameter coverage, the description omits what happens on success, whether the call is synchronous or action-based, and any resource semantics. Annotations cover the safety profile, but the definition is not complete enough for confident 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 description coverage is only 50%: the nested body fields are documented in the schema, but the description adds zero meaning to any parameter — including the `wait` flag's polling semantics and the enum-restricted `type`. For a mutation tool with partial coverage, the description should compensate and does not.
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 concrete verb and resource ("Creates a new Placement Group"), which distinguishes it from the delete/get/list/update placement-group siblings. However, the two lines are essentially the tool title repeated and never say what a Placement Group is or what it does (e.g., spreads servers to avoid co-location), leaving the resource itself unexplained.
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 create a placement group versus other resources, no prerequisites (project/permission context), and no mention that only the "spread" type is currently supported. The agent is told nothing about the conditions under which this tool is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_primary_ipA
Create a Primary IP
Create a new Primary IP.
Can optionally be assigned to a resource by providing an assignee_id and assignee_type.
If not assigned to a resource the location key needs to be provided. This can be either the ID or the name of the Location this Primary IP shall be created in.
A Primary IP can only be assigned to resource in the same Location later on.
Operation specific errors
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only declare non-destructive, open-world mutation) the description discloses operation-specific failure modes — server_not_stopped, server_has_ipv4, server_has_ipv6 — and the same-Location assignment constraint, which an agent could not infer from structured fields. It doesn't cover return shape or the wait/polling behavior, 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?
The core content is front-loaded and the error table is genuinely useful, but the prose is bloated by repeated '[Primary IP](#tag/primary-ips)' link markup that adds no information for an agent. Several sentences restate the same location-required rule already present in the schema.
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 create with a nested request body, no output schema, and two top-level params, the description covers the creation rules, assignment prerequisites, and error conditions an agent needs. Missing only return-value expectation and the meaning of the `wait` polling flag.
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 50%, and the description mostly restates what the schema already says about `location` and `assignee_id`/`assignee_type` (ID-or-name, omit when unassigned). It adds no new semantics for `name`, `labels`, `auto_delete`, or the `wait` flag, so it only partially compensates for the coverage gap.
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 new Primary IP') and immediately qualifies the creation semantics (assigned vs unassigned). It is distinguishable from the many other create_* siblings, though it never explicitly contrasts with hcloud_create_floating_ip, the closest alternative.
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 conditional guidance: an IP can be assigned via assignee_id/assignee_type, otherwise `location` is required, and a later assignment is restricted to the same Location. It omits explicit when-not-to-use/alternative routing (e.g. floating IP), so it falls 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.
hcloud_create_serverB
Create a Server
Creates a new Server. Returns preliminary information about the Server as well as an Action that covers progress of creation.
Operation specific errors
Status | Code | Description |
|
| The specified Primary IP has the wrong IP Version |
|
| An error during the placement occurred |
|
| The specified Primary IP is already assigned to a server |
|
| The specified Primary IP is in a different location |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, open-world mutation, and the description adds real value beyond that: it states the return shape (preliminary Server info plus an Action object tracking creation progress) and enumerates operation-specific error codes such as primary_ip_version_mismatch (412) and placement_error (422). It does not explain the async action lifecycle in detail or what happens on partial failure, which keeps it below 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?
The core sentence is front-loaded and the error table is compact, high-signal content rather than prose padding. The redundant 'Create a Server' heading restates the tool name, a minor waste, but overall the definition is tight.
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 a deep nested body (20+ properties), no output schema, and high open-world impact, the description covers return shape and error modes but omits prerequisites, whether creation is billed or irreversible, and how the returned Action should be polled (the wait flag is only documented in the schema). This leaves meaningful gaps for an agent composing a correct 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 reported at 50%, and the description adds no parameter-level information at all — it never explains the top-level body/wait split or the meaning of the wait flag. However, the nested body properties are individually well documented in the schema (name RFC 1123 constraint, user_data 32KiB limit, IP enable flags), so the effective gap is modest; a 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 opens with a specific verb and resource ('Creates a new Server') and the input schema's required fields (name, server_type, image) confirm the scope. It is clearly distinguishable from sibling create tools such as hcloud_create_volume or hcloud_create_load_balancer, 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?
There is no guidance on when to use this tool versus alternatives, no stated prerequisites (e.g. that the referenced Image, Server Type, Location, or Networks must already exist), and no mention of permissions or quota implications. The only context is the error table, which explains failures rather than when to call the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_ssh_keyB
Create an SSH key
Creates a new SSH key with the given name and public_key. Once an SSH key is created, it can be used in other calls such as creating Servers.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
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 the useful lifecycle note that the key becomes reusable by other calls, but says nothing about name uniqueness/conflict behavior, whether labels are persisted, or what the mutation returns.
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; the restated title line is mild redundancy but nothing is padded. It earns most of its space.
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 no annotations gaps to fill, so the description should explain the mutation's outcome and payload shape. It covers the lifecycle but omits response contents, label handling and duplicate-name behavior for a nested-object 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 reported as 0%, and the payload is a nested 'body' wrapper, so the description must carry the load. It names only 'name' and 'public_key', adds no format expectations for the public key (e.g. ssh-rsa/ed25519 prefixes) and ignores the 'labels' field entirely.
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 SSH key') and names the two required fields. It is distinguishable from hcloud_delete_ssh_key and hcloud_update_ssh_key by the verb, but it never explicitly references siblings or scope (project-wide vs. per-key uniqueness).
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 sentence 'Once an SSH key is created, it can be used in other calls such as creating Servers' gives downstream context and implies when to call it. There is no explicit when-not guidance, no prerequisites, and no mention of how this differs from hcloud_list_ssh_keys or hcloud_get_ssh_key.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_volumeA
Create a Volume
Creates a new Volume attached to a Server. If you want to create a Volume that is not attached to a Server, you need to provide the location key instead of server. This can be either the ID or the name of the Location this Volume will be created in. Note that a Volume can be attached to a Server only in the same Location as the Volume itself.
Specifying the Server during Volume creation will automatically attach the Volume to that Server after it has been initialized. In that case, the next_actions key in the response is an array which contains a single attach_volume action.
The minimum Volume size is 10GB and the maximum size is 10TB (10240GB).
A volume’s name can consist of alphanumeric characters, dashes, underscores, and dots, but has to start and end with an alphanumeric character. The total length is limited to 64 characters. Volume names must be unique per Project.
Operation specific errors
Status | Code | Description |
|
| There is no volume space left in the given location |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (destructiveHint=false, openWorldHint=true), and the description adds real behavioral context beyond that: automatic attachment after initialization, the `next_actions` array containing a single `attach_volume` action, and the 422 `no_space_left_in_location` error. It omits the meaning of the `wait` polling parameter and whether creation is idempotent, keeping it short of 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?
Content is front-loaded with the core create-and-attach behavior, then constraints, then an error table; nearly every sentence carries information. Slightly verbose in the naming-rules paragraph, but 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 creation tool with no output schema, the description covers the attach semantics, the response's `next_actions` hint, size/name constraints, and a documented error case. The gaps are the polling semantics of `wait` and post-creation state, but nothing critical for a correct 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 coverage is 50%, and the description adds genuine value for `server` vs `location` (mutually substitutable, same-Location constraint) and for `size`/`name` (range, charset, uniqueness per Project). However, `format`, `automount`, and `labels` are left entirely to the schema, so it only partially compensates for the coverage gap.
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?
Specific verb + resource (create a Volume) with the key nuance that the Volume can be created attached to a Server or standalone in a Location. This implicitly distinguishes it from sibling hcloud_volume_attach_action, which attaches an already-existing Volume, 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?
Explicitly states the condition that selects each mode: provide `server` to create-and-attach, or `location` instead for a detached Volume, plus the constraint that the Volume must be in the same Location as the Server. It gives hard limits (10GB–10TB) and naming rules, but does not route the agent to alternatives such as volume_attach_action or volume_resize_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_create_zoneB
Create a Zone
Creates a Zone.
A default SOA and three NS resource records with the assigned Hetzner
nameservers are created automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 useful behavior beyond them: the automatic creation of an SOA record and three NS records with Hetzner nameservers. It does not mention whether the call is idempotent, what happens on name collisions, or what the wait parameter's polling does, but the auto-provisioning disclosure is real added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, front-loaded with the operation and followed by the most important side effect. The one inefficiency is the duplicated opening ("Create a Zone" then "Creates a [Zone]"), which wastes a line without adding 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 creation tool with no output schema and rich nested input, the description covers what is created but not what is returned, nor the primary/secondary mode split that governs most optional parameters. Adequate to call the tool, but incomplete on the behavior an agent would want to confirm success.
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 schema description coverage at 50%, the nested schema still documents body fields (ttl, mode, name, labels, rrsets, zonefile, primary_nameservers) and wait thoroughly, so the baseline of 3 applies. The description adds nothing about the mode-dependent mutual exclusivity of rrsets/zonefile versus primary_nameservers, nor about wait, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a Zone") plus a concrete side effect (default SOA and three NS records created automatically), so an agent knows exactly what the call produces. However, the first two lines are near-tautological ("Create a Zone" / "Creates a Zone") and it never differentiates itself from siblings such as hcloud_import_zonefile_action or hcloud_update_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?
No statement of when to use this versus alternatives, no prerequisites (e.g., that mode must be chosen and that rrsets/zonefile only apply to primary zones), and no mention of when not to use it. The agent must infer all routing decisions from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_certificateCDestructive
Delete a Certificate
Deletes a Certificate.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. |
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. However, the description adds zero behavioral context — no note on irreversibility, dependent resources, confirmation requirements, or what happens to certificates in use. It merely repeats the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two near-identical fragments ('Delete a Certificate' / 'Deletes a Certificate'), wasting the only sentence available on duplication rather than useful content. It is short but not 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?
For a destructive one-parameter mutation with no output schema, the description should at minimum say what deletion entails and any failure/constraint conditions. With no annotations gap to compensate for on safety, the absence of any such detail leaves the definition 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?
Only one parameter (id) exists and schema description coverage is 100%, with the schema itself stating 'ID of the Certificate.' Baseline 3 applies since the schema fully documents the input and the description need not elaborate.
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 text is a near-tautology: 'Delete a Certificate' restated as 'Deletes a Certificate.' While the verb and resource are identifiable, the description adds nothing beyond the tool name and does not differentiate from the many sibling delete tools (hcloud_delete_firewall, hcloud_delete_zone, etc.) or say what distinguishes deleting a certificate.
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, when-not-to-use, or alternative guidance is given. It does not mention prerequisites (e.g., certificate must not be attached to a load balancer) or point to hcloud_list_certificates for discovering IDs, so the agent gets no routing help beyond the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_firewallADestructive
Delete a Firewall
Deletes the Firewall.
Operation specific errors
Status | Code | Description |
|
| Firewall still applied to a resource |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. |
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 by documenting the one operation-specific failure mode: a 422 when the firewall is still applied to a resource, which tells the agent it may need a detach step first. It does not state whether deletion is immediate/permanent or how the async action is polled.
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 first line states the action, then the error table. Some text is redundant ('Delete a Firewall' / 'Deletes the Firewall') and the anchor-link markup is noise, but overall it is tight and well ordered.
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 destructive delete with full annotation coverage and no output schema, the definition supplies the essential extra context (the resource_in_use failure). Missing only confirmation of irreversibility/async completion, which are minor given the destructiveHint annotation.
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?
Single required parameter with 100% schema description coverage ('ID of the Firewall.'), so the schema already carries the semantics. The description adds nothing about identifier sourcing (e.g., from hcloud_list_firewalls) or what happens with an invalid/missing ID, 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 ('Delete a Firewall', 'Deletes the [Firewall]'), which is unambiguous against the many get_/list_/update_ firewall siblings. It does not explicitly distinguish itself from the nearby hcloud_firewall_remove_from_resources_action, which an agent could plausibly confuse with 'removing' a firewall.
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 'use this when…' sentence and no named alternative, but the 422 resource_in_use error implicitly signals the prerequisite (the firewall must first be detached from all resources via the remove-from-resources action). That is useful implied guidance rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_floating_ipADestructive
Delete a Floating IP
Deletes a Floating IP.
If assigned to a Server the Floating IP will be unassigned automatically until 1 May 2026. After this date, the Floating IP needs to be unassigned before it can be deleted.
Operation specific errors
Status | Code | Description |
|
| Error when IP is still assigned to a Resource. This error will appear as of 1 May 2026. |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and openWorldHint=true, so the description earns credit by adding the temporal unassignment behavior and the exact 422 must_be_unassigned failure condition. That is meaningful behavioral context beyond what the structured 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?
The content is front-loaded and logically ordered, with the critical caveat placed before the error table. However, 'Delete a Floating IP' and 'Deletes a Floating IP' restate each other, and the repeated markdown anchor links add some visual noise.
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 destructive tool with annotations and no output schema, the description covers the main side effect and failure mode sufficiently. An agent has what it needs to call it correctly and interpret the likely error.
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 required id parameter and schema description coverage is 100%, so the schema fully documents it. The description adds no additional parameter syntax or meaning, making 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?
The first line and body both state a specific verb ('Delete') and resource ('Floating IP'), which clearly separates it from the many other delete_* siblings by resource. The only weakness is minor restatement between the title-like first line and the body.
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 the key context for when the call succeeds or fails: an assigned IP is auto-unassigned until 1 May 2026, after which deletion requires unassignment first. It does not explicitly name hcloud_floating_ip_unassign_action as the preferred alternative, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_imageADestructive
Delete an Image
Deletes an Image. Only Images of type snapshot and backup can be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. |
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. The description adds a valuable behavioral constraint about allowed Image types, but it does not mention irreversibility, dependency handling, or what happens on an invalid delete request.
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 very short and front-loaded: it leads with the action and then immediately states the Image-type restriction. No sentence 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 destructive single-parameter delete tool with annotations covering safety, the description is mostly adequate because it states the allowed Image types. However, it omits irreversibility and in-use/dependency behavior, leaving meaningful 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 coverage is 100% and the sole `id` parameter is fully described in the schema. The description adds no parameter-level meaning beyond what is already structured, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: delete an Image. It does not explicitly differentiate itself from siblings like hcloud_update_image or hcloud_list_images, but the delete 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?
It provides a concrete eligibility condition: only Images of type `snapshot` and `backup` can be deleted. It does not name alternatives or elaborate on when not to delete, but the key usage boundary is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_load_balancerCDestructive
Delete a Load Balancer
Deletes a Load Balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered elsewhere. The description adds nothing beyond that: it does not say the deletion is irreversible, what happens to attached targets/services, whether deletion protection blocks it, or that an async action results (relevant given the 'wait' parameter).
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?
Extremely short, but the second sentence is a verbatim restatement of the first and of the tool name, so no sentence earns its place beyond the first 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 destructive two-parameter tool with no output schema, the annotations and schema carry most of the burden, but the description leaves real gaps: irreversibility, the asynchronous action/polling semantics tied to 'wait', and any deletion-protection prerequisite 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 description coverage is 100%, with 'id' and 'wait' fully documented in the schema, so the baseline of 3 applies. The description contributes no additional meaning about the id or the polling behavior of 'wait'.
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 text only restates the tool name twice: 'Delete a Load Balancer' followed by 'Deletes a Load Balancer.' There is no added scope, no mention of what a Load Balancer is here, and no differentiation from the many sibling delete_* tools beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as hcloud_update_load_balancer, detaching targets first, or whether deletion protection must be disabled. The agent must infer all preconditions on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_networkBDestructive
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. |
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 nonetheless adds real behavioral value by stating that attached resources are detached automatically rather than blocking the delete. It stops short of saying whether the delete is irreversible, which resources are considered 'attached', or whether an async action is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but the title line 'Delete a Network' and the body sentence 'Deletes a [Network](...)' are redundant restatements. Only the third sentence carries new information, so one of the three does not earn 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 destructive tool with no output schema, the description covers the core side effect (auto-detachment) but omits irreversibility and the shape of the response — the sibling presence of hcloud_get_network_action suggests deletion may return an asynchronous action, which is never mentioned.
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 single parameter 'id' is fully documented in the schema (100% coverage, with type, range, and example), so the schema carries the load. The description adds no meaning about how to obtain the ID or what happens if the ID is stale/not found, 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?
Clear specific verb+resource: deletes a Network, identified by ID. An agent can distinguish it from hcloud_get_network, hcloud_update_network, and hcloud_create_network by name alone, but the description never explicitly contrasts with the network-scoped siblings (subnet/route deletion actions) or warns against using it when only a subnet should go.
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 / when-not-to-use guidance and no mention of alternatives such as hcloud_network_delete_subnet_action or hcloud_network_delete_route_action for partial cleanup. Usage is only implied by the word 'Delete' and the auto-detach note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_placement_groupCDestructive
Delete a PlacementGroup
Deletes a Placement Group.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Placement Group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is known without the description. The description adds nothing beyond that: it does not say the deletion is irreversible, what happens to member servers, or whether the call fails when the group is still in use. For a destructive mutation, that is a real gap even though the baseline bar is lower.
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 short, but its second sentence is a verbatim restatement of the first, so it does not earn its place. Being under-specified rather than concise is its main problem; it conveys no information beyond the tool name repeated twice.
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 destructive resource-deletion tool with no output schema; the description should therefore cover irreversibility, preconditions, and the effect on dependent resources. None of these topics are addressed, so an agent has to guess about consequences that the structured fields do not capture.
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, id, whose schema description ('ID of the Placement Group.') has 100% coverage and includes type, format, example, and bounds. By the baseline rule, a 3 is appropriate: the schema does all the work, and the description adds no identifier semantics such as whether it is the numeric ID or the name.
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 only restates the tool name: 'Delete a PlacementGroup / Deletes a Placement Group.' The verb and resource are identifiable, but it gives no more information than the name already does. Because the name is prefixed with hcloud_ and followed by the resource, an agent can distinguish this tool from siblings such as hcloud_delete_server or hcloud_delete_network from the name alone; the description adds nothing to that 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 description contains no statement about when to use this tool, when to avoid it, or which alternatives exist. It does not mention that the Placement Group must be empty, that servers assigned to it must first be removed (hcloud_server_remove_from_placement_group_action), or when to use hcloud_list_placement_groups first. No context is given beyond the bare action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_primary_ipADestructive
Delete a Primary IP
Deletes a Primary IP.
The Server must be powered off (status off) in order for this operation to succeed.
If assigned to a Server the Primary IP will be unassigned automatically until 1 May 2026. After this date, the Primary IP needs to be unassigned before it can be deleted.
Operation specific errors
Status | Code | Description |
|
| Error when IP is still assigned to a Resource. This error will appear as of 1 May 2026. |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the destructive/openWorld annotations: the power-off prerequisite, the auto-unassignment grace period until 1 May 2026, and the specific 422 `must_be_unassigned` failure mode. That is exactly the kind of operational consequence an agent needs before invoking a destructive 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?
The core action and the power-off prerequisite are front-loaded in the first two paragraphs, and the error table is genuinely actionable. However, the inline anchor links (#tag/primary-ips, #tag/servers) are noise that adds no information 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 single-parameter destructive delete with no output schema, the description covers the prerequisite, the transition-period behavior, and the specific error to expect. 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 100% and the single `id` parameter is already documented in the schema, so the description adds nothing about parameter meaning. Baseline 3 applies when the schema carries the full burden.
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 Primary IP') with an unambiguous scope, and the body clarifies the precondition that distinguishes it from the assign/unassign siblings. It never explicitly names hcloud_primary_ip_unassign_action as the non-destructive alternative, so sibling differentiation is only implicit.
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 usage context: the Server must be powered off (status `off`) for the operation to succeed, and the automatic unassignment behavior with its 1 May 2026 cutoff. It does not explicitly say when to prefer unassign over delete, which leaves the key decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_serverBDestructive
Delete a Server
Deletes a Server.
This immediately removes the Server from your account, and it is no longer accessible. Any resources attached to the server (like Volumes, Primary IPs, Floating IPs, Firewalls, Placement Groups) are detached while the server is deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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, and the description adds genuinely new context: the deletion is immediate, the server becomes inaccessible, and attached resources (Volumes, Primary IPs, Floating IPs, Firewalls, Placement Groups) are detached as a side effect. That side-effect disclosure is exactly the extra value the description should provide. It falls short of 5 because it does not explain the consequence of detachment (whether IPs are released, whether volumes keep data) or how errors surface.
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 opening two lines are redundant, restating the tool name twice before any real content, which violates front-loading. The remaining sentence is dense and well-structured but carries awkward line breaks that add no meaning.
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, the description covers the essential consequences of invocation. The remaining gap is that it never ties in the 'wait' parameter or explains what happens on failure, though the schema handles the former.
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 'wait' documented inline, including the default and polling semantics of 'wait'. The description adds nothing about either parameter, which is acceptable but not additive under a fully covered 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 names a specific verb and resource (delete a Server) and is unambiguously distinguishable from the many sibling delete_* tools for other resources. However, the header plus the first body line ('Deletes a Server.') is a pure restatement of the name, so the real information only starts in the third sentence.
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 never says when to delete versus when to use an alternative such as hcloud_server_poweroff_action, hcloud_server_rebuild, or other lifecycle tools, nor does it state prerequisites like server protection being disabled first. The only guidance is an implicit permanence warning, which is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_ssh_keyBDestructive
Delete an SSH key
Deletes an SSH key. It cannot be used anymore.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the SSH Key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the danger profile is known. The phrase "It cannot be used anymore" adds a small amount of post-condition context, but the description never says the deletion is irreversible, what happens to servers currently referencing the key, or what errors can occur.
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 short and front-loaded, but the second sentence restates the first ("Delete" / "Deletes") and the only new information is the trailing consequence clause. Wasted duplication in a four-word description is a real cost.
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-parameter operation, annotations and the schema cover safety and input, so the description is minimally sufficient. It still omits the operational consequences an agent would want before calling a delete: irreversibility, in-use constraints, and error conditions.
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 coverage is 100%, with the schema already documenting `id` as "ID of the SSH Key" plus type and bounds. The description adds nothing about the identifier, which is acceptable given the schema does the work, but it is baseline rather than additive.
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 an SSH key") and the tool name already separates it from create/update/get/list siblings. However, it offers no explicit differentiation text, and the second sentence largely repeats the first rather than sharpening scope.
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 delete versus update, rotate, or detach a key, and no prerequisites such as whether the key must be unused by any server first. The agent must infer all of this from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_volumeADestructive
Delete a Volume
Deletes a volume. All Volume data is irreversibly destroyed. The Volume must not be attached to a Server and it must not have delete protection enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, but the description adds valuable context beyond them: that all data is irreversibly destroyed and the two preconditions that cause failure. It does not describe error behavior when preconditions are unmet, but the added irreversibility and gating conditions are solid.
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 destructiveness. Minor redundancy between the title line 'Delete a Volume' and 'Deletes a volume', but the whole is short and every substantive 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?
For a single-parameter destructive delete with full annotation coverage and no output schema, the description supplies everything needed to call it correctly: the id role is schema-documented, and the preconditions and irreversibility are spelled out.
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) with 100% schema description coverage, so the schema already documents it fully. The description adds no syntax or format detail, which is acceptable given high coverage – 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 Volume') that unambiguously identifies the operation among the many hcloud siblings. An agent can immediately tell this is the volume-deletion 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?
Explicitly states preconditions for use: the volume must not be attached to a Server and must not have delete protection enabled. It does not name alternative tools (e.g. hcloud_volume_detach_action or hcloud_volume_change_protection_action) that would unblock those conditions, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_delete_zoneCDestructive
Delete a Zone
Deletes a Zone.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
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 structurally. The description adds nothing beyond that: it never states that the deletion destroys all records in the zone, whether it is reversible, or how the `wait` polling parameter affects the call's 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?
It is short and front-loaded, but the second sentence is a pure restatement of the first with a link, so not every sentence earns its place. The size is fine; the redundancy is the flaw.
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, open-world mutation with no output schema, the description should warn that all rrsets inside the zone are removed and note any protection/irreversibility concerns. It supplies none of that, leaving the agent dependent entirely on the destructiveHint annotation.
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_or_name` and `wait` are already documented structurally. The description adds no extra meaning (e.g. accepted name formats, or what happens when `wait` is false), 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?
The first sentence names a specific verb and resource ("Delete a Zone"), which is clearly distinguishable from siblings like hcloud_delete_zone_rrset or hcloud_update_zone. The second sentence only restates the same fact with a doc link, so no additional differentiation is offered.
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 alternatives (e.g. hcloud_delete_zone_rrset for individual records) and no prerequisites, such as whether zone protection blocks deletion. 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.
hcloud_delete_zone_rrsetADestructive
Delete an RRSet
Deletes an RRSet from the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
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 covered. The description adds real value beyond them: the primary-mode-only restriction and the specific 422 error code the agent should expect. It does not explain that the delete is permanent/irreversible in prose or what a successful response/action looks like, which keeps it from 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?
The core action and the scope restriction are front-loaded in the first two sentences, with the error table serving a clear purpose. The markdown anchor links (#tag/zone-rrsets, #tag/zones) add minor noise for an agent consumer but do not impede comprehension.
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-parameter destructive zone operation with no output schema, the description supplies the essential gate (primary mode) and the failure signature. Missing pieces are minor: whether deletion is idempotent when the RRSet is absent, and what the 'wait' flag does on a delete (action polling vs. immediate return).
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 detailed rules for rr_name (lowercase, Punycode, '@' for apex) and an enum for rr_type, so the schema does the heavy lifting and baseline is 3. The description adds no parameter-level meaning, notably silent on the 'wait' parameter's polling behavior, which is the one field whose semantics are not fully spelled out.
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 opens with a specific verb and resource ('Delete an RRSet') and immediately scopes it ('from the Zone'). It is clearly distinguishable from hcloud_update_zone_rrset, hcloud_post_zone_rrsets, and the record-manipulation siblings (add/remove/set records), which modify contents rather than remove the RRSet itself.
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 line 'Only applicable for Zones in primary mode' is an explicit precondition that rules out secondary-mode zones, reinforced by the 422 incorrect_zone_mode error row. It does not name an alternative tool (e.g., for secondary zones), so it stops short of full when-to-use routing, but the exclusion criteria are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_firewall_apply_to_resources_actionADestructive
Apply to Resources
Applies a Firewall to multiple resources.
Supported resources:
Servers (with a public network interface)
A Server can be applied to a maximum of 5 Firewalls. This limit applies to Servers applied via a matching Label Selector as well.
Updates to resources matching or no longer matching a Label Selector can take up to a few seconds to be processed.
A Firewall is applied to a resource once the related Action with command apply_firewall successfully finished.
Operation specific errors
Status | Code | Description |
|
| The resource the Firewall should be applied to was not found |
|
| Firewall is already applied to resource |
|
| The network type of the resource is not supported by Firewalls |
|
| The Server the Firewall should be applied to has no public interface |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/openWorldHint annotations: it discloses the 5-firewall-per-server cap (including selector-matched ones), a few-second propagation delay for label-selector changes, and the async completion model (applied only once the apply_firewall Action succeeds). It also lists operation-specific failure codes such as firewall_already_applied and private_net_only_server, which an agent can act on.
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 content is front-loaded and substantive (limits, timing, async, errors), but repeated inline anchor markup such as '[Firewall](#tag/firewalls)' appears a dozen times and dilutes readability. The error table is valuable but makes the block heavier than necessary for a two-parameter call.
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 definition covers the async action model, the resource constraints, and the failure modes an agent must handle. The remaining gap is the absence of any note that removal requires the sibling remove action, or how to verify the applied state afterwards.
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 50%, and the description only reinforces the resource-type side (servers with a public interface, label selectors) plus the 'extends' semantics of apply_to. It adds nothing about the required firewall `id` or the selector string format, so the schema still carries most of the burden.
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: applies a Firewall to multiple resources, and enumerates the supported resource kinds (servers, label selectors). The 'multiple resources' phrasing implicitly separates it from the single-server sibling hcloud_apply_firewall_to_server, but that sibling is never 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?
Supported resource types and the 'Extends existing resources' semantics are given, which implies when the tool is appropriate. However, there is no explicit routing guidance against the obvious alternative (hcloud_apply_firewall_to_server for a single server) or against hcloud_firewall_remove_from_resources_action, so the agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_firewall_remove_from_resources_actionADestructive
Remove from Resources
Removes a Firewall from multiple resources.
Supported resources:
Servers (with a public network interface)
A Firewall is removed from a resource once the related Action with command remove_firewall successfully finished.
Operation specific errors
Status | Code | Description |
|
| The resource the Firewall should be removed from was not found |
|
| Firewall is applied via a Label Selector and cannot be removed manually |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior the annotations do not carry: removal is asynchronous and only complete once the related Action with command `remove_firewall` finishes, plus a table of operation-specific 404/422 errors. Annotations already declare destructiveHint=true and openWorldHint=true, so this additional lifecycle context is genuine added value. It stops short of stating what the call returns (presumably an Action object) or that the action must be polled.
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 core sentence and supported-resource list come first, followed by the async semantics and an error table, which is a sensible front-loaded order. There is minor waste in the redundant H1-style title "Remove from Resources" that merely restates 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?
For a two-parameter nested body with no output schema, the description covers the mutation semantics, valid resource types, and failure modes well. The main remaining gap is the return contract (which Action is produced and how to poll it) and the fact that `label_selector` entries in `remove_from` are effectively unusable.
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 50%, so the description needs to compensate. It does clarify that resources are plural and that only `server`-type entries with a public interface are meaningful, which is useful given the schema enum also allows `label_selector`. However, it never explains the `id` field or the shape of the `remove_from` array, leaving the nested body to 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 ("Removes a [Firewall] from multiple resources") and constrains the target set to Servers with a public network interface. The purpose is unambiguous, but it never references the sibling hcloud_firewall_apply_to_resources_action, so the inverse operation has to be inferred from the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-not conditions: only Servers with a public network interface are supported, and a 422 `firewall_managed_by_label_selector` means the firewall is applied via a label selector and cannot be detached manually. That is real routing guidance, though the description never explicitly points to the apply counter-tool for adding resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_firewall_set_rules_actionADestructive
Set Rules
Set the rules of a Firewall.
Overwrites the existing rules with the given ones. Pass an empty array to remove all rules.
Rules are limited to 50 entries per Firewall and 500 effective rules.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so safety is covered structurally; the description adds the critical nuance that ALL existing rules are replaced and that an empty array wipes the rule set, plus hard limits (50 rules / 500 effective). It does not disclose async/action-return behavior or permission requirements, keeping it short of 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?
Four short sentences, front-loaded with the action itself and immediately followed by the destructive overwrite semantics. The final limits sentence is partially redundant with the `rules` schema description, which is the only 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 destructive, nested-body mutation with no output schema, the description covers replacement semantics and limits but leaves out operational context an agent would want: that this returns an async action, that rules are enforced on attached servers, and that the firewall must already exist. 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 sits at 50%, but the nested `rules` schema is richly self-documented (protocol enums, source_ips vs destination_ips, CIDR notes). The description only adds the empty-array semantics and the count limits, so it is the minimum-viable complement rather than a compensator.
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 rules of a Firewall', with a note on overwrite semantics. An agent can distinguish this from hcloud_update_firewall (metadata edits) by the wording, but no sibling is named explicitly, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says the existing rules are overwritten and that an empty array clears all rules, which is essential usage context, but it never states when to prefer this over hcloud_update_firewall or when it is inappropriate (e.g. firewalls already applied to servers). Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_floating_ip_assign_actionCDestructive
Assign a Floating IP to a Server
Assigns a Floating IP to a Server.
Operation specific errors
Status | Code | Description |
|
| The Floating IP is already assigned |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered. The description usefully adds the specific failure mode ('422 floating_ip_assigned'), but says nothing about the resulting async action, the `wait` polling behavior, or whether reassignment disrupts existing traffic.
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 core action and short overall, but the title is duplicated verbatim as the first sentence and the markdown link/table formatting is carried over from the API reference rather than written for an agent. Every sentence earns its place, though the styling does not.
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, open-world action with no output schema and a nested body, the description omits the async action semantics, the wait/timeout behavior, and the preconditions that make the 422 error occur. Adequate to attempt the call, incomplete for anticipating the result.
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?
At 67% schema coverage the description should compensate, but it adds nothing about `id`, `body.server` or `wait` beyond what the schema already says. The `wait` parameter's default polling behavior, the most consequential knob, is left entirely to the schema text.
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 opening line states a specific verb and resource ('Assign a Floating IP to a Server'), which is unambiguous and clearly the inverse of the sibling hcloud_floating_ip_unassign_action. It doesn't explicitly name or contrast with that sibling, but the operation is clear enough to select 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?
No guidance on when to use this versus hcloud_floating_ip_unassign_action or hcloud_update_floating_ip, and no prerequisites are stated (e.g. the IP must be unassigned, server residency constraints). The only hint is the 422 'floating_ip_assigned' error row, which implies a precondition rather than stating one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_floating_ip_change_dns_ptr_actionCDestructive
Change reverse DNS records for a Floating IP
Change the reverse DNS records for this Floating IP.
Allows to modify the PTR records set for the IP address.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 safety is partly covered. The description adds only a restatement that PTR records are modified and does not explain the destructive effect of resetting/removing records, the asynchronous action model, or how the wait parameter changes 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?
The description is short, but it repeats the same idea three times: changing reverse DNS records for a Floating IP. It is front-loaded but not 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?
For a destructive, open-world action with a nested request body and a wait/polling parameter, the description is too thin. Annotations cover the safety profile, but the description does not help an agent choose this tool over same-purpose sibling DNS-PTR actions or understand the mutation's operational behavior.
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 67% and the description adds no parameter-level meaning beyond the schema. It does not clarify the role of id, the nested body fields ip and dns_ptr, or the effect of wait.
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 a specific verb and resource: changing reverse DNS/PTR records for a Floating IP. It does not distinguish this tool from sibling DNS-change tools such as hcloud_load_balancer_change_dns_ptr_action, hcloud_primary_ip_change_dns_ptr_action, or hcloud_server_change_dns_ptr_action.
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 guidance on when to use this tool versus the closely named sibling change_dns_ptr actions for load balancers, primary IPs, or servers. The resource type is implied by the name, but the description provides no exclusions, prerequisites, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_floating_ip_change_protection_actionCDestructive
Change Floating IP Protection
Changes the protection settings configured for the Floating IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| body | Yes | Protection configuration for the Resource. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, destructive, open-world action. The description adds little beyond that: it does not explain reversibility, permission requirements, or the practical effect of toggling delete protection.
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 short and front-loaded, with no wasted text. Its brevity is appropriate, though the second sentence is largely a restatement of the first.
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 a nested body and no output schema, the description is minimally adequate but leaves out usage context and behavioral details that would help an agent choose it confidently over related 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 the parameters are already well documented in the input schema. The description adds no additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: changing protection settings for a Floating IP. It is clear what the tool does, but it does not distinguish this action from related siblings such as update_floating_ip or other protection-changing actions.
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, prerequisites, or when not to use it. It only states the operation, leaving routing decisions to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_floating_ip_unassign_actionADestructive
Unassign a Floating IP
Unassigns a Floating IP.
Results in the IP being unreachable. Can be assigned to another resource again.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the bar is lower; the description earns credit by stating the concrete consequence ('Results in the IP being unreachable') and that reassignment remains possible. It omits what happens if the IP is not currently assigned and whether it fails or is a no-op.
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?
Short and front-loaded with the action and its effect. There is minor redundancy between the heading 'Unassign a Floating IP' and the body 'Unassigns a Floating IP.'
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 annotations covering destructiveness, the description is largely sufficient but leaves gaps on preconditions (must the IP be assigned?) and on whether an action object is returned for polling via `wait` or hcloud_wait_action.
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 the floating IP id and the `wait` polling flag documented in the schema, so baseline 3 applies. The description adds no further semantics about either parameter.
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 ('Unassign a Floating IP') and its behavior contrasts implicitly with the assign sibling. It does not explicitly name hcloud_floating_ip_assign_action as the counterpart, but the operation 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 rather than stated: the note 'Can be assigned to another resource again' suggests the purpose is to free the IP for reassignment, but there is no explicit when-to-use/when-not guidance, no mention of preconditions, and no named alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_actionCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — notably it never mentions that `wait` defaults to true and will poll until success/error or timeout, which is the one behavior an agent most needs to anticipate (blocking, latency).
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 short and front-loaded, but the second sentence merely repeats the first in passive form, so the only two sentences in a two-line description are redundant. Brevity here reflects lack of content rather than discipline.
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 should say something about the returned Action object (fields, status values) and about the default polling behavior of `wait`. Instead it leaves an agent guessing on both, which is inadequate for a tool whose main behavior is a blocking poll.
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, wait) are documented in the schema, so the baseline of 3 applies. The description mentions no parameter semantics at all — not even that IDs are global action IDs rather than resource-scoped.
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?
"Get an Action / Returns a specific Action object" restates the tool name and title without adding specificity. It gives no way to distinguish this generic action getter from the many sibling getters (hcloud_get_server_action, hcloud_get_load_balancer_action, hcloud_get_certificates_actions_id, hcloud_list_actions) that also return Action objects.
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 hcloud_list_actions or the resource-scoped action getters, and no mention of the relationship to hcloud_wait_action. The agent must infer all routing decisions from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_certificateCRead-only
Get a Certificate
Gets a specific Certificate object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: no mention of error behavior for unknown IDs, permissions, or what fields a Certificate object carries. For a read tool the bar is lower, but this text contributes essentially no new 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?
The text is short and front-loaded with the verb, but the second sentence merely paraphrases the first. It contains no waste in length yet also no information density – concise but under-specified.
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 single-parameter getter with full schema coverage, annotations, and no output schema, so the description needn't explain return values. Still, nothing tells the agent about sibling alternatives or failure modes, leaving the definition only barely sufficient 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 100% and the single id parameter is documented with type, range, and example (42), so the schema does the explanatory work. The description adds no naming or formatting guidance beyond what the schema provides, 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?
"Gets a specific Certificate object" restates the tool name with modest added specificity (single object, not a list). It does not distinguish itself from close siblings such as hcloud_list_certificates, hcloud_get_certificate_action, or hcloud_update_certificate, so the agent must infer the boundary 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?
There is no statement of when to use this tool versus hcloud_list_certificates or hcloud_get_certificate_action, and no prerequisites such as authentication or required ID source. The only implied guidance is the word "specific", which the required id parameter already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_certificate_actionARead-only
Get an Action for a Certificate
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for a Certificate. Only type managed Certificates have Actions.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered; the description adds lifecycle context (deprecation) and a functional restriction (managed-only actions) that annotations do not carry. It does not describe what an Action object contains or how the `wait` polling behaves 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?
Three short, front-loaded blocks: the deprecation warning leads, then the purpose sentence, then the scope caveat. No filler; a reader can stop after the first line if deprecation is disqualifying.
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 should say anything about the returned Action (fields, status values, terminal states) but says nothing. Given the deprecation and managed-only caveats are present, it is adequate but leaves a real gap for a read tool whose return value is undefined.
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, action_id, wait) are already documented in the schema; baseline 3 applies. The description adds only the indirect constraint that `id` must reference a managed Certificate, no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns a specific Action for a Certificate', and adds a meaningful scope constraint that only `managed` Certificates have Actions. It does not distinguish itself from the near-duplicate sibling hcloud_get_certificates_actions_id, leaving the agent to guess 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?
The Deprecated banner with a changelog link is an explicit 'do not use / migrate away' signal, and the managed-only note tells the agent when the call will yield nothing. It stops short of naming the replacement endpoint or sibling tool, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_certificates_actionsCRead-only
List Actions
Returns all Action objects. You can sort the results by using the sort URI parameter, and filter them with the status and id parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only that results can be sorted and filtered, and hints at returning Action objects, but says nothing about pagination defaults, ordering guarantees, or response shape beyond the schema. Adequate but thin given the low bar set by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no waste and the capability statement is front-loaded. It loses a point only because the first line ('List Actions') is redundant with the tool name and conveys no scoping 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 paginated list tool with no output schema, the description must at minimum establish what collection is being listed, and it fails: it claims to return 'all Action objects' when the tool is certificate-scoped. Combined with the absence of any return-format or pagination context, the definition is not sufficient for correct 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 the schema already documents id, status, sort, page, and per_page in detail. The description echoes sort/status/id but omits pagination parameters entirely and adds no syntax or 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?
The description opens with the generic boilerplate 'List Actions / Returns all Action objects' and never mentions certificates, so the resource scope implied by the tool name is absent from the text. With siblings like hcloud_list_actions, hcloud_list_certificate_actions, and hcloud_get_certificates_actions_id in the namespace, an agent cannot tell from the description which one this is or what it is scoped to.
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 says sorting and filtering are possible but gives no when-to-use guidance, no exclusions, and no pointer to the alternative tools that return the same Action objects at different scopes. The agent is left to infer that this is the certificate-scoped variant from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_certificates_actions_idCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond that — it says nothing about what an Action object represents, whether the wait/polling behavior applies, or any error case for a non-existent action 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?
The definition is only two short lines with nothing extraneous, and the operative statement comes first. The second sentence partially restates the first, but the overall brevity is appropriate for a single-resource getter.
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 a large, heavily duplicated sibling set of `*_action` getters, the description should at minimum scope this to certificate actions and point out how it differs from hcloud_get_action and hcloud_get_certificates_actions. It provides no such routing information, leaving the agent to guess from the name 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 description coverage is 100%, with both id ("ID of the Action") and wait ("Poll the resulting action until success/error or timeout") documented in the schema itself. The description adds no syntax or format detail beyond that, 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 verb and resource ("Get an Action", "Returns a specific Action object"), so the basic operation is understandable. However, it does not distinguish this certificate-scoped lookup from the many near-identical siblings such as hcloud_get_action, hcloud_get_certificate_action, and hcloud_get_certificates_actions; the adjective 'certificates' in the tool name is never reflected in the text.
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 the alternatives in the toolset — nothing tells an agent to pick this over hcloud_get_action or the list-style hcloud_get_certificates_actions. Usage is only inferable from the tool name and the required id parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_datacenterARead-only
Get a Data Center
Deprecated: This endpoint is deprecated as of 01 June 2026 and will be removed after 01 October 2026.
Returns a single Data Center.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Data Center. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context with the deprecation timeline and removal date, which affects whether an agent should rely on this tool at all.
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 deprecation warning, then the one-line purpose. Minimal waste, though 'Returns a single [Data Center](#tag/data-centers)' is thin and the anchor link 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 single-resource read with full annotation coverage and a fully documented schema, this is close to sufficient. With no output schema, though, the description does not sketch the return shape beyond 'a Data Center', leaving the agent to guess at fields like location or server types.
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 'id' parameter is fully documented in the schema, so the description adds nothing beyond it. Baseline 3 applies when the schema carries parameter semantics entirely.
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 and clarifies the scope as 'a single Data Center', which implicitly contrasts with the sibling hcloud_list_datacenters. It does not explicitly name the alternative, but the singular versus list distinction is inferable.
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 deprecation notice with concrete dates functions as a strong when-not-to-use signal, arguably the most actionable guidance here. However, it never names a replacement or tells the agent when fetching a single datacenter is the right call versus listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_firewallCRead-only
Get a Firewall
Returns a single Firewall.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond a restatement of purpose — no mention of what a Firewall object contains, whether the call fails for missing IDs, or any rate/consistency traits.
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 very short and front-loads the action. The two sentences are mildly redundant ('Get a Firewall' followed by 'Returns a single Firewall'), which keeps it from being maximally efficient, but 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 trivial single-resource get with no output schema, the agent knows it receives one Firewall object. However, without an output schema the description could usefully mention the returned fields or error cases, and it does not, leaving a 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% with a single well-documented 'id' parameter (including example, bounds, and description). The description contributes no additional parameter meaning, so the baseline 3 for schema-complete definitions 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 ('Get a Firewall', 'Returns a single Firewall') and the word 'single' implicitly distinguishes it from hcloud_list_firewalls. It stops short of naming alternatives such as hcloud_get_firewall_action or hcloud_list_firewalls, so the differentiation is only hinted at.
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 information about when to use this tool versus the many siblings, no mention that the firewall's id is required, and no note about prerequisites or error behavior. An agent must infer all usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_firewall_actionARead-only
Get an Action for a Firewall
Deprecated: This operation is deprecated, see our changelog for more details.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false and openWorld=true, so the description carries a lighter burden. The description adds genuinely valuable non-schema context: the operation is deprecated, with a pointer to the changelog. It stops short of mentioning the wait/polling behavior, but that is covered by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and generally front-loaded, though the deprecation warning sits below the title line rather than leading. Every sentence contributes something; 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 simple read getter with full annotation and schema coverage, the description is mostly adequate. The gap is that a deprecated tool should name its replacement or the preferred alternative (e.g., the list-actions or the newer action endpoint) so an agent can 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 all three parameters (id, action_id, wait) are already documented in the schema. The description adds no meaning 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 and resource ('Get an Action for a Firewall') with the parent firewall scope made explicit. However, it does not differentiate itself from the very similar sibling tools hcloud_get_firewalls_actions_id and hcloud_get_firewalls_actions, so an agent must open schemas to tell them apart.
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 deprecation notice with a changelog link gives useful context about when this tool should be avoided, but no replacement tool or alternative is named. Beyond that, there is no explicit guidance on when to prefer this over the near-identical list/get siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_firewalls_actionsCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered externally. The description adds nothing beyond that — no note on default page size, pagination limits, or whether the list includes historical completed actions. For a 5-param paginated list endpoint, more behavioral context would help.
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, with no wasted prose. The repeated header "List Actions" is slightly redundant with the tool name, but overall the text is 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?
Annotations and a fully documented schema cover the essentials for calling the tool. However, with no output schema and no differentiation from the near-identical hcloud_list_firewall_actions sibling, an agent cannot confidently choose this tool over the alternative from the definition 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 description coverage is 100%, so filtering by id, status, sorting, and pagination are all fully documented in the schema itself. The description's "URI parameters" phrase hints at filtering but contributes no syntax or semantics beyond that. 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 gives a clear verb and resource: "List Actions... Returns all Actions for Firewalls." The scope (firewall-scoped actions) is understandable at a glance. It does not distinguish itself from very similar siblings such as hcloud_list_firewall_actions or hcloud_get_firewall_action, 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 only guidance is "Use the provided URI parameters to modify the result," which describes capability, not when to choose this tool. There is no mention of when to use it instead of hcloud_list_firewall_actions or hcloud_get_firewalls_actions_id, despite near-duplicate siblings existing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_firewalls_actions_idCRead-only
Get an Action
Returns the specific Action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the obvious read operation, and does not explain the polling behavior implied by the wait parameter.
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 short and front-loaded, but the two sentences are largely redundant: "Get an Action" and "Returns the specific Action" convey the same generic idea.
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 get-by-ID tool with rich annotations and full schema coverage, the description still fails to clarify its firewall-specific scope among many similar action tools. It also lacks any note about the action object returned or the wait/polling behavior.
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 id and wait are fully documented in the input schema. The description adds no 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 says only "Get an Action" and "Returns the specific Action," which mostly restates the operation implied by the tool name. It omits the firewall scope entirely, so an agent cannot distinguish it from generic action getters like hcloud_get_action or hcloud_get_firewall_action.
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 many sibling action-retrieval tools. It neither names alternatives nor states any selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_floating_ipBRead-only
Get a Floating IP
Returns a single Floating IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered and the description's only added context is the single-resource return and a link to the Floating IP docs. It says nothing about behavior for a nonexistent ID (error vs null) or what fields the object carries, which matters given 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?
Two short sentences, action first, zero filler. The second sentence partially restates the first ('Get' / 'Returns a single'), so it is slightly redundant rather than earn-every-word optimal.
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 with no output schema, an agent still lacks the return shape and not-found semantics, which the description could have supplied in a sentence. It is adequate to call correctly but incomplete about what comes back.
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 parameter 'id' is documented in-schema as the Floating IP ID with bounds; the description adds no format or sourcing guidance (e.g., where to obtain the ID). Baseline 3 is appropriate when 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 and resource ('Get a Floating IP') and clarifies cardinality ('a single'), which implicitly separates it from hcloud_list_floating_ips. It never names the sibling explicitly, so differentiation comes from the verb/plurality rather than an outright contrast.
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: 'Returns a single' signals this is the by-ID lookup rather than the list call, but there is no explicit when/when-not, no note that you need the numeric ID, and no pointer to hcloud_list_floating_ips for discovery of IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_floating_ip_actionBRead-only
Get an Action for a Floating IP
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for a Floating IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context — that the endpoint is deprecated as of the linked changelog — but says nothing about the returned Action's states, error handling, or the wait/polling behavior exposed by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus a deprecation note, no filler. Slight weakness in ordering: leading with the deprecation notice would front-load the most decision-relevant fact rather than burying it after the purpose sentence.
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 tool with full schema coverage and annotations, the purpose and deprecation status are adequately conveyed. However, with no output schema, the description does not characterize the Action payload (status, timestamps, error fields) an agent would need to interpret 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 id, action_id, and the wait polling flag are all documented in the schema. The description adds no parameter-level meaning (e.g., what happens when wait is false or how timeouts surface), 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 ('Get an Action for a Floating IP') and clarifies it returns a single Action scoped to a Floating IP, which separates it from the generic hcloud_get_action and the list variant hcloud_get_floating_ip_actions. It never names those siblings explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use/when-not section or named alternative, but the Deprecated banner with a changelog link implicitly steers the agent away or toward migration. That is useful but indirect guidance rather than a clear usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_floating_ips_actionsCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context such as pagination behavior, default page size, filtering semantics, or how the results relate to floating IPs.
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 short and front-loaded with "List Actions," but the first two sentences are redundant and the markdown link to a generic Actions tag adds little value for an agent. It is not bloated, but it also does not use its brevity to convey useful specifics.
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 list tool with no output schema and many sibling list/action tools, the description omits the crucial scope: that it lists floating IP actions. It also does not explain the relationship to hcloud_get_floating_ips_actions_id or hcloud_list_floating_ip_actions, leaving the agent to infer context from the name and 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 description coverage is 100%, and the schema fully documents all five parameters including filters, sorting, and pagination. The description only says to use URI parameters to modify the result and adds no parameter semantics beyond 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?
The description says "List Actions" and repeats "Lists multiple Actions", which is essentially a restatement of the resource in the tool name. It never states that these are actions associated with floating IPs, so the agent cannot distinguish it from siblings such as hcloud_list_actions or hcloud_list_floating_ip_actions.
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 "Use the provided URI parameters to modify the result," which does not say when to use this tool versus alternatives. There is no mention of when to choose this over hcloud_list_floating_ip_actions, hcloud_get_floating_ips_actions_id, or hcloud_list_actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_floating_ips_actions_idCRead-only
Get an Action
Returns a single Action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds nothing beyond that: it does not mention that the returned action may be in-progress, nor explain the polling behavior implied by the sibling hcloud_wait_action. With annotations present the bar is lower, but this text contributes no behavioral context at all.
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 lines with no waste, but the brevity comes from under-specification rather than efficiency. The space saved is not spent on anything an agent would find useful, such as endpoint scope or return shape.
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 tool this could be adequate, but with no output schema and a large family of near-identical siblings, the description should at least say what this action lookup is scoped to and what it returns. As written, an agent must open the schema and infer intent from the name 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 description coverage is 100%, so both the required 'id' (ID of the Action) and 'wait' (poll until success/error or timeout) are fully documented in the schema. The description adds no parameter meaning beyond that, which lands at the baseline 3 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?
The text is essentially a restatement of the tool name: 'Get an Action / Returns a single [Action]'. It never distinguishes this endpoint from near-identical siblings such as hcloud_get_action, hcloud_get_floating_ip_action, or hcloud_get_floating_ips_actions (the list variant). An agent cannot tell which action-retrieval endpoint is correct from this text 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?
No when-to-use guidance, no prerequisites, and no named alternatives. The agent gets no signal that list-vs-get-by-id or hcloud_wait_action exist as competing choices, and no hint about how this scoped floating-IP action lookup differs from the generic one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_imageCRead-only
Get an Image
Returns a specific Image object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that a specific Image object is returned, without disclosing error behavior (e.g., missing ID), authentication needs, or response characteristics; with no output schema, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the second sentence ("Returns a specific Image object") is redundant with the first and adds almost no information. The definition is under-specified rather than verbose, making conciseness feel accidental.
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 get-by-ID tool, the definition enables invocation but not understanding of the result: there is no output schema, and the description does not explain what fields an Image object contains or what happens on a missing ID. The annotations cover safety, but the description is too thin to complete the tool's contract.
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 is documented as "ID of the Image." The description adds no formatting or semantic detail beyond the schema, so the baseline of 3 applies when the schema fully carries parameter documentation.
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 verb and resource ("Get an Image") and adds that it returns "a specific Image object," which faintly distinguishes it from hcloud_list_images. However, it is largely a restatement of the tool name and does not mention lookup by ID or explicitly differentiate it from siblings such as hcloud_get_image_action.
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 like hcloud_list_images or hcloud_get_image_action. The description provides no prerequisites, no when-not conditions, and no routing to a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_image_actionARead-only
Get an Action for an Image
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for an Image.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds the deprecation status, which is genuine extra context, but omits that the action must belong to the given image and says nothing about the 'wait' polling behavior exposed by the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, with the deprecation callout before the functional sentence. The opening heading and the closing sentence restate the same fact ('Get an Action for an Image' / 'Returns a specific Action for an Image'), which is mild redundancy but not harmful.
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 read tool with full annotations, no output schema, and a schema that documents every field, only light prose is needed. A hint about what an Action object contains or when a 404 occurs would help, but nothing essential to correct invocation is missing given the deprecation warning is present.
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, action_id, and wait are all documented upstream; baseline 3 applies. The description adds no semantics about the id/action_id pairing or what polling means for a read call 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 ('Returns a specific Action for an Image'), which is unambiguous. It does not distinguish itself from nearby siblings such as hcloud_get_action, hcloud_get_images_actions_id, or hcloud_list_image_actions, so an agent still has to infer which retrieval shape to pick.
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 deprecated notice and changelog link effectively say 'prefer something else,' which is useful when-not-to-use signal. However, it never names the replacement endpoint, so the agent knows to avoid this tool but not what to call instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_images_actionsCRead-only
List Actions
Returns all Action objects. You can sort the results by using the sort URI parameter, and filter them with the status and id parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond restating the sort/status/id parameters from the schema, and critically leaves unresolved whether the result set is scoped to an image or global — the single most consequential behavioral question 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?
Two short sentences, front-loaded with the operation and followed by the filtering note. No wasted text, though the filtering sentence largely duplicates structured schema content rather than carrying new 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?
With full schema coverage, annotations, and no output schema, the mechanics are adequately covered. But for a tool whose name suggests image scoping and whose description says 'all actions', the description should resolve that scope question — and 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?
Schema description coverage is 100%, so the schema already documents page, per_page, sort, status, and id thoroughly. The description merely names sort/status/id, adding no format, default, or interaction semantics beyond the schema — baseline 3.
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 says "List Actions" and "Returns all Action objects", which gives a verb and a resource, but the tool name (hcloud_get_images_actions) implies image-scoped actions while the description claims it returns ALL actions. An agent cannot tell whether this is scoped to images or global, and the description never differentiates it from hcloud_list_actions or hcloud_get_images_actions_id.
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 obvious siblings (hcloud_list_actions, hcloud_get_action, hcloud_get_images_actions_id). The only usage hint is how to sort and filter, which is invocation mechanics rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_images_actions_idCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that – it doesn't say what happens if the ID doesn't exist, what fields an Action carries, or that the `wait` parameter triggers polling behavior. It is essentially a restatement of the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, which is good, but the second sentence ('Returns a specific Action object') merely repeats the first ('Get an Action'), so one of the two sentences does not earn 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 simple read-only lookup with full schema coverage and clear annotations, this is barely adequate. With no output schema, the description could reasonably hint at the shape of an Action object or its relation to image operations, but it doesn't, leaving the agent to infer scope from the awkward tool name.
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` and `wait`) are documented in the schema, so the baseline of 3 applies. The description contributes no additional meaning about the ID's scope (image action ID vs. generic action ID) or the polling 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 the verb 'Get' and the resource 'Action object', so the basic operation is clear. However, it never says this is specifically the image (or image-resource) action endpoint, and with roughly a dozen near-identical siblings (hcloud_get_certificates_actions_id, hcloud_get_servers_actions_id, hcloud_get_volumes_actions_id, etc.) the description does nothing to distinguish this tool 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?
There is no guidance on when to use this tool at all. It doesn't mention the sibling list endpoints (hcloud_list_image_actions, hcloud_get_images_actions), the single-action sibling (hcloud_get_image_action), or the generic hcloud_get_action, nor any prerequisite such as already having obtained an action ID from a prior mutation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_isoCRead-only
Get an ISO
Returns a specific ISO object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the ISO. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered externally. The description adds nothing beyond them — no note on error behavior for a nonexistent id, no mention of what identifiers the returned object exposes (which matters since ISOs are passed to hcloud_server_attach_iso_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?
It is short and front-loaded, but the second sentence ("Returns a specific ISO object.") is a pure restatement of the first and earns no place. Brevity here comes from under-specification rather than efficient communication.
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 annotation and schema coverage, this is minimally sufficient: the agent knows it fetches one ISO by id. It stops short of explaining how the fetched object is used downstream (attaching to a server) or how to discover ids, leaving a real gap in a large sibling set.
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 required parameter (id, int64, min 1) is fully documented in the schema with an example. The description adds no meaning beyond that, 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?
"Get an ISO" is a specific verb plus resource, and the second line clarifies it returns a single ISO object. However, both sentences essentially restate the tool name and neither distinguishes it from the sibling hcloud_list_isos (which returns many ISOs) or explains what an ISO is used for in this API.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus hcloud_list_isos or hcloud_list_images, no prerequisites, and no note that an ISO id must be obtained first (e.g., from the list endpoint). The agent must infer the entire selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_load_balancerCRead-only
Get a Load Balancer
Gets a specific Load Balancer object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered structurally. The description adds nothing behavioral beyond that: no mention of 404 behavior for a missing ID, no indication of how much detail the returned object carries (services, targets, attached networks), and no coverage 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?
Very short, but the entire body is redundant: the heading repeats the tool name and the single sentence only rephrases it. There is no front-loaded distinguishing information, so the brevity reflects a lack of content rather than efficient economy.
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 single-ID read on an annotated tool, an agent can call it correctly from the schema alone. The remaining gap is that neither description nor output schema tells the agent what the response contains, which matters for a Load Balancer object that may embed services, targets, and network attachments.
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 and schema description coverage is 100%, with the schema itself documenting 'ID of the Load Balancer' plus format and range constraints. Per the high-coverage baseline this scores 3, and the description contributes no additional meaning such as where the ID comes from.
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 restates the tool name: 'Get a Load Balancer' followed by 'Gets a specific Load Balancer object.' The word 'specific' hints at single-object retrieval versus the sibling hcloud_list_load_balancers, but nothing distinguishes it from hcloud_get_load_balancer_action, hcloud_get_load_balancer_metrics, or hcloud_get_load_balancer_type, all of which are also 'get' operations on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance at all. There is no statement about when to prefer this over list_load_balancers (e.g., 'when you already have the ID') or over the metrics/type/action getters, so the agent must infer selection purely from names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_load_balancer_actionARead-only
Get an Action for a Load Balancer
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for a Load Balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the description is not obligated to restate that. It does add a genuinely useful behavioral fact beyond structured data: the endpoint is deprecated as of the linked changelog date, which affects whether an agent should pick it at all. It omits any note about the polling behavior implied by the 'wait' parameter, keeping it short of 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?
Front-loads the deprecation notice and then gives one sentence of purpose — no wasted text. The markdown heading plus repeated restatement of the purpose is slightly redundant but not harmful.
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 the description does not say what an Action object contains or how a caller should read the result, nor does it give a migration path despite the deprecation. For a simple two-ID lookup tool this is adequate but leaves gaps an agent would have to guess at.
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, action_id, wait) are already documented in the schema, including the polling semantics of 'wait'. 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 verb and resource ('Get an Action for a Load Balancer'), and the load-balancer scoping distinguishes it from the generic hcloud_get_action and the server/volume/network action getters. It does not explicitly name those siblings, but the resource qualifier is enough to route an agent.
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 flags that the operation is deprecated and links a changelog, which implies 'prefer something else,' but it never says what to use instead (e.g., hcloud_get_action or hcloud_list_load_balancer_actions) or under what conditions this tool is still correct. The usage signal 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.
hcloud_get_load_balancer_metricsARead-only
Get Metrics for a LoadBalancer
You must specify the type of metric to get: open_connections, connections_per_second, requests_per_second or bandwidth. You can also specify more than one type by comma separation, e.g. requests_per_second,bandwidth.
Depending on the type you will get different time series data:
Type | Timeseries | Unit | Description |
open_connections | open_connections | number | Open connections |
connections_per_second | connections_per_second | connections/s | Connections per second |
requests_per_second | requests_per_second | requests/s | Requests per second |
bandwidth | bandwidth.in | bytes/s | Ingress bandwidth |
bandwidth.out | bytes/s | Egress bandwidth |
Metrics are available for the last 30 days only.
If you do not provide the step argument we will automatically adjust it so that 200 samples are returned.
We limit the number of samples to a maximum of 500 and will adjust the step parameter accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| end | Yes | End of period to get Metrics for (must be in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) format). | |
| step | No | Resolution of results in seconds. | |
| type | Yes | Type of metrics to get. | |
| start | Yes | Start of period to get Metrics for (must be in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) format). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, non-destructive call, and the description layers on substantive behavior: the 30-day retention limit, automatic step adjustment targeting 200 samples, and a hard cap of 500 samples. These are non-obvious constraints 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?
Front-loaded with the core action, then constraints, then a compact table that earns its place by pairing timeseries names with units. Slightly verbose in its repetitive phrasing about step adjustment, but no section is dispensable.
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 return-shape burden and does so via the timeseries/unit table, including the two bandwidth series. Combined with retention and sampling limits, an agent has everything needed to call and interpret results.
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 real meaning: what each `type` value actually measures and its unit, and how `step` is auto-derived when omitted and clamped when too fine. This goes well beyond the schema's one-line field 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 and resource ('Get Metrics for a LoadBalancer') and immediately scopes it by naming the metric types it returns. An agent can distinguish this from hcloud_get_load_balancer (which fetches the object itself) and from the server-metrics 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?
Gives clear operational conditions: a metric type is mandatory, multiple types may be comma-separated, and data only exists for the last 30 days. It does not explicitly say when to prefer this over hcloud_get_server_metrics or the raw variant, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_load_balancers_actionsCRead-only
List Actions
Returns all Action objects. You can sort the results by using the sort URI parameter, and filter them with the status and id parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds no behavioral context beyond that — nothing about pagination limits, result volume, or what the Action objects contain. Statements about sort/filter belong to parameter semantics, not 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 short sentences, front-loaded with the verb and resource, with no filler. It is efficient, though the brevity contributes to the unresolved scoping ambiguity rather than resolving 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?
No output schema exists, and the description does not characterize the returned Action objects, their pagination envelope, or how this listing differs from the per-resource action endpoints. The complete schema offsets some of this, but the missing scope statement is a real gap for a tool with this many near-duplicate 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?
Schema description coverage is 100%, so the schema documents all five parameters including sort enums, status values, and pagination limits. The description restates only sort/status/id and omits page and per_page, adding no meaning 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?
The description gives a verb and resource ("List Actions / Returns all Action objects") but never mentions load balancers, even though the tool name and siblings (hcloud_get_load_balancer_action, hcloud_list_load_balancer_actions, hcloud_list_actions) imply a specific scope. An agent cannot tell from the description whether this returns global actions or load-balancer-scoped actions.
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 names the sort/filter parameters but gives no guidance on when to choose this over hcloud_list_actions, hcloud_get_load_balancer_action, or hcloud_list_load_balancer_actions. The agent must infer selection from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_load_balancers_actions_idCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — notably it never mentions that `wait` defaults to true and will block/poll until the action succeeds, errors, or times out, which is the one behaviorally significant trait 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?
It is short, but the two sentences are redundant — the second simply rephrases the first — and neither is front-loaded with differentiating information. There is no bloat, but nothing earns its place either.
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 explain what an Action object contains (status, progress, error, command) and how the default polling behaves. Neither is covered, leaving the agent without the context needed to interpret the result.
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, wait) are documented inline, so the baseline of 3 applies. The description contributes no additional meaning about what the id refers to or how polling behaves.
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?
"Get an Action / Returns a specific Action object" restates the tool name rather than explaining it. It never says this is a load-balancer-scoped action lookup, so nothing distinguishes it from hcloud_get_action, hcloud_get_load_balancer_action, or any of the dozen sibling *_actions_id 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?
No guidance on when to use this versus hcloud_list_load_balancer_actions (to find an ID) or hcloud_get_action (generic lookup), and no prerequisites or exclusions. The agent must infer the workflow 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.
hcloud_get_load_balancer_typeCRead-only
Get a Load Balancer Type
Gets a specific Load Balancer type object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer Type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on whether a missing ID errors, whether results are cached, or what the returned object contains.
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, but the second sentence duplicates the heading rather than adding information, so the space is not fully earned. There is no wasted length, just wasted content.
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 single-resource read with full annotation coverage and a fully described single parameter, the basics are present. Still missing is any hint of what a 'Load Balancer type object' contains (sizes, prices, deprecation) and the error behavior for an invalid ID.
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 and the schema fully documents it ('ID of the Load Balancer Type'), so the baseline of 3 applies. The description adds no syntax or sourcing guidance beyond the schema's own text.
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 verb (get) and resource (Load Balancer Type) and the word 'specific' hints at a single-object lookup by ID. However, the second sentence largely restates the first, and it never distinguishes this from the sibling hcloud_list_load_balancer_types or explains how the type relates to hcloud_get_load_balancer.
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 list_load_balancer_types, nor where the required id comes from (e.g., from the list endpoint or a load balancer's type field). The agent must infer the lookup workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_locationCRead-only
Get a Location
Returns a Location.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond them — the only extra text is a broken markdown anchor pointing at the API docs, which conveys no behavioral information.
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, but the second sentence is a dangling reference-style link that resolves to nothing useful, so one of only two sentences is effectively 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, so the description carries the burden of explaining what a Location returns (name, description, country/city, network zone, coordinates). It says only that it returns a Location, leaving the agent unable to predict the response shape for what is otherwise a trivially simple 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?
Single parameter with 100% schema description coverage ("ID of the Location", int64, min 1), so the schema fully documents it. The description adds no extra meaning, which is the expected baseline 3 when schema coverage is 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?
States a specific verb and resource ("Get a Location"), so an agent can tell it retrieves a single location rather than listing them, but it offers no elaboration on what a Location is or how it differs from the numerous other hcloud_get_* singular lookups.
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 hcloud_list_locations or hcloud_get_datacenter, which both surface location data. No prerequisites, no note that an ID must be known in advance (e.g., obtained from list_locations).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_networkCRead-only
Get a Network
Get a specific Network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context of its own — nothing about what a Network object contains, whether a missing ID errors, or any auth/rate-limit notes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the second line ('Get a specific Network') merely repeats the first with a doc link, so one of two sentences is redundant rather than earning 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 simple single-resource read with a fully documented ID param and complete annotations, the essentials are present. But with no output schema, the description gives no hint of what a Network response contains or how it relates to subnets/routes, leaving a notable 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?
With a single parameter and 100% schema description coverage ('ID of the Network.'), the schema fully documents the input, so the baseline of 3 applies. The description contributes nothing extra such as ID source (e.g., from hcloud_list_networks) or format constraints.
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 verb (get) and resource (Network) and adds 'specific', hinting at single-resource retrieval. However, it essentially restates the tool name, and with siblings like hcloud_list_networks, hcloud_get_network_members, and hcloud_get_network_action present, it does nothing to differentiate scope or return shape.
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 hcloud_list_networks or the network Members/actions getters, and no prerequisites or conditions stated. The only usable signal is the required integer ID, which is implied by the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_network_actionARead-only
Get an Action for a Network
Deprecated: This operation is deprecated, see our changelog for more details.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare that the tool is a read-only, non-destructive, open-world operation; the description adds the genuinely useful fact that the endpoint is deprecated and points to a changelog. It does not explain what happens when the action is still running or how the 'wait' polling behaves, so the behavioral picture is incomplete beyond the deprecation note.
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 three short lines with the purpose at the top and the deprecation caveat directly after it, so it is front-loaded and wastes little space. A raw changelog URL and markdown anchors add slight noise, but they do not obstruct understanding.
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?
Since there is no output schema, the description should signal what is returned, and it does so by naming an Action resource and linking to the actions tag. For a simple two-ID lookup with full schema coverage, the only material gap is the missing pointer to a replacement endpoint for the deprecated 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?
The schema covers 100% of the parameters (id, action_id, wait), so it does all the work. The description only restates that the Action belongs to a Network and adds no detail on the polling parameter or ID semantics; the baseline score 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 and resource ('Get an Action for a Network' / 'Returns a specific Action for a Network'), and the network scope separates it from the generic hcloud_get_action. It still does not explicitly name the sibling to use instead, but the resource scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The deprecation notice implies that an agent should avoid this endpoint and points to a changelog, which is an implicit usage signal. However, it never states the preferred alternative (e.g., hcloud_get_action or hcloud_get_networks_actions_id), nor does it give any condition for still calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_network_membersBRead-only
List Members of a Network
List the resources attached to a specific Network.
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| type | No | Filter members by type. May be used multiple times. The response will only contain members matching the specified types. | |
| status | No | Filter members by status. May be used multiple times. The response will only contain members matching the specified statuses. | |
| subnet | No | Filter members by the subnet they are attached to. May be used multiple times. The response will only contain members attached to the subnets with the specified IP ranges. Uses CIDR notation. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safe read-only nature is conveyed structurally. The description adds nothing behavioral beyond that — no note on pagination semantics, result set size, or that the network must exist — so it neither helps nor contradicts.
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?
Short and front-loaded, but the trailing sentence 'Use the provided URI parameters to modify the result' is boilerplate that does not earn its place. The rest is a restatement of the title plus one clarifying sentence.
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, fully-documented paginated list endpoint this is adequate, and annotations cover the safety profile. However, with no output schema the description never hints at what a 'member' looks like (server/load balancer with ip, status, subnet), leaving the agent to infer the response 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?
With 100% schema description coverage, the schema already documents id, page, per_page, sort, type, status and subnet in detail. The description's generic 'URI parameters' phrasing adds no 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?
The description gives a specific verb+resource: 'List the resources attached to a specific Network', which is more precise than the name alone. It does not explicitly distinguish itself from near-neighbors like hcloud_get_network or hcloud_list_networks, so an agent must infer the difference.
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 statement of when to use this tool versus alternatives such as hcloud_get_network (which returns network details) or hcloud_list_networks. The only guidance is the vague 'Use the provided URI parameters to modify the result', which is not actionable and names no conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_networks_actionsCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context such as what the result contains, pagination behavior, or whether the actions are scoped to networks.
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 short but redundant: 'List Actions' and 'Lists multiple Actions' repeat the same idea, and the URI-parameter sentence is generic. It is concise but does not front-load the missing 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 list tool with full schema coverage and annotations, the description still fails to identify the resource being listed (network actions) or distinguish among the many action-listing siblings. That omission is critical for correct 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 the five parameters are fully documented in the schema. The description only vaguely says to use URI parameters to modify the result and adds no meaning beyond that, 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?
The description only restates the name with 'List Actions' and 'Lists multiple [Actions]'. It never mentions networks, so an agent cannot tell whether this lists actions for all networks, a specific network, or something else, nor how it differs from siblings like hcloud_list_network_actions.
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 'Use the provided URI parameters to modify the result,' which does not indicate when to use this tool versus hcloud_list_network_actions, hcloud_get_networks_actions_id, or hcloud_list_actions. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_networks_actions_idCRead-only
Get an Action
Returns a single Action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes nothing further — notably it does not mention that polling can block until success/error or timeout, which is the one behavioral trait that matters most 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?
Two short sentences with no filler and the verb front-loaded. It is efficient but borders on redundant with the tool title, so it is concise without being informative.
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 only two parameters, full schema coverage, and annotations covering safety, the definition has room to say something — yet it omits the network scope, the difference from sibling action getters, and the effect of `wait`. For a tool competing against dozens of near-identical action lookups, that 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 both `id` and `wait` are already documented in the schema, giving a baseline of 3. The description adds no meaning beyond that — it doesn't clarify the ID namespace (network-scoped action IDs) or the polling/timeout 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?
"Get an Action / Returns a single [Action]" restates the name and title without adding scope. Critically, it drops the network scoping implied by the tool name, so it reads as a generic action getter indistinguishable from siblings like hcloud_get_action, hcloud_get_network_action, and hcloud_get_primary_ips_actions_id.
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 alternatives named. An agent cannot tell from this text whether to use this, hcloud_get_network_action, or the list variant hcloud_get_networks_actions, nor what the `wait` parameter implies about using hcloud_wait_action instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_placement_groupCRead-only
Get a PlacementGroup
Gets a specific Placement Group object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Placement Group. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that — no note on lookup failure behavior, whether soft-deleted groups are returned, or what fields the object carries, despite there being 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?
It is short and front-loaded, but the second sentence is a near-verbatim restatement of the first and earns nothing. Brevity here comes from under-specification rather than efficient editing.
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 clear read-only annotations, the description contains just enough for correct invocation. The main residual gap is that no output schema exists, and the description does not say what a Placement Group object contains, leaving the agent to discover the response shape empirically.
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 documented `id` parameter ("ID of the Placement Group"), so the schema does the heavy lifting. The description adds no format or sourcing hint (e.g., where to obtain the ID), which is the baseline-3 outcome when coverage is 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 restates the tool name in sentence form ("Get a PlacementGroup" / "Gets a specific Placement Group object") without adding scope, retrieval semantics, or differentiation from the many placement-group siblings (list/create/update/delete). Only the word "specific" hints that it targets one object rather than a collection.
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 such as hcloud_list_placement_groups (for discovery of IDs) or hcloud_get_* variants. The agent must infer usage purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_pricingARead-only
Get all prices
Returns prices for all resources available on the platform. VAT and currency of the Project owner are used for calculations.
Both net and gross prices are included in the response.
| Name | Required | Description | Default |
|---|---|---|---|
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a safe, read-only, open-world read. The description adds genuinely useful context beyond that: prices are calculated using the Project owner's VAT and currency, and both net and gross figures are returned. It does not discuss pagination behavior, but the schema parameter covers 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?
Three short sentences, front-loaded with the core action, then the scope, then the output caveats. No redundant or filler content.
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 no output schema, the description covers what is returned (prices for all resources, net and gross) and the currency/VAT basis. It stops short of describing the response structure or pagination effects, which would help 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?
The single parameter (auto_paginate) has 100% schema description coverage, so the baseline of 3 applies. The description does not mention auto-pagination or how pages are merged, adding no meaning 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 opens with a specific verb and resource ('Get all prices') and scopes it to 'all resources available on the platform'. No sibling tool covers pricing, and the resource is unambiguous, so an agent can select it immediately.
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 scope ('all resources available on the platform') makes it clear this is a global pricing lookup with no filtering, and no sibling offers an alternative pricing path. There are no exclusions to state, but the description never explicitly says when to reach for it versus other getters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_primary_ipCRead-only
Get a Primary IP
Returns a Primary IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note on what is returned, error behavior for a nonexistent ID, or the fact that it is a live API call; the markdown anchor to the OpenAPI tag is 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 very short and the purpose statement is front-loaded, with no padding. The trailing markdown documentation link consumes a sentence without informing an agent, which keeps it just under top marks.
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 is the only place a caller could learn what a Primary IP resource contains or how the response is shaped, and it says nothing. Annotations and a fully documented single parameter make it minimally callable, but it is not genuinely informative.
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 required parameter with 100% schema description coverage ("ID of the Primary IP", int64, min 1), so the schema already carries the parameter meaning. The description adds nothing further, which is the baseline-3 case rather than a failure.
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 reads "Get a Primary IP", which is a direct restatement of the tool name hcloud_get_primary_ip with no added specificity. It does not distinguish this single-resource fetch from siblings such as hcloud_list_primary_ips, hcloud_get_primary_ip_action, or hcloud_get_primary_ips_actions.
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 many adjacent primary-IP tools (list, actions, update, delete, assign/unassign). The agent must infer from the name alone that this is a lookup by numeric ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_primary_ip_actionARead-only
Get an Action for a Primary IP
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for a Primary IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds non-obvious lifecycle context — that the endpoint is deprecated with a changelog link — which is real behavioral information an agent can't get from the schema. It does not mention the polling behavior of `wait`, but that is documented 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?
Two short paragraphs with the deprecation front-loaded, so a reader sees the critical warning before the semantics. Minor waste from the markdown anchor fragments ('#tag/actions'), but overall tight.
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 read tool with full schema coverage and annotations, the definition covers purpose, return scope, and deprecation status. What's missing is the actionable replacement path for a deprecated endpoint, which is the single most important thing an agent needs after learning it's deprecated.
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, action_id, wait) including the polling flag are already documented with constraints. The description adds nothing beyond the schema, which is the expected baseline-3 outcome.
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 ('Get an Action for a Primary IP') and clarifies it returns a single Action scoped to a Primary IP. However, it does not distinguish itself from the near-duplicate siblings hcloud_get_primary_ips_actions_id and hcloud_list_primary_ip_actions, so the reader must infer the difference.
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 deprecation banner is a genuine usage signal ('do not build on this'), but the description never names the replacement endpoint or says when to prefer hcloud_get_action / hcloud_list_primary_ip_actions. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_primary_ips_actionsCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that — no scope (which resource's actions), no pagination behavior, no ordering defaults.
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 short, but the brevity comes from boilerplate, not from precision; the markdown anchor link (#tag/actions) is noise. The one useful idea (filtering via parameters) is buried in a vague second sentence.
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?
Five optional filter parameters and no output schema mean the description should at minimum state what collection is being listed and how results are returned. It says nothing about the primary-IP scope, leaving a genuine ambiguity with sibling list_actions 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%, with detailed per-parameter docs for id, status, sort, page and per_page, so the schema carries parameter meaning. The description's generic 'URI parameters' phrase adds no information on top, but 3 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 restates the name: 'List Actions' then 'Lists multiple [Actions]'. It never states the primary-IP scoping that the tool name implies, so an agent cannot tell it apart from hcloud_list_actions or hcloud_list_primary_ip_actions.
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 'Use the provided URI parameters to modify the result', which is a tautology rather than a when-to-use rule. No mention of when to pick this over hcloud_list_primary_ip_actions or hcloud_get_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_primary_ips_actions_idCRead-only
Get an Action
Returns a single Action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that—it does not mention the notable behavior that the default wait=true will poll the action until success, error, or timeout, which materially affects call latency.
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 and waste-free. The OpenAPI-derived markdown anchor "[Action](#tag/actions)" is inert noise in an MCP context, a minor blemish on an otherwise tight 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, and the description only says a single Action is returned without characterizing its fields or states. The schema does document the wait parameter, which offsets some of the gap, but the blocking-poll behavior of a default-true wait flag is never surfaced in prose.
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 wait fully documented in the schema, so the baseline of 3 applies. The description adds no further meaning about the ID's scope or the polling 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 ("Get an Action", "Returns a single Action"), so the agent knows this is a single-resource fetch rather than a list. However, it never mentions that the action is scoped to Primary IPs, leaving no differentiation from near-identical siblings such as hcloud_get_action, hcloud_get_primary_ip_action, and hcloud_get_primary_ips_actions.
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 the generic hcloud_get_action, the list variant hcloud_get_primary_ips_actions, or hcloud_wait_action. The agent must infer the distinction from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_serverARead-only
Fetch a single Hetzner Cloud server by numeric id OR by exact name. Hand-tuned wrapper; use hcloud_get_server_raw for the id-only generated tool.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds that this is a hand-tuned wrapper rather than the generated tool, which is useful. However it never says what happens when neither id nor name is supplied (zero required params) or which key wins if both are given, leaving real call-time ambiguity.
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, no filler, with the lookup capability front-loaded and the sibling routing second. Every clause carries information the schema and annotations do not.
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 with no output schema and annotations covering the safety profile, the definition is nearly sufficient. The only meaningful gap is the unresolved zero-required-parameter case (is at least one of id/name mandatory, and what if both are passed).
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 0%, so the description must carry the load, and it does add meaning: the name must be an *exact* match and the two keys are presented as alternatives. It still omits mutual exclusivity/precedence rules and any statement that at least one parameter is required.
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 (fetch a single Hetzner Cloud server) plus the two accepted lookup keys. It also names the sibling it supersedes, hcloud_get_server_raw, so the tool is distinguishable among the many hcloud_get_* siblings 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?
Explicitly routes the agent to hcloud_get_server_raw when the generated, id-only behavior is desired, which is a real alternative-selection rule. It stops short of telling the agent when to prefer listing (hcloud_list_servers) over a direct fetch, so there is no full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_server_actionBRead-only
Get an Action for a Server
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action object for a Server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds deprecation status, which is genuinely useful behavioral context not in annotations, but it omits what the default wait=true polling does or how the action lifecycle behaves.
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?
Short and front-loaded, with the deprecation warning placed high where an agent will see it. The opening 'Get an Action for a Server' is slightly redundant with the following 'Returns a specific Action object for a Server' sentence.
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 leaves the Action object's contents (status, progress, error, command) entirely unexplained, and it does not point at a deprecation replacement. For a simple two-ID getter the essentials are present, but a deprecation with no successor named is a notable 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 wait/polling flag are documented in the schema. The description adds no syntax or meaning 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 and resource ('Get an Action for a Server', 'Returns a specific Action object for a Server'). However, it does not distinguish itself from the many near-identical siblings such as hcloud_get_action, hcloud_get_servers_actions_id, or hcloud_get_load_balancer_action, all of which read as interchangeable without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The Deprecated notice with a changelog link is an implied 'prefer something else' signal, which is real usage guidance. But it names no replacement tool and gives no condition under which this getter is still the right choice versus hcloud_get_action or hcloud_get_servers_actions_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_server_metricsBRead-only
Fetch a server's metrics (cpu / disk / network). Accept id OR name. Defaults to the last hour with step=60s. Hand-tuned wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ||
| end | No | ISO-8601 timestamp; default: now | |
| name | No | ||
| step | No | ||
| type | Yes | ||
| start | No | ISO-8601 timestamp; default: now - 1 hour |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the time-window and step defaults, which is real context, but says nothing about return format, units, or how 'hand-tuned' output differs from the raw 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?
Four short, front-loaded sentences with no filler; the resource type and access pattern come first. Slightly terse for a 6-parameter tool, 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 6 parameters, no output schema, and a third of parameters undocumented, the agent is left guessing at the shape of the returned metrics series and how start/end override the default window. Adequate for selecting the tool, incomplete for invoking 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 coverage is only 33%, so the description has to carry weight: it does clarify the id/name alternation and the 1-hour/60s defaults. However, it doesn't explain step semantics beyond the default, nor the interaction between start/end and the default window, leaving several parameters under-documented.
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 (fetch) and resource (server metrics) and narrows it to cpu/disk/network. The 'Hand-tuned wrapper' note implicitly distinguishes it from hcloud_get_server_metrics_raw, though it doesn't name that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that id OR name is accepted and what the defaults are, which is genuinely useful usage context. It never says when to prefer this over hcloud_get_server_metrics_raw or what 'hand-tuned' means in practice, so the alternative routing is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_server_metrics_rawARead-only
Get Metrics for a Server
Get Metrics for specified Server.
You must specify the type of metric to get: cpu, disk or network. You can also specify more than one type by comma separation, e.g. cpu,disk.
Depending on the type you will get different time series data
Type | Timeseries | Unit | Description |
cpu | cpu | percent | Percent CPU usage |
disk | disk.0.iops.read | iop/s | Number of read IO operations per second |
disk.0.iops.write | iop/s | Number of write IO operations per second | |
disk.0.bandwidth.read | bytes/s | Bytes read per second | |
disk.0.bandwidth.write | bytes/s | Bytes written per second | |
network | network.0.pps.in | packets/s | Public Network interface packets per second received |
network.0.pps.out | packets/s | Public Network interface packets per second sent | |
network.0.bandwidth.in | bytes/s | Public Network interface bytes/s received | |
network.0.bandwidth.out | bytes/s | Public Network interface bytes/s sent |
Note that the CPU value is not normalized to a fixed 0-100% scale. It is calculated per vCPU: a value of 100 represents full utilization on a 1-vCPU server, and 25% utilization on a 4-vCPU server. To calculate the overall CPU usage, divide the metric value by the number of vCPUs.
Metrics are available for the last 30 days only.
If you do not provide the step argument we will automatically adjust it so that a maximum of 200 samples are returned.
We limit the number of samples returned to a maximum of 500 and will adjust the step parameter accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| end | Yes | End of period to get Metrics for (must be in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) format). | |
| step | No | Resolution of results in seconds. | |
| type | Yes | Type of metrics to get. | |
| start | Yes | Start of period to get Metrics for (must be in [RFC3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) format). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation read-only and non-destructive, but the description goes much further: it discloses the 30-day retention window, the automatic step adjustment targeting 200 samples, the hard 500-sample ceiling, and the non-obvious CPU normalization per-vCPU semantics. These are exactly the traits an agent needs to interpret results correctly and cannot be inferred 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?
The layout is well front-loaded — purpose, required type argument, then a scannable table of timeseries, then constraints. The opening two lines ('Get Metrics for a Server' / 'Get Metrics for specified Server.') are redundant, a minor waste in an otherwise efficient document.
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 explaining the returned timeseries and units, and it does so thoroughly. The remaining gap is that no return envelope shape is described and the 'raw' distinction from the sibling is never addressed, which matters for a tool whose name implies a specific response format.
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 would be 3, but the description adds genuine meaning: the type table maps each enum value to concrete timeseries names and units, and it explains how step behaves when omitted or when the sample cap forces adjustment. It does not clarify the start/end RFC3339 interaction with the 30-day window, keeping it from a 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 and resource ('Get Metrics for a Server') and enumerates the metric types returned, which makes the operation clear. However, it never distinguishes this from the sibling hcloud_get_server_metrics, nor does it explain what 'raw' means in this context, so an agent cannot confidently choose between the two 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 useful operating guidance — the type must be specified, multiple types can be comma-separated, metrics only cover the last 30 days, and step is auto-adjusted if omitted. What is missing is selection guidance: when to use this raw variant versus hcloud_get_server_metrics or hcloud_get_load_balancer_metrics, which is the primary routing decision an agent faces here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_server_rawBRead-only
Get a Server
Returns a specific Server object. The Server must exist inside the Project.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds the useful failure mode that the server must exist in the Project, but says nothing about response format, error behavior for missing IDs, or what makes the returned payload "raw".
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 object being returned stated up front and no wasted prose. It is not padded, though the second sentence carries little unique information beyond the precondition.
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 with no output schema, the essentials for invocation are present. What's missing is the raw-versus-normalized distinction from `hcloud_get_server`, which is the only real complexity in this tool's identity and would change an agent's 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?
A single `id` parameter with 100% schema description coverage, so the schema fully documents it (int64, min 1, example 42). The description adds nothing beyond it, but the baseline of 3 applies 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?
"Get a Server / Returns a specific Server object" states a clear verb and resource, and adds the precondition that the server must exist in the Project. It never distinguishes this from the sibling `hcloud_get_server` or explains what the `_raw` suffix means, which is the key ambiguity 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?
No statement of when to use this versus `hcloud_get_server`, `hcloud_list_servers_raw`, or `hcloud_get_server_metrics`, all of which are plausible alternatives for the same agent intent. The only guidance is an existence precondition, which is a constraint, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_servers_actionsCRead-only
List Actions
Returns all Action objects. You can sort the results by using the sort URI parameter, and filter them with the status and id parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds only that results can be sorted/filtered, without mentioning pagination behavior, default page size, or the scope of returned actions — nothing an agent couldn't infer from 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?
Two short sentences with no padding, and the core action (list) is front-loaded. The second sentence is partly redundant with the schema but is not wasteful enough to penalize further.
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 list tool with no output schema, the description should clarify the resource scope (server actions), the pagination model, and the shape of returned Action objects. It does none of these and leaves the server-scoping question a genuine ambiguity given the many sibling list-actions 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 the schema already fully documents id, page, sort, status, and per_page. The description merely names sort, status, and id (omitting pagination) without adding syntax or 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?
The description says only "List Actions / Returns all Action objects," which is a restatement of the generic list-actions resource. Despite the name hcloud_get_servers_actions, it never states that these are actions scoped to servers, leaving it indistinguishable from siblings like hcloud_list_actions or hcloud_get_servers_actions_id.
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 hcloud_list_actions, hcloud_list_server_actions, or hcloud_get_servers_actions_id. The only conditional content is a paraphrase of query parameters, not selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_servers_actions_idCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that — notably it never discloses that the default `wait=true` will poll the action until success/error or timeout, which is a meaningful behavioral trait for a 'get' tool. With annotations carrying the safety burden, a 3 is fair but the polling behavior should have been surfaced.
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 lines, front-loaded with the verb and no filler. It is efficient, though its brevity borders on under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explain what an Action object contains (status, progress, error, resources) and what the polling `wait` flag returns on timeout. Neither is covered, leaving an agent unable to interpret the result or predict blocking behavior.
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 `wait` are already documented in the schema. The description adds no meaning beyond it — no explanation of where an action ID comes from or what `wait` means in practice. 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 verb and resource ('Get an Action', 'Returns a specific Action object'), so the basic operation is clear. However, the description does not distinguish it from the many near-identical siblings (hcloud_get_action, hcloud_get_server_action, hcloud_get_servers_actions, hcloud_get_load_balancers_actions_id), and it never clarifies that this is the server-scoped action endpoint. An agent cannot tell from the text alone which of the get-action variants to pick.
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 ~10 sibling action-retrieval tools. No prerequisites, no mention that an action ID is typically obtained from a prior mutating call (e.g. hcloud_get_servers_actions), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_server_typeCRead-only
Get a Server Type
Gets a specific Server type object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server Type. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds no behavioral context of its own: it doesn't say whether a missing ID errors or returns empty, nor what the returned object's scope is (cores, memory, disk, pricing, deprecation flags).
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, but the heading and the body sentence are near-duplicates, so one of the two sentences earns nothing. It's concise by omission rather than by editing.
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 is the only place to describe what a Server Type object looks like; it says nothing. For a lookup tool whose whole value is the returned shape, that leaves a material 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% and the single required 'id' parameter is fully documented in the schema, so baseline 3 applies. The description adds nothing beyond the schema — no note on where the ID comes from or what happens for a nonexistent 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?
The verb+resource ('Get a Server Type') is identifiable, but the body sentence 'Gets a specific Server type object' largely restates the name. It hints at single-item retrieval (vs. hcloud_list_server_types) but never says so explicitly, and gives no sense of what a Server Type contains.
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 hcloud_list_server_types or how an ID is obtained (e.g., from a server's response or a list call). The agent must infer the lookup workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_ssh_keyCRead-only
Get a SSH key
Returns a specific SSH key object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the SSH Key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note on authorization expectations, not-found behavior, or that the lookup is by numeric ID only.
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, but the second sentence repeats the first rather than adding information, so one of two sentences 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 simple single-parameter read with full schema coverage and annotations covering safety, the minimum needed to call it is present. It still omits what identifies an SSH key besides the numeric ID and how to discover IDs, which the list sibling would supply.
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 documented 'id' parameter, so the schema carries the semantics. The description adds no meaning beyond it, 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?
The description restates the tool name ('Get a SSH key' / 'Returns a specific SSH key object') without adding scope or distinguishing it from hcloud_list_ssh_keys or hcloud_get_ssh_key's own create/update/delete siblings. The word 'specific' only faintly implies a single-resource lookup by ID, which the name and schema already convey.
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 prerequisite statement, and no mention of hcloud_list_ssh_keys as the alternative for discovering keys. The agent must infer that an ID is required and that listing is a separate tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_volumeCRead-only
Get a Volume
Gets a specific Volume object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context beyond the obvious, such as authorization requirements, not-found behavior, 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?
The description is short and front-loaded, but the second sentence ('Gets a specific Volume object.') largely restates the first ('Get a Volume') without adding information, so not 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?
For a simple read-by-ID tool, annotations cover the safety profile and the schema fully documents the single parameter. However, with no output schema, the description could say more about what a Volume object contains or how errors are returned; it is minimally adequate but not 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?
With one parameter and 100% schema description coverage, the schema already documents the required 'id' parameter. The description's phrase 'specific Volume object' implies lookup by ID but adds no syntax or format 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: 'Get a Volume' and 'Gets a specific Volume object.' This is clear enough for an agent to know it retrieves one volume by ID, but it does not distinguish this tool from sibling retrieval tools like hcloud_list_volumes or hcloud_get_volume_action.
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 hcloud_list_volumes or hcloud_get_volume_action. The word 'specific' hints at single-resource retrieval by ID, but no explicit when/when-not or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_volume_actionARead-only
Get an Action for a Volume
Deprecated: This operation is deprecated, see our changelog for more details.
Returns a specific Action for a Volume.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context with the deprecation notice and changelog link, which an agent would not otherwise know; it does not explain the 'wait' polling semantics, but the schema covers that parameter.
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 deprecation warning before the functional statement, which is the right ordering for an agent deciding whether to call it. Slightly redundant between the heading and 'Returns a specific Action for a Volume', but no 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 getter with full schema coverage and no output schema, the description is adequate. However, it points to a changelog rather than naming the replacement endpoint, leaving the agent without an actionable migration path for a deprecated 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% — both id and action_id are documented, and wait is documented with its polling behavior. The description adds no parameter 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 ('Get an Action for a Volume') and clarifies it returns a specific Action, which distinguishes it from list-style siblings such as hcloud_list_volume_actions. It does not explicitly contrast itself with hcloud_get_action or hcloud_get_volumes_actions_id, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The deprecation notice is a meaningful usage signal (avoid this endpoint), but the description never says when to prefer hcloud_get_action, hcloud_get_volumes_actions_id, or hcloud_wait_action, nor what to migrate to. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_volumes_actionsCRead-only
List Actions
Returns all Action objects. You can sort the results by using the sort URI parameter, and filter them with the status and id parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only that results can be sorted and filtered by status/id, which is largely restating the schema; it says nothing about pagination defaults, result volume, or the scope of the underlying action set.
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 verb and resource, no filler. The only real weakness is that concision is achieved by omitting the one piece of information (scope) that matters most.
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 listing tool amid many near-identical siblings and with no output schema, the description should clarify what action set is returned and how it differs from the global and per-resource listing tools. That disambiguation is entirely 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%, so all five parameters (id, page, sort, status, per_page) are already documented with enums and defaults. The description names sort/status/id but adds no syntax or usage nuance 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?
The description states a verb and resource ("List Actions ... Returns all Action objects") but never scopes it to volumes, even though the tool name and siblings (hcloud_list_actions, hcloud_list_volume_actions) imply a volume-specific subset. An agent cannot tell from the text whether this returns all actions globally or only those related to volumes.
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 hcloud_list_actions, hcloud_list_volume_actions, or hcloud_get_volumes_actions_id. The description offers only generic filter/sort advice, not selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_volumes_actions_idCRead-only
Get an Action
Returns a specific Action object.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds nothing beyond them — notably it is silent on the `wait` parameter's default-true polling behavior (that the call blocks until the action succeeds, errors, or times out), which is the most consequential runtime trait 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?
It is short and front-loaded, which is good, but the second sentence ('Returns a specific Action object.') simply rephrases the first and consumes half the text. There is no bloat, but also no information density.
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?
Only two parameters and full schema coverage keep the burden light, and no output schema exists to explain. Still, for a tool whose name implies a resource scope the description never names (volumes) and whose `wait` behavior affects blocking, the description leaves out the two things an agent most needs.
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` ('ID of the Action') and `wait` ('Poll the resulting action until success/error or timeout') are already documented in the schema. The description adds no meaning beyond it, 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 restates the name and OpenAPI summary: 'Get an Action' / 'Returns a specific Action object.' It never states that the Action is scoped to a volume, nor how it differs from the many near-identical siblings (hcloud_get_servers_actions_id, hcloud_get_networks_actions_id, hcloud_get_floating_ips_actions_id, etc.). An agent cannot distinguish this tool from those siblings based on the description.
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 alternatives. It does not say whether to call this for polling a volume operation versus hcloud_wait_action or hcloud_get_volume_action, nor that it requires an action id obtained from a create/attach/resize call. The description gives no routing signal at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zoneCRead-only
Get a Zone
Returns a single Zone.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that — no mention of error behavior for missing zones, lookup semantics, or what a not-found response 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 short sentences with the core action front-loaded. The markdown anchor link ("[Zone](#tag/zones)") is a documentation artifact that adds no value for an agent, which is the only 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?
For a simple single-resource read tool with full schema coverage and annotations, the description is minimally sufficient. Without an output schema, though, the agent gets no sense of the returned Zone's fields or shape beyond the word "Zone."
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 parameter is documented as "ID or Name of the Zone." The description adds no 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?
"Get a Zone" names a specific verb and resource, and the second sentence confirms it returns a single Zone rather than a list. However, it offers no explicit differentiation from siblings like hcloud_list_zones, hcloud_get_zone_zonefile, or hcloud_get_zone_rrsets.
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 hcloud_list_zones or the various zone sub-resource getters. The only implicit cue is the word "single," which the agent must infer distinguishes it from list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zone_actionARead-only
Get an Action for a Zone
Deprecated: This operation is deprecated, see our changelog for more details.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll the resulting action until success/error or timeout. | |
| action_id | Yes | ID of the Action. | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds a genuinely important behavioral trait the annotations cannot express: the endpoint is deprecated as of 2026-04-30. It stops short of naming the replacement endpoint, which would have made this 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?
Very short and front-loaded: the deprecation warning appears before the functional sentence, so an agent reading top-down sees the caveat first. The markdown header and link formatting are slightly noisy but cost 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 read-only single-resource fetch with full schema coverage and no output schema, most of what an agent needs is present. The notable gap is that the deprecation is announced without an in-context replacement, leaving the agent without an actionable migration path.
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_or_name, action_id, and the wait/polling flag are all documented in the schema. The description adds no 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 and resource: returns a single specific Action for a Zone, as opposed to listing them. This separates it from hcloud_list_zone_actions and hcloud_get_zones_actions_id, though it never names those siblings explicitly or explains how the 'specific by action_id' variant differs from the collection endpoints.
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 deprecation banner implies 'prefer something else', but the replacement is left as an external changelog link, so an agent gets no in-description guidance on when to use this versus hcloud_get_action or hcloud_list_zone_actions. Usage is only implied by the resource-specific naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zone_rrsetARead-only
Get an RRSet
Returns a single RRSet from the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/destructive, so the description's added value is the primary-mode precondition and the concrete 422 `incorrect_zone_mode` failure mode, which an agent cannot get from annotations. It stops short of describing return shape or lookup semantics, but the disclosed constraint is meaningful 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?
Front-loaded with the verb+resource and the key mode restriction within the first three short lines. The error table adds formatting weight but only one row is relevant, so there is minor bloat.
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?
A three-required-param read tool with no output schema is mostly adequately described, and the mode caveat covers the main failure mode. It still doesn't indicate what identifiers resolve against (id_or_name scope) or what the returned RRSet contains, which would matter for an agent consuming the result.
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 non-trivial rr_name casing/Punycode/apex rules and the rr_type enum, so the schema does all the parameter work. The description adds no parameter-level meaning 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?
States a specific verb+resource ("Get an RRSet") and clarifies it returns a single RRSet from a Zone, which implicitly separates it from the list sibling hcloud_get_zone_rrsets. Sibling differentiation is implied by "single" rather than stated explicitly, so it falls 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?
"Only applicable for Zones in primary mode" is a real usage constraint and the only conditional guidance present. However, it does not name what to do otherwise (e.g., use zonefile/records endpoints or the plural list tool), leaving the agent to infer the alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zone_rrsetsARead-only
List RRSets
Returns all RRSets in the Zone.
Use the provided URI parameters to modify the result.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| type | No | Filter resources by their type. May be used multiple times. The response will only contain resources matching the specified types. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| id_or_name | Yes | ID or Name of the Zone. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered by structured data. On top of that the description adds the primary-mode restriction and the specific 422/incorrect_zone_mode failure mode, which is genuine extra context. It stays vague about the exact pagination/sorting semantics, deferring to 'Use the provided URI parameters'.
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 lead sentence is well front-loaded, but the body is padded with markdown anchor links (#tag/zone-rrsets, #tag/zones) that add no information for an agent. The error table is only one row and arguably earns its place, but 'Use the provided URI parameters to modify the result' is 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?
There is no output schema, so the description must carry the return-value burden, and it only says it returns 'all RRSets in the Zone' without describing the RRSet shape (records, ttl, labels, protection) or how pagination metadata is returned. Combined with the missing tie-break against hcloud_get_zone_rrset, it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (name, page, per_page, sort, type, label_selector, id_or_name) is already documented in the schema with enums, defaults and bounds. The description adds nothing beyond 'Use the provided URI parameters to modify the result', 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 RRSets / Returns all RRSets in the Zone'), scoped to a single zone, which cleanly separates it from the singular hcloud_get_zone_rrset. It never names the sibling explicitly, so an agent must infer the list-vs-single split from the plural 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?
'Only applicable for Zones in primary mode' gives a real precondition, reinforced by the 422 incorrect_zone_mode error row, so the agent knows when the call will fail. It stops short of routing the agent to alternatives such as hcloud_get_zone_rrset for a single RRSet or hcloud_post_zone_rrsets for creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zones_actionsBRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds that the unfiltered call returns ALL zone actions (a potentially large result set) but says nothing about pagination defaults, sort order, or rate limits beyond what the schema already documents.
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 lines, front-loaded with the verb and resource, with no redundant prose. Minor noise from anchor-style markdown links ([Zone](#tag/zones), [Actions](#tag/actions)) that carry no meaning 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?
There is no output schema and no annotation gaps, and all five optional parameters are documented in the schema, so the basics are covered. What is missing is the context that matters with so many similarly named action-listing siblings: which one to call, and whether results are paginated by default.
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, status, sort, page and per_page are all fully documented in the schema. The description's only contribution is the generic phrase "URI parameters," which adds no semantics beyond the schema and is arguably imprecise for query 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 ("List Actions ... Returns all Zone Actions"), so an agent knows this retrieves the action history for the zones resource. It does not distinguish itself from closely named siblings such as hcloud_list_zone_actions or hcloud_get_zones_actions_id, leaving the agent to guess which listing endpoint applies.
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 "Use the provided URI parameters to modify the result," which restates that filtering exists without saying when to filter, when to use this over the per-ID or generic action tools, or what happens with no parameters. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_get_zones_actions_idCRead-only
Get an Action
Returns a specific Action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Action. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond them — no mention of the zone scoping, no mention of what the returned Action represents, and no note about the wait/polling semantics. It merely restates the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the heading "Get an Action" and the sentence "Returns a specific [Action]" are near-duplicates that add no information. Brevity here reflects under-specification rather than disciplined editing.
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 at least say what an Action object represents and that this endpoint is zone-scoped. Instead it omits both the return shape and the scoping context, leaving an agent unable to distinguish this call from the generic action endpoints.
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 schema documents both id ("ID of the Action") and wait ("Poll the resulting action until success/error or timeout"). The description adds no parameter meaning beyond that, 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 verb and resource ("Get an Action", "Returns a specific Action"), so the basic operation is understandable. But it never mentions that this is the zone-scoped action endpoint, and it is indistinguishable from siblings such as hcloud_get_action, hcloud_get_zone_action, and hcloud_get_zones_actions. With ~150 siblings, the missing scope qualifier is a real gap.
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 the many alternatives (hcloud_get_action for generic action lookup, hcloud_get_zone_action, hcloud_get_zones_actions for listing). The agent is left to infer the selection rule 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.
hcloud_get_zone_zonefileARead-only
Export a Zone file
Returns a generated Zone file in BIND (RFC 1034/1035) format.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds real value beyond them: what is actually produced (a generated BIND-format zone file), the primary-mode restriction, and the specific failure mode with its HTTP status and error code. No mention of size limits or download mechanics, but the behavioral core is covered.
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 core behavior and format are front-loaded in the first two sentences, and the mode restriction follows. The error table plus inline markdown anchor/link syntax adds some noise but each block carries distinct, useful 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?
With no output schema, the description compensates by naming the return value and its format, and it documents the one realistic failure condition. For a single-parameter read operation this is close to fully sufficient; only download/encoding details are 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 the single parameter id_or_name is fully described in the schema as "ID or Name of the Zone." The description adds nothing about the parameter, 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 ("Export a Zone file") and specifies the exact output format (BIND RFC 1034/1035). It is clearly distinct from the inverse sibling hcloud_zone_import_zonefile_action, 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?
Gives a hard precondition: "Only applicable for Zones in primary mode," reinforced by the 422 incorrect_zone_mode error row. It doesn't name an alternative tool for secondary-mode zones, but the applicability constraint is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_image_change_protection_actionBDestructive
Change Image Protection
Changes the protection configuration of the Image. Can only be used on snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is known. The description adds the snapshot-only scope, but does not disclose that disabling protection enables subsequent deletion of the snapshot, nor that the call produces a pollable action (relevant given the 'wait' parameter defaulting to true). Useful but not rich 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?
Two short sentences, front-loaded with the action and scope constraint; nothing wasted. The heading 'Change Image Protection' lightly duplicates the tool name rather than adding 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 with nested body, no output schema, and annotations covering safety, the definition is minimally sufficient. It leaves out the snapshot-only failure mode's consequence and the fact that the returned action can be polled via 'wait' or hcloud_wait_action, which an agent needs to sequence calls 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 coverage is 67%: 'id' and 'wait' are documented in the schema, and 'body.delete' carries its own description ('prevents the snapshot from being deleted'). The description adds only the framing that the body controls 'protection configuration'; it says nothing about the wait/polling behavior or defaults beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Changes the protection configuration') and resource ('the Image'), which cleanly separates it from hcloud_update_image, hcloud_delete_image, and the other *_change_protection_action siblings. It also adds an eligibility constraint ('Can only be used on snapshots'), though it doesn't name any sibling it replaces.
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 'Can only be used on snapshots' is a real precondition that prevents a failed call against a non-snapshot image. However, there is no guidance on when to reach for this versus hcloud_update_image, nor on how to revert protection, so usage is only implied beyond that one eligibility rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_actionsARead-only
Get multiple Actions
Returns multiple Action objects specified by the id parameter.
Note: This endpoint previously allowed listing all actions in the project. This functionality was deprecated in July 2023 and removed on 30 January 2025.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Filter the actions by ID. May be used multiple times. The response will only contain actions matching the specified IDs. | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, non-destructive operation. The description adds useful behavioral context by disclosing that the old list-all behavior was removed in January 2025, preventing a critical misuse. It does not mention authentication needs, rate limits, or pagination behavior despite the auto_paginate parameter.
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 is mostly efficient. The deprecation note is valuable, though the two changelog URLs are more verbose than strictly necessary for an agent to invoke the tool correctly.
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 annotations covering safety, the description is complete enough to call correctly: it makes clear that IDs are required and that listing all actions is no longer supported. It could be slightly more complete by routing among the many action-related 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?
Schema description coverage is 100%, so the schema already documents the `id` and `auto_paginate` parameters in detail. The description restates that actions are specified by `id` but adds no meaning beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get multiple Actions' and 'Returns multiple Action objects specified by the `id` parameter.' It clearly scopes the operation to IDs rather than listing everything, but it does not explicitly distinguish itself from sibling tools like hcloud_get_action or the resource-specific list_*_actions 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?
Usage is implied by the requirement to supply IDs and by the note that listing all actions was deprecated and removed. However, the description does not explicitly state when to use this tool versus hcloud_get_action for a single ID or hcloud_list_server_actions for server-scoped actions, nor does it name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_certificate_actionsARead-only
List Actions for a Certificate
Returns all Action objects for a Certificate. You can sort the results by using the sort URI parameter, and filter them with the status parameter.
Only type managed Certificates can have Actions. For type uploaded Certificates the actions key will always contain an empty array.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the managed-vs-uploaded constraint and what the `actions` key contains in the empty case. It does not describe pagination or default ordering behavior, which keeps it below 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?
The opening line states the operation up front, followed by return content, filtering notes, and the key constraint. There is minor redundancy between the first line and 'Returns all Action objects for a Certificate', but no sentence 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 must convey return shape, and it does: all Action objects for the certificate, with an explicit note that the `actions` array is empty for uploaded certificates. For a read-only list tool with fully documented parameters, this is nearly complete; only ordering/pagination behavior is left implicit.
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, page, sort, status, per_page, and auto_paginate — baseline 3 applies. The description reinforces that `sort` and `status` exist but adds no syntax or semantics beyond what the schema's enums and descriptions already provide.
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 and resource ('List Actions for a Certificate', 'Returns all Action objects for a Certificate'), making the operation unambiguous. It does not explicitly distinguish itself from near-duplicate siblings such as hcloud_get_certificate_action (single action) or hcloud_get_certificates_actions, leaving that separation 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?
It gives clear usage context and a meaningful exclusion: only `managed` certificates have actions, while `uploaded` ones always return an empty array — an agent can use this to avoid a pointless call. It stops short of naming alternative tools for the single-action or account-wide cases, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_certificatesCRead-only
List Certificates
Returns all Certificate objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| type | No | Filter resources by type. May be used multiple times. The response will only contain the resources with the specified type. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only 'Returns all Certificate objects', which is slightly misleading given the 7 filtering/pagination parameters and auto_paginate soft-cap — it does not disclose pagination behavior, the per_page maximum of 50, or that filters narrow the 'all' result.
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?
Extremely short and front-loaded, which is good, but the second sentence largely restates the title and wastes the only opportunity to add information. It is under-specified rather than efficiently 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 tool with seven optional filter/pagination parameters and no output schema, the description should at least point the agent at the available filters and the auto-pagination default. It leaves the agent to discover all of that from the schema, so the definition is thinner than the tool's complexity warrants.
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 every parameter (name, label_selector, type, sort, page, per_page, auto_paginate) is already documented in the schema and the baseline of 3 applies. The description adds no extra semantics about how filters interact with the 'all' claim.
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 Certificates', 'Returns all Certificate objects'), so an agent knows exactly what resource is being enumerated. It does not distinguish this from the sibling hcloud_get_certificate (single-item fetch) or hcloud_list_certificate_actions, but the list-vs-get distinction is largely carried by the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 hcloud_get_certificate or hcloud_list_certificate_actions, and no mention of preconditions or typical scenarios. Usage must be inferred entirely from the verb 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_datacentersARead-only
List Data Centers
Deprecated: This endpoint is deprecated as of 01 June 2026 and will be removed after 01 October 2026.
Returns all Data Centers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description's added value is the deprecation timeline, which is real and useful; it says nothing about pagination behavior or the auto-merge soft-cap, despite 'Returns all' being dependent on that default.
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 deprecation warning placed prominently before the return statement. The opening 'List Data Centers' line merely restates the tool name, a small amount of waste, but nothing else 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 simple read-only list endpoint with full schema coverage and annotations carrying the safety profile, the description covers purpose and the critical lifecycle status. The only meaningful gap is not pointing at a replacement or sibling resource, which matters given the imminent removal date.
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 five parameters (name, page, sort, per_page, auto_paginate) are already documented in the schema, including defaults and the soft-cap note. The description adds no filter, sort, or pagination semantics 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 and resource ('List Data Centers' / 'Returns all Data Centers'), which cleanly distinguishes it from the singular sibling hcloud_get_datacenter. It does not explicitly name that sibling or contrast with hcloud_list_locations, but the plural-list scope is unambiguous from the name-plus-description pairing.
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 deprecation notice ('deprecated as of 01 June 2026 and will be removed after 01 October 2026') is a genuine when-to-use signal, warning the agent to prefer alternatives for new work. However, no alternative is actually named (e.g. locations vs. datacenters, or a replacement endpoint), so the guidance is implied rather than actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_firewall_actionsCRead-only
List Actions for a Firewall
Returns all Actions for the Firewall.
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds essentially nothing beyond that: it does not mention ordering defaults, the auto-paginate soft-cap behavior, or that only actions scoped to the given firewall are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core operation, with no filler. The trailing sentence about URI parameters is low value but not harmful, so the definition stays tight without being maximally economical.
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 complete schema documentation and annotations, this is close to adequate. What's missing is disambiguation from the singular get_firewall_action and the broad list_actions siblings, plus any hint about the shape of returned actions, which no output schema covers.
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 every parameter (id, page, per_page, sort, status, auto_paginate) is already documented in structured form. The description's only parameter-related sentence points at "URI parameters" without adding format, defaults, or interaction semantics, so it neither helps nor misleads.
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?
"List Actions for a Firewall" states a specific verb (list) and resource (firewall actions), so the operation is unambiguous. It does not, however, distinguish itself from siblings such as hcloud_list_actions, hcloud_get_firewall_action (singular), or hcloud_get_firewalls_actions (plural scope), so an agent must infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use the provided URI parameters to modify the result" is not a when-to-use rule; it restates that filters exist. There is no guidance about when to pick this over hcloud_get_firewall_action for a single action or hcloud_list_actions for a global listing, and no prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_firewallsBRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that all firewalls are returned and that URI parameters can modify the result, but it does not describe pagination behavior, rate limits, or return format beyond "all Firewalls".
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 short and front-loaded with the primary action. The final sentence is vague and arguably redundant with the schema, keeping it from being maximally concise, but there is no bloated prose.
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, annotations covering safety, and the description stating that all firewalls are returned with optional URI filtering, the definition is mostly complete. It does not explain pagination defaults or route the agent away from sibling tools, but an agent can still invoke it correctly from 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 description coverage is 100%, and the schema fully documents all six optional parameters including name, page, sort, per_page, auto_paginate, and label_selector. The description only says "Use the provided URI parameters to modify the result" and adds no parameter-level 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?
The description states a specific verb and resource ("List Firewalls") and explicitly says it "Returns all [Firewalls]", so an agent can tell this is a collection-listing operation. It does not explicitly contrast with hcloud_get_firewall or hcloud_list_firewall_actions, so sibling differentiation is left implicit.
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 to "Use the provided URI parameters to modify the result," but this is operational guidance for filtering, not when-to-use guidance. It never names alternatives like hcloud_get_firewall or hcloud_list_firewall_actions, nor does it state exclusions such as preferring get_firewall for a single known ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_floating_ip_actionsBRead-only
List Actions for a Floating IP
Lists Actions for a Floating IP.
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds little beyond the purpose, confirming it's a read/list operation but not describing the return shape, pagination behavior, or the auto_paginate semantics that matter 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?
It is short and front-loaded, but the first two lines restate each other ('List Actions for a Floating IP' / 'Lists Actions for a Floating IP'), and the final sentence about URI parameters is filler. Some tightening would earn every sentence's 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 annotations covering safety and the schema fully documented, the description covers the basics for a filtered-list tool. However, the lack of differentiation from closely named sibling action-list tools leaves an agent guessing which endpoint to 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 all six parameters (id, page, sort, status, per_page, auto_paginate) are fully documented in the schema. The description's 'use the provided URI parameters' adds no syntax or meaning 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 and resource: 'List Actions for a Floating IP.' The purpose is clear, but it does not distinguish itself from siblings like hcloud_get_floating_ips_actions, hcloud_get_floating_ip_action, or hcloud_get_floating_ips_actions_id, which appear to overlap substantially.
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 'Use the provided URI parameters to modify the result,' which is about parameter usage rather than when to select this tool over alternatives. No when-to-use, exclusions, or named alternatives are given despite many closely related sibling list/get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_floating_ipsBRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns multiple resources and that URI parameters modify results, but it does not describe pagination behavior, auto-pagination semantics, or authentication requirements 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 short and front-loaded with the core operation. However, the first line and second line are repetitive, and 'Use the provided URI parameters to modify the result' is generic filler rather than useful 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 six-parameter list tool with no required parameters, full schema documentation, and safety annotations, the description is minimally adequate. It does not explain return shape or pagination behavior, but the schema covers parameter-level details and no output schema exists to shift that burden.
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 are fully documented in the input schema. The description only vaguely says to use URI parameters to modify results and adds no meaning beyond the schema's parameter documentation, 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?
States a specific verb and resource: 'List Floating IPs' and 'List multiple Floating IPs.' This clearly distinguishes it from single-resource siblings like hcloud_get_floating_ip, though it does not explicitly name alternatives or scope limits.
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 no explicit when-to-use guidance or comparison to alternatives. 'Use the provided URI parameters to modify the result' is vague and does not tell an agent when to choose this over hcloud_get_floating_ip or how to handle filtering/pagination strategically.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_image_actionsARead-only
List Actions for an Image
Returns all Action objects for an Image. You can sort the results by using the sort URI parameter, and filter them with the status parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds only that results are sortable and status-filterable, both of which are restated from the schema, and says nothing about pagination behavior or the default auto_paginate soft-cap merge.
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 operation and the resource scope. No filler, though the second sentence merely repeats schema facts rather than earning 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?
A read-only paginated list endpoint with 100% schema coverage and annotations covering safety: nothing further is required for an agent to invoke it correctly. Return values are self-evident from 'Action objects' and no output schema is needed.
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 params (id, page, per_page, sort, status, auto_paginate) are already documented in the schema. The description mentions only `sort` and `status` and calls them 'URI parameters', which adds nothing beyond the schema and slights the image `id` that drives the call.
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?
Specific verb+resource: lists Action objects scoped to a single Image (required `id`). The phrase 'for an Image' implicitly separates it from hcloud_get_images_actions (all images) and hcloud_get_image_action (single action), but neither sibling is 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?
Usage is only implied: you need an Image ID to poll its async action history. There is no explicit when-to-use statement, no mention of choosing between this and hcloud_get_images_actions or hcloud_list_actions, and no guidance on polling for completion versus hcloud_wait_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_imagesBRead-only
List Images
Returns all Image objects. You can select specific Image types only and sort the results by using URI parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| type | No | Filter resources by type. May be used multiple times. The response will only contain the resources with the specified type. | |
| status | No | Filter resources by status. May be used multiple times. The response will only contain the resources with the specified status. | |
| bound_to | No | Filter Images by their linked Server ID. May be used multiple times. Only available for Images of type `backup`. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| architecture | No | Filter resources by cpu architecture. The response will only contain the resources with the specified cpu architecture. | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". | |
| include_deprecated | No | Include deprecated Images. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds little beyond noting it returns all objects and supports type filtering and sorting; it does not disclose pagination defaults, auto-pagination behavior, or the soft-cap, though those are documented 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?
Two short sentences with no wasted words, front-loaded with the core action and scope. It is appropriately sized for a list tool whose parameters are fully described in the schema.
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 11-parameter list tool with no output schema, the description is adequate but thin. It covers the basic operation and mentions type/sort, but does not mention pagination behavior, return structure, or the breadth of available filters (name, status, architecture, labels, bound_to, include_deprecated).
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 fully documents all 11 parameters. The description reinforces type filtering and sorting, but adds no syntax or format details beyond what the schema already provides. 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?
The description clearly states a verb and resource: 'List Images' and 'Returns all Image objects.' It distinguishes the plural list operation from the singular hcloud_get_image sibling, but does not explicitly name or differentiate itself from hcloud_list_image_actions or other list endpoints.
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 mentions that you can select specific Image types and sort results, but gives no guidance on when to choose this tool over hcloud_get_image, hcloud_list_image_actions, or other list operations. No exclusions or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_isosCRead-only
List ISOs
Returns all available ISO objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| architecture | No | Filter resources by cpu architecture. The response will only contain the resources with the specified cpu architecture. | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| include_architecture_wildcard | No | Include Images with wildcard architecture (architecture is null). Architecture filter must be specified. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds almost nothing beyond that — it says 'Returns all available ISO objects' without disclosing pagination behavior (auto_paginate defaults to true with a soft cap, per_page capped at 50) or that the 'all' result set is actually filterable.
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. The second sentence is nearly redundant with the first, which keeps it just short of a 5, but the definition is not bloated.
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 could reasonably state the return shape or pagination merge behavior, and it could point to hcloud_get_iso as the single-object alternative. The rich schema compensates enough that an agent can call the tool correctly, so this is barely adequate rather than deficient.
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 six parameters (name, architecture, page, per_page, auto_paginate, include_architecture_wildcard) are fully documented in the schema. The description adds no parameter meaning; if anything, 'all available' slightly undersells the name and architecture filters, but it does not conflict with them.
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 ISOs') and restates it as returning ISO objects, so an agent immediately knows the operation. It does not distinguish itself from the sibling hcloud_get_iso or mention that name/architecture filtering is supported, but the list/get distinction is inferable from the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 hcloud_get_iso for a single ISO or hcloud_list_images for a related resource. No prerequisites, exclusions, or alternative routes are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_load_balancer_actionsARead-only
List Actions for a Load Balancer
Returns all Action objects for a Load Balancer. You can sort the results by using the sort URI parameter, and filter them with the status parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds that all Action objects are returned and that sort/status filtering is possible, but it does not add meaningful behavioral detail beyond that, such as pagination behavior or the auto_paginate soft-cap.
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 short, front-loaded, and easy to scan. The first line restates the tool title, and the second line repeats the resource before adding sort and filter information, so there is minor redundancy but no significant 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 read-only list endpoint with full schema coverage and no output schema, the description is largely complete: it identifies the resource, required scope, and available sort/status refinements. It could be stronger by clarifying pagination or how this differs from near-sibling action-listing tools, but the core calling context is present.
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 fully documents id, page, sort, status, per_page, and auto_paginate. The description only mentions sort and status, adding little beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 Action objects for a Load Balancer, scoped by the required id. That scope distinguishes it from global listing tools such as hcloud_list_actions and from single-action retrieval like hcloud_get_load_balancer_action, though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by 'List Actions for a Load Balancer,' and the description notes sorting and status filtering. However, it gives no explicit guidance on when to choose this tool over sibling tools like hcloud_get_load_balancer_action or hcloud_list_actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_load_balancersBRead-only
List Load Balancers
Gets all existing Load Balancers that you have available.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the mild scoping note that results are limited to resources "you have available"; it says nothing about pagination, auto-pagination defaults, or the soft-cap, which are meaningful behaviors for a paged list endpoint.
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, with no filler. It is efficient but borders on under-specification given the tool's filtering and pagination surface.
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 the description does not describe the shape of the returned load balancer objects or pagination metadata. Combined with a six-parameter filtered list endpoint, the description is minimally adequate but leaves notable gaps for an agent relying on it 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 description coverage is 100%, so all six parameters (name, page, sort, per_page, auto_paginate, label_selector) are already documented in the schema. The description adds no additional meaning about filtering or sorting semantics, 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?
The description states a specific verb and resource ("List Load Balancers", "Gets all existing Load Balancers"), which is unambiguous on its own. However, it offers no differentiation from closely related siblings such as hcloud_get_load_balancer, hcloud_list_load_balancer_types, or hcloud_list_load_balancer_actions, so the 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?
There is no guidance on when to use this list tool versus the sibling get/list tools, and no mention of prerequisites, pagination behavior, or filtering expectations. The reader is left to infer usage purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_load_balancer_typesCRead-only
List Load Balancer Types
Gets all Load Balancer type objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that — no note about pagination behavior (auto_paginate merging pages up to a soft cap), result volume, or whether the list is region-independent. It largely repeats the annotation-implied read semantics.
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 short and front-loaded, but the second sentence ('Gets all Load Balancer type objects') is pure redundancy with the first and with the tool name, so not 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?
For a simple, read-only, zero-required-parameter list tool with full schema coverage and annotations, this is minimally adequate. However, with no output schema, the description could clarify what a load balancer type object contains (sizes, supported algorithms, pricing hints) to help an agent decide 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 the schema fully documents name, page, per_page and auto_paginate, making the baseline 3 correct. The description adds no additional meaning — for example, it never says the name filter is an exact match or that results are paginated.
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 name and description both say 'List Load Balancer Types', with a restating second line 'Gets all Load Balancer type objects.' A specific verb+resource is present, but nothing distinguishes it from the sibling hcloud_get_load_balancer_type (singular fetch) — an agent must infer the list-vs-get distinction from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no mention of when to call this instead of hcloud_get_load_balancer_type, no prerequisites, no note that it is a catalog/enumeration lookup typically used to pick a type for hcloud_create_load_balancer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_locationsCRead-only
List Locations
Returns all Locations.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only "Returns all", and even that is ambiguous given the schema's auto_paginate default and soft-cap behavior — it does not clarify whether results are merged pages, sorted order, or rate-limited.
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?
Extremely short and front-loaded, which suits a simple list endpoint. The second sentence largely duplicates the first, so it is efficient but not free of 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 parameterless-by-default list tool with full schema coverage and complete safety annotations, the description is minimally sufficient. It is missing what a Location represents and how results are returned (merged pages vs paginated), which matters because auto_paginate defaults to true.
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 5 optional params, so the schema already documents name filtering, paging, sorting and auto_paginate. The description contributes no additional semantics — notably it does not explain the auto_paginate soft-cap tradeoff, which is the most consequential parameter.
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?
"List Locations / Returns all Locations" identifies the verb and resource but is essentially a restatement of the tool name hcloud_list_locations. It does convey the list-all (non-single) shape, but nothing distinguishes it from siblings such as hcloud_get_location or hcloud_list_datacenters beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 hcloud_get_location (single location by ID/name) or hcloud_list_datacenters, and no prerequisites or exclusions are given. The only implicit cue is "all" in the body text, which the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_network_actionsCRead-only
List Actions for a Network
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world behavior, so the description is not required to restate safety. It adds nothing beyond that: no mention of pagination limits, the soft-cap merge behavior, result ordering, or that a network with no actions returns an empty list. With annotations carrying the safety profile, this is still a bare-bones disclosure.
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 short, but the title is duplicated in the first two lines and the closing sentence is filler. The broken Markdown anchors (#tag/actions) are noise an agent cannot use.
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 filtered-list tool with annotations and a fully documented schema, the description covers the essentials. It is still thin: no output shape, no ordering default, and no guidance on combining status filters with sort, though the absence of an output schema makes some of that forgivable.
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 id, page, per_page, sort, status, and auto_paginate are fully documented in the schema. The description's only reference, "the provided URI parameters," gives no additional 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?
The description states a specific verb and resource (list Actions for a Network), which is enough to separate it from the global hcloud_list_actions, though it never names that sibling explicitly. The heading is repeated verbatim in the body sentence, adding no new 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?
"Use the provided URI parameters to modify the result" is the only usage hint and it points at the schema rather than at a scenario. There is no statement of when to call this versus hcloud_get_network_action, hcloud_get_networks_actions, or hcloud_list_actions, all of which appear in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_networksCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. Beyond that the description adds nothing: it does not mention the pagination soft-cap, how auto_paginate merges pages, default page size, or the exact-match semantics of the name filter.
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 short and front-loaded, but the title line 'List Networks' is redundant with the tool name and the closing sentence about URI parameters is vague filler rather than useful guidance.
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 list endpoint with a fully documented schema and clear read-only annotations, the description is minimally adequate, but it omits any note on pagination behavior (auto_paginate defaults to true, soft-cap) that an agent would want before calling.
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 name, label_selector, page, per_page, sort, and auto_paginate. The description's generic 'URI parameters' sentence adds no meaning 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 states the verb (list) and resource (Networks), and 'List multiple' implicitly distinguishes it from hcloud_get_network for a single entity. However, 'List multiple [Networks]' largely restates the tool name, and it never explicitly contrasts itself with siblings like hcloud_get_network, hcloud_get_network_members, or hcloud_list_networks_actions.
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 usage hint is 'Use the provided URI parameters to modify the result,' which does not say when to use this tool versus related read tools (single-network get, members, actions). No exclusions, prerequisites, or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_placement_groupsCRead-only
List Placement Groups
Returns all Placement Group objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| type | No | Filter resources by type. May be used multiple times. The response will only contain the resources with the specified type. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds nothing beyond that, and 'Returns all Placement Group objects' is mildly misleading given the schema exposes name/type/label_selector filtering and 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?
Very short and front-loaded, but the second sentence is pure restatement rather than adding information, so the brevity reflects under-specification rather than tight editing.
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, paginated list tool with no output schema and default auto-pagination, the description says nothing about return shape, pagination behavior, or filtering, leaving real gaps despite rich annotation coverage on safety.
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 seven parameters (name, page, sort, type, per_page, auto_paginate, label_selector) are already documented in the schema. The description adds no extra meaning, which meets the 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 verb+resource (list Placement Groups) plus a redundant restatement ('Returns all Placement Group objects'). It does not distinguish the tool from the sibling hcloud_get_placement_group (single fetch) or from the other hcloud_list_* tools beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus hcloud_get_placement_group or the many related list tools; no mention of filtering, pagination, or prerequisites. The agent must infer everything from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_primary_ip_actionsBRead-only
List Actions for a Primary IP
Returns all Actions for a Primary IP.
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds that it returns all Actions and that URI parameters can modify the result, but does not cover pagination behavior, autopagination defaults, 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?
The description is short and front-loaded with the primary purpose. The second sentence largely restates the title, and the third is vague, but there is no bloat.
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 a read-only list tool with a fully documented schema and safety annotations, the description covers the essential purpose. It could be improved by distinguishing this from similar list-action tools, but no critical information 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 description coverage is 100%, so the schema already documents every parameter. The description adds only a generic note that URI parameters modify the result, which does not enrich the meaning of specific 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?
The description clearly states a specific verb and resource: list Actions for a Primary IP. It could be confused with similar siblings like hcloud_get_primary_ips_actions or hcloud_list_actions, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides no guidance on when to use this tool versus alternatives such as hcloud_get_primary_ips_actions or hcloud_list_actions. 'Use the provided URI parameters to modify the result' is a hint about parameters but not usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_primary_ipsCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Filter results by IP address. | |
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, open-world, and non-destructive behavior. The description adds only a generic note about URI parameters and does not disclose return behavior, pagination semantics, or filtering behavior beyond what the schema already provides.
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 brief and front-loads the core purpose. However, it spends lines repeating the same idea ("List Primary IPs" then "List multiple Primary IPs") and includes a mostly generic sentence about URI 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?
The tool has no output schema and seven fully documented input parameters. The description does not explain the response shape or how auto-pagination behaves, but for a simple list operation the schema plus annotations cover most of what an agent needs.
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 seven parameters in detail. The description merely says URI parameters modify the result and adds no meaningful syntax, filtering, or pagination semantics 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?
The description clearly states a specific verb and resource: "List Primary IPs" / "List multiple Primary IPs." It is distinguishable from the singular sibling `hcloud_get_primary_ip`, but it does not explicitly name or differentiate itself from related tools such as `hcloud_get_primary_ip` or `hcloud_list_primary_ip_actions`.
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 "Use the provided URI parameters to modify the result," which does not explain when to use this tool versus `hcloud_get_primary_ip` or other primary-IP-related siblings. There are no exclusions or selection criteria provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_server_actionsBRead-only
List Actions for a Server
Returns all Action objects for a Server. You can sort the results by using the sort URI parameter, and filter them with the status parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds that sort and status narrow the result set, but says nothing about pagination behavior, the auto_paginate soft-cap merging, or result volume — and "Returns all Action objects" is mildly at odds with the per_page default of 25 that the schema exposes.
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 resource scope front-loaded and no filler. The first line slightly restates the title before the more informative second sentence, which is the only inefficiency.
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 listing tool with full schema coverage and annotations, the description is minimally sufficient. It omits any characterization of the returned Action objects and pagination semantics, and provides no sibling disambiguation despite an extremely crowded action-listing namespace.
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 parameters are fully documented in the schema and baseline 3 applies. The description only echoes `sort` and `status` and adds no semantics for `id`, `page`, `per_page`, or the non-obvious `auto_paginate` 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 ("List Actions for a Server") and scopes it to a single server via the required `id`. It does not distinguish itself from the many action-listing siblings such as hcloud_get_servers_actions (multi-server) or hcloud_list_actions (global), which an agent could easily confuse with this 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?
Usage is only implied by the name and the mention of sort/status. There is no statement of when to prefer this over hcloud_get_servers_actions, hcloud_list_actions, or hcloud_get_server_action, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_serversARead-only
List Hetzner Cloud servers. Hand-tuned wrapper around GET /servers with an optional client-side name_contains filter and a default sort of 'name'. Use hcloud_list_servers_raw for the unfiltered, generator-built tool.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| sort | No | name | |
| per_page | No | ||
| name_contains | No | Case-insensitive substring filter applied after fetching. | |
| label_selector | No | Hetzner label selector, forwarded as query parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/destructive/openWorld, so the bar is lower, and the description still adds real behavioral detail: name_contains is applied client-side after fetching, sort defaults to 'name', and the underlying call is GET /servers. It stops short of explaining how post-fetch filtering interacts with pagination (each page filtered independently), which is the one behavior an agent could get wrong.
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, purpose first, the filter/sort behavior second, the sibling routing last — nothing redundant and 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 five optional parameters, no output schema, and no pagination guidance, an agent still doesn't know the response shape or whether results are paginated beyond per_page's max of 50. The description is adequate for selection but thin for correct invocation of the paging path.
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 only 40%, and the description reinforces the two fields the schema already describes (name_contains as a client-side filter, sort's 'name' default) while leaving page and per_page completely undocumented in both places. Helpful but not compensating for the coverage gap.
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 Hetzner Cloud servers") and immediately distinguishes itself from the sibling hcloud_list_servers_raw by naming the divergence (hand-tuned vs generator-built). An agent can pick between the two 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?
Explicitly routes the agent: use the raw sibling for unfiltered output, this one for the filtered/sorted variant. It doesn't cover when to prefer label_selector over name_contains, but the core alternative is named with a condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_servers_rawCRead-only
List Servers
Returns all existing Server objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter resources by status. May be used multiple times. The response will only contain the resources with the specified status. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds nothing beyond restating the name——it does not disclose what "raw" means (raw API payload vs. normalized objects), nor the auto_paginate soft-cap behavior that determines whether "all" servers are actually returned.
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 operation. The second sentence is largely redundant with the first, but there is no padding or noise.
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 list tool with no output schema, no annotation gaps but a confusing "_raw" variant amid many list/get siblings, the description should clarify response shape and sibling selection. It does neither, leaving the agent to infer the distinction entirely.
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, status, sort, page, per_page, label_selector, and auto_paginate are all documented in the schema. Baseline 3 applies; the description contributes no additional parameter semantics (e.g., label selector syntax or the interaction between auto_paginate and per_page).
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 clear verb and resource ("List Servers ... Returns all existing Server objects"), so the basic operation is understandable. However, it never explains the "_raw" qualifier or how this differs from the sibling hcloud_list_servers and hcloud_get_server_raw, which is the main thing an agent needs to disambiguate 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?
There is no when-to-use guidance, no exclusions, and no mention of alternatives. With a near-identical sibling (hcloud_list_servers) present, the description leaves the agent with no basis for choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_server_typesCRead-only
List Server Types
Gets all Server type objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing further — it doesn't mention that auto_paginate defaults to true, that results are capped at 50 per page, or what the returned type objects contain.
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 very short and front-loaded, but the second line 'Gets all Server type objects' is largely redundant with the title and name. There's no waste, but also almost no substance.
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 annotations, the minimum is met. However, pagination behavior (a non-obvious auto_paginate default that silently merges pages) is left entirely undocumented in the description.
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 four parameters are fully documented in the schema. The description adds no syntax or filtering 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 a specific verb ('List'/'Gets all') and resource ('Server type objects'), so an agent can tell it apart from the singular hcloud_get_server_type and from unrelated list tools. It stops short of any explicit sibling differentiation, but the resource noun does most of the work.
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 indication of when to use this versus hcloud_get_server_type or hcloud_list_servers, and no prerequisites or exclusions are given. 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.
hcloud_list_ssh_keysBRead-only
List SSH keys
Returns all SSH key objects.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| fingerprint | No | May be used to filter SSH keys by their fingerprint. The response will only contain the SSH key matching the specified fingerprint. | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that all SSH key objects are returned, without explaining pagination behavior, default auto-pagination, or filtering effects. With annotations carrying the main behavioral burden, this is adequate but thin.
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 very short and front-loaded with the core action. The second sentence, 'Returns all SSH key objects,' is somewhat redundant but does clarify the return scope. It avoids unnecessary text.
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 seven optional filtering and pagination parameters, and no output schema. The description says all SSH key objects are returned but does not mention filtering, sorting, or the auto-paginate default, leaving the agent to rely entirely on the schema. Annotations cover safety, but the description could do more for a list tool with this many optional parameters.
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 seven parameters are already documented in the input schema. The description adds no parameter semantics beyond saying all objects are returned. 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?
The description states a specific verb and resource: 'List SSH keys' and 'Returns all SSH key objects.' This clearly distinguishes it from mutating siblings such as hcloud_create_ssh_key or hcloud_delete_ssh_key. It does not explicitly differentiate from hcloud_get_ssh_key, but the list-vs-get distinction is clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 hcloud_get_ssh_key or other list tools. It also does not mention whether filtering via the available schema parameters is expected. Usage is only implied by the word 'List'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_volume_actionsARead-only
List Actions for a Volume
Returns all Action objects for a Volume. You can sort the results by using the sort URI parameter, and filter them with the status parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds only that all actions are returned and that sort/status may be applied, without covering pagination behavior, response shape, or whether the volume 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?
Two short sentences with the purpose front-loaded, and the filtering/sorting capability stated immediately after. Slight redundancy in 'List Actions for a Volume' followed by 'Returns all Action objects for a Volume', but no wasted prose.
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 full schema coverage and annotations covering safety, the description is largely sufficient. The remaining gap is that it does not describe what an Action object contains or how auto_paginate affects results, but no output schema exists to defer to.
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 sort, status, page/per_page and auto_paginate are already documented in the schema. The description merely echoes that sort and status exist, adding no semantics beyond the structured fields; 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 Actions for a Volume') and clarifies the return ('all Action objects for a Volume'). It is distinguishable from hcloud_get_volume_action (single action) by the plural/scope, 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?
Usage is only implied: sort and status are mentioned as available controls, but there is no statement of when to prefer this over hcloud_list_actions (global) or hcloud_get_volume_action (one action), and no prerequisites given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_volumesCRead-only
List Volumes
Gets all existing Volumes that you have available.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter resources by status. May be used multiple times. The response will only contain the resources with the specified status. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond them — notably it never mentions that auto_paginate defaults to true and merges pages up to a soft cap, which is a real behavioral trait an agent should know before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded with the operation name, which is good, but the second sentence is pure redundancy with the first and with the tool name. Every sentence should earn its place, and this one does not.
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?
A seven-parameter list tool with an output-less schema and default auto-pagination deserves at least a note on what a Volume record contains and how pagination behaves. The description covers neither, leaving the agent to reverse-engineer behavior from parameter defaults.
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 seven parameters (name, status, label_selector, sort, page, per_page, auto_paginate) are documented in the schema itself; this sets the baseline of 3. The description adds no meaning about filtering combinations or sort behavior 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 the verb 'List' and the resource 'Volumes', so the basic operation is identifiable, but the second sentence ('Gets all existing Volumes that you have available') merely restates the name and adds no scope, differentiation, or detail. It does not distinguish this from siblings like hcloud_get_volume (single fetch) or hcloud_list_volume_actions.
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 hcloud_get_volume or hcloud_list_volume_actions, and no mention of prerequisites, filtering strategy, or the pagination defaults that materially affect usage. The intended use is only inferable from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_zone_actionsBRead-only
List Actions for a Zone
Returns all Actions for a Zone.
Use the provided URI parameters to modify the result.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort actions by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| status | No | Filter the actions by status. May be used multiple times. The response will only contain actions matching the specified statuses. | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| id_or_name | Yes | ID or Name of the Zone. | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns all Actions for a Zone and that URI parameters modify results, but it omits pagination behavior, auto-pagination soft-cap effects, filtering/sorting behavior, and response characteristics.
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 short and front-loads the core purpose: listing Actions for a Zone. The final sentence about URI parameters is weak filler, but overall the definition is appropriately sized with no major structural issues.
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 operation with full schema coverage and annotations, the description is mostly adequate. However, because there are many action-list siblings and no output schema, it should clarify pagination/auto_paginate behavior or when to choose this endpoint over broader action-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 the schema already documents id_or_name, page, per_page, sort, status, and auto_paginate in detail. The description only refers generically to "URI parameters" and adds no meaning beyond the schema, so the baseline score 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 states a specific verb and resource: it lists Actions for a Zone and says it returns all Actions for a Zone. This is clearer than a tautology, but it does not distinguish this tool from close siblings such as hcloud_get_zones_actions or hcloud_list_actions.
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 guidance on when to use this tool instead of hcloud_list_actions, hcloud_get_zones_actions, or hcloud_get_zone_action. The only usage-like sentence, "Use the provided URI parameters to modify the result," does not explain selection criteria, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_list_zonesCRead-only
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Filter resources by their mode. The response will only contain the resources matching exactly the specified mode. | |
| name | No | Filter resources by their name. The response will only contain the resources matching exactly the specified name. | |
| page | No | Page number to return. For more information, see "[Pagination](#description/pagination)". | |
| sort | No | Sort resources by field and direction. May be used multiple times. For more information, see "[Sorting](#description/sorting)". | |
| per_page | No | Maximum number of entries returned per page. For more information, see "[Pagination](#description/pagination)". | |
| auto_paginate | No | Auto-merge all pages up to the soft-cap. Set false to use raw page/per_page. | |
| label_selector | No | Filter resources by labels. The response will only contain resources matching the label selector. For more information, see "[Label Selector](#description/label-selector)". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds no behavioral context beyond what annotations and the schema provide, such as pagination merging via auto_paginate or filtering 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?
The description is short and front-loaded, with no wasted prose. However, "Returns all [Zones]" largely restates "List Zones", and the final sentence is generic rather than informative.
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 list tool with zero required parameters, rich schema documentation, and annotations covering safety, the description is minimally adequate. It omits mention of filtering, sorting, and pagination behavior, though those details are available in 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%, so the seven parameters are fully documented in the input schema. The description says URI parameters modify the result but adds no parameter-specific meaning 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 Zones" and "Returns all [Zones]". This clearly distinguishes it from single-resource siblings such as hcloud_get_zone, though it does not explicitly name 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?
It gives no guidance on when to use this tool versus hcloud_get_zone or hcloud_list_zone_actions. The only usage-like sentence, "Use the provided URI parameters to modify the result", is generic and does not explain selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_add_service_actionB
Add Service
Adds a service to a Load Balancer.
Operation specific errors
Status | Code | Description |
|
| The source port you are trying to add is already in use |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a non-destructive, open-world mutation, so the safety profile is covered. The description adds one valuable operational fact - the 412 source_port_already_used error - but says nothing about the asynchronous action model, whether wait defaults to true, or what state the Load Balancer is left in 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?
The content is front-loaded and short: a one-line statement of purpose followed by an error table. The redundant 'Add Service' heading is minor waste but the rest 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 mutation tool with three parameters and no output schema, the description covers the happy path and one error but omits the action/polling semantics implied by the wait parameter, return shape, and any constraints on combining protocol and health_check settings. 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 67%, so many field meanings are already documented. The description adds only the source-port conflict hint, which maps loosely to listen_port; it says nothing about the body's required protocol, destination_port, health_check, or the wait parameter's polling behavior.
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: 'Adds a service to a Load Balancer.' That is unambiguous and lets an agent distinguish it from siblings like update_service or delete_service by implication, though it never names them 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 guidance on when to use this versus hcloud_load_balancer_update_service_action or hcloud_load_balancer_delete_service_action, nor any prerequisites such as needing an existing Load Balancer or listeners. The agent must infer the use case from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_add_target_actionB
Add Target
Adds a target to a Load Balancer.
Operation specific errors
Status | Code | Description |
|
| The IP you are trying to add does not belong to the vswitch subnet of the attached network |
|
| The IP you are trying to add as a target is not owned by the Project owner |
|
| The specified IP is neither the Primary IPv4 address nor in the IPv6 subnet of the given Server |
|
| The Load Balancer's public network interface is disabled |
|
| The Load Balancer is not attached to a network |
|
| The given IP is private but attached network does not have a vswitch subnet |
|
| The server you are trying to add as a target is not attached to the same network as the Load Balancer |
|
| The server that you are trying to add as a public target does not have a public IPv4 address |
|
| The Load Balancer target you are trying to define is already defined |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 profile is known. The error table adds real value by enumerating the constraint states that cause failure (ip_not_owned, load_balancer_not_attached_to_network, target_already_defined). However, it does not explain the returned action object, the effect of the wait flag, or whether re-adding a removed target behaves differently.
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 purpose is front-loaded in one sentence, which is good. The nine-row error table dominates the description and is largely reference material that could be deferred to documentation; it earns its place only partially.
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 should say what the call returns (an action object) and how the wait parameter changes behavior. It covers failure modes well but leaves the success path and the relationship between target types (server/label_selector/ip) unexplained.
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 67%, which is moderate, and the schema itself documents id, body, and wait thoroughly. The description adds no parameter-level meaning directly, though the error codes (ip_not_in_vswitch_subnet, ip_not_assigned_to_server) implicitly reinforce the semantics of the ip and server target fields.
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: "Adds a target to a Load Balancer." An agent can tell what it does immediately. It does not distinguish itself from the sibling hcloud_load_balancer_remove_target_action or hcloud_load_balancer_add_service_action, 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 explicit guidance on when to use this tool versus alternatives such as remove_target or add_service. The 422 error table implies preconditions (LB attached to network, public interface enabled, server on same network), but these are failure modes rather than usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_attach_to_network_actionB
Attach a Load Balancer to a Network
Attach a Load Balancer to a Network.
Operation specific errors
Status | Code | Description |
|
| The Load Balancer is already attached to a network |
|
| The provided Network IP is not available |
|
| No Subnet or IP is available for the Load Balancer within the network |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description goes beyond that by enumerating the three operation-specific 422 failure modes (already attached, IP unavailable, no subnet available), which is real behavioral context an agent cannot get from 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?
The heading line is immediately repeated verbatim in the body, wasting the front-loaded position. The error table is dense and useful, but the lead-in should have carried the operation semantics instead of a duplicate sentence.
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 the tool performs a mutation, so the description should mention that it returns an action, how to poll it (the wait parameter), or side effects on the LB's existing networking. Only failure modes are covered; the success path and resulting state are left implicit.
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 67% with the nested body properties (ip, network, ip_range) all documented inline, so the schema does most of the work. The description adds nothing about parameter meaning, auto-assignment behavior, or the wait/polling tradeoff, which is acceptable at this coverage level but not valuable.
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?
A specific verb (Attach) plus resource (Load Balancer) with the destination (Network) named, so the operation is unambiguous. However, it never distinguishes itself from close siblings such as hcloud_load_balancer_detach_from_network_action or hcloud_server_attach_to_network_action, and the first line is just the title restated.
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 when-to-use guidance, no prerequisites (e.g. the network must exist, the LB must not already be attached), and no pointer to the detach counterpart. 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.
hcloud_load_balancer_change_algorithm_actionBDestructive
Change Algorithm
Change the algorithm that determines to which target new requests are sent.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | Algorithm of the Load Balancer. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, destructive, open-world mutation. The description adds a small but real behavioral note — that only the routing of *new* requests is affected, implying existing connections are untouched. It does not mention that the change returns an async action, nor how the `wait` polling behaves.
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, no filler. It could go further in the same space (e.g., naming the two algorithm options) 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?
Adequate for a simple one-field mutation whose schema is fully documented, but it omits the asynchronous action return and the meaning of the default `wait: true` polling — the main thing an agent needs to know before invoking this on a live load balancer.
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%: the `body.type` enum (round_robin, least_connections), the `id`, and the `wait` polling flag are all documented in-schema. The description adds nothing about parameter values or formats, 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 ('Change the algorithm') and clarifies the effect: it determines which target receives new requests. This distinguishes it from other 'change_*' load balancer siblings (change_type, change_protection, change_dns_ptr) without naming them 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 pick this over alternatives such as hcloud_load_balancer_update_service_action or hcloud_update_load_balancer, nor on prerequisites (existing LB, valid balancing state, no in-flight drain concerns). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_change_dns_ptr_actionBDestructive
Change reverse DNS entry for this Load Balancer
Changes the hostname that will appear when getting the hostname belonging to the public IPs (IPv4 and IPv6) of this Load Balancer.
Floating IPs assigned to the Server are not affected by this.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 mutation and irreversibility profile is known. The description usefully adds scope detail — it changes PTR records for the load balancer's public IPv4 and IPv6 addresses and leaves floating IPs untouched — but says nothing about the async action returned, whether the operation is reversible, or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, with the core action stated first and the clarifying scope detail second. The final sentence is slightly muddled — it refers to 'the Server' rather than the Load Balancer, which reads as boilerplate carried over from a sibling 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?
There is no output schema, so the description could have explained that an action object is returned and how polling with 'wait' behaves, but it does not. The scope of affected IPs is covered, yet details an agent needs before invoking a destructive async endpoint are 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 67% and the nested body documents 'ip' and 'dns_ptr' including the null-reset behavior, so the schema does most of the work. The description only contributes the fact that both IPv4 and IPv6 public addresses are in scope; it adds nothing about the 'wait' flag or the required load balancer '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?
The first sentence names a specific verb and resource ('Change reverse DNS entry for this Load Balancer') and the second clarifies that it alters the PTR hostname for the Load Balancer's public IPv4/IPv6 addresses. This is enough to distinguish it from the similarly named server, floating IP and primary IP DNS-PTR siblings, though the description never explicitly contrasts 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 only implied: the tool is the way to set reverse DNS for a load balancer's public IPs. There is no statement of when to prefer it over hcloud_server_change_dns_ptr_action or hcloud_floating_ip_change_dns_ptr_action, no prerequisites, and no mention of how it relates to the optional 'wait' polling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_change_protection_actionCDestructive
Change Load Balancer Protection
Changes the protection configuration of a Load Balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered. The description adds nothing beyond that: it does not explain that this only toggles delete protection, whether changes are reversible, or that the call returns a pollable 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?
The description is short and front-loaded, but the first sentence duplicates the title and the second sentence paraphrases it. Almost no information is added per sentence.
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 a nested body and no output schema, the description should clarify what is being protected, that the result is an async action, and how wait interacts with it. None of that is present.
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 67%, and the description contributes no parameter meaning at all. With partial coverage and no compensating text, the agent must rely entirely on the schema for id, body.delete, and wait.
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 verb and resource ('changes the protection configuration of a Load Balancer'), but it largely restates the tool name and title. It does not say which protection (delete protection only) or distinguish itself from hcloud_update_load_balancer or the many sibling change_protection tools for other resources.
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 or when-not-to-use guidance is given. There is no mention of alternatives such as hcloud_update_load_balancer or the parallel change_protection tools for servers, volumes, and networks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_change_type_actionBDestructive
Change the Type of a Load Balancer
Changes the type (Max Services, Max Targets and Max Connections) of a Load Balancer.
Operation specific errors
Status | Code | Description |
|
| The Load Balancer type does not fit for the given Load Balancer |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 and external-effect profile is covered. The description adds the useful 422 invalid_load_balancer_type failure mode and the semantics of type dimensions, but says nothing about disruption/downtime, what happens to existing targets/services during migration, or how the async action completes.
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 a clear heading and a one-line elaboration, followed by a compact error table; every element is useful. Minor redundancy between the title line and the first sentence ('Change the Type...' / 'Changes the type...').
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, open-world mutation with a nested body and no output schema, the definition covers purpose and one error condition but omits return behavior (presumably an async action object), wait semantics, and any caveats about migration impact. Adequate but leaves meaningful 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 67% and documents id, load_balancer_type, and the wait flag explicitly, so the schema carries most of the load. The description contributes only the meaning of 'type' (max services/targets/connections) and does not elaborate on the wait polling behavior or acceptable type identifier formats beyond the schema example.
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 ('Change the Type of a Load Balancer') and immediately defines what 'type' means in this domain (Max Services, Max Targets, Max Connections). This distinguishes it cleanly from other load balancer action siblings such as change_algorithm, change_protection, or update_service.
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 invoke this versus alternatives like hcloud_update_load_balancer or hcloud_server_change_type, and no stated prerequisites (e.g., that the target type must be compatible with the existing LB configuration). Usage is only inferable from the name and the one error row.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_delete_service_actionCDestructive
Delete Service
Delete a service of a Load Balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered. Beyond that, the description adds nothing: it does not say the deletion is irreversible, what happens to in-flight traffic, what errors occur if the port does not exist, or how the 'wait' parameter governs the returned 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 short lines, front-loaded and free of padding, but the first line merely restates the tool name as a title and the second is a near-verbatim restatement. It is concise without being informative.
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 destructive mutation with a required nested body and an async action/'wait' pattern, and there is no output schema. The description explains none of that lifecycle: whether an action ID is returned, what happens on timeout, or what the caller should do next. For a tool of this complexity it is materially 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?
Schema description coverage is 67%, with the 'wait' parameter documented only in the schema and the nested 'body.listen_port' described there too. The description adds no parameter meaning at all, so it does not compensate for the remaining coverage gap nor explain the required nested body shape.
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 (Delete) and resource (a service of a Load Balancer), which distinguishes it from siblings such as hcloud_load_balancer_add_service_action and hcloud_load_balancer_update_service_action by implication. However, it never names those siblings or clarifies that 'service' means a listener/service entry on the LB.
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 add_service or update_service, no prerequisites, and no warning about consequences. The agent must infer everything from the tool name and the broader sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_detach_from_network_actionCDestructive
Detach a Load Balancer from a Network
Detaches a Load Balancer from a network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered externally. The description adds nothing beyond that: it does not say what is lost when the Load Balancer leaves the network, whether the action is reversible, or what permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the first line and the sentence are redundant duplicates of each other and of the tool name, so no sentence earns its place beyond restating the title.
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 a nested body object and no output schema, the description should explain the effect of detaching and the async action behavior. Given the annotations cover safety but nothing else is explained, the definition is incomplete 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 description coverage is 67% and the schema already documents id, body.network, and wait with examples. The description contributes no additional meaning about parameter formats, constraints, or the semantics of the wait flag, so it fails to compensate for the remaining coverage gap.
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 is a verbatim restatement of the tool name: "Detach a Load Balancer from a Network" followed by "Detaches a Load Balancer from a network." It conveys the verb and resource but adds no scope or differentiating detail versus siblings like hcloud_load_balancer_attach_to_network_action or hcloud_server_detach_from_network_action, making it a tautology.
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 the attach or server-level detach siblings, no preconditions, and no mention of what state the Load Balancer or network must be in. The usage is only inferable from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_disable_public_interface_actionADestructive
Disable the public interface of a Load Balancer
Disable the public interface of a Load Balancer. The Load Balancer will be not accessible from the internet via its public IPs.
Operation specific errors
Status | Code | Description |
|
| The Load Balancer is not attached to a network |
|
| The Load Balancer has targets that use the public IP instead of the private IP |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lower. The description goes beyond them by explaining what actually changes (loss of internet reachability via public IPs) and enumerating the two 422 failure modes, which is the kind of operational context 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?
The effect statement is front-loaded and the error table is genuinely useful. Minor waste: the title sentence is immediately repeated as the first body sentence.
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 action with no output schema, the description covers the effect, the failure modes, and (via schema) the polling flag. It does not mention that this is an async action returning an action object, a small gap but not a blocking one.
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%, documenting both the required 'id' and the 'wait' polling flag, so the schema does the heavy lifting. The description adds nothing about parameter usage, which is acceptable at this coverage level but not value-adding.
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 (disable the public interface of a Load Balancer) plus the observable effect: the LB is no longer reachable from the internet via its public IPs. It does not explicitly name the enable_public_interface sibling as its inverse, but the action pairing is clear from the name and description.
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 'use this when...' guidance or reference to the enable sibling. However, the operation-specific error table implicitly conveys preconditions (LB must be attached to a network and must not have targets using the public IP), which the agent can use to judge applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_enable_public_interface_actionBDestructive
Enable the public interface of a Load Balancer
Enable the public interface of a Load Balancer. The Load Balancer will be accessible from the internet via its public IPs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by explaining the consequence — internet-reachable via public IPs — but says nothing about the operation being asynchronous (returning an action), cost implications, or whether existing connections/state is affected.
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, but the first sentence is repeated verbatim as the opening of the second sentence, wasting roughly half the text. Front-loading is fine; there is simply redundancy that a single clean sentence would avoid.
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 action tool with no output schema and annotations covering safety, the description is close to sufficient: the agent knows what changes and what the end state means. The main omission is the asynchronous action/return semantics, which is partly hinted at by the 'wait' parameter but not explained.
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', 'wait') are documented in the schema, so the description cannot add much. It contributes nothing at all about 'id' or the polling behavior controlled by 'wait', leaving the schema to do all the work — baseline 3.
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 ('Enable the public interface of a Load Balancer') and adds the observable effect ('accessible from the internet via its public IPs'). It is clearly the inverse of the sibling hcloud_load_balancer_disable_public_interface_action, 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?
No conditions for use are given: no prerequisites (e.g. Load Balancer must be attached to a network or have public IPs assigned), no when-not-to-use guidance, and no reference to the disable sibling or to waiting via hcloud_wait_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_load_balancer_remove_target_actionCDestructive
Remove Target
Removes a target from a Load Balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | Configuration of a Load Balancer target. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, but the description adds no operational context: it does not say that traffic immediately stops being routed to the removed target, whether in-flight connections are drained, or whether the action is asynchronous. For a destructive mutation, saying only "removes" leaves the blast radius undisclosed.
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 short and front-loaded, with the action heading followed by a single sentence. The heading duplicates the tool name, so there is minor redundancy, but 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 destructive, nested-object mutation with no output schema, the definition omits the essentials an agent needs beyond the schema: the effect of removal on traffic, whether it is reversible, and the fact that wait=true polls the resulting action. Annotations cover the safety hint but not the operational consequences.
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 nested target objects are thoroughly documented in-schema, including enum meanings and IP restrictions, so the baseline is 3. The description contributes nothing beyond the schema for the three parameters (id, body, wait).
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 verb and resource are stated plainly ("Removes a target from a Load Balancer"), so the polarity is distinguishable from hcloud_load_balancer_add_target_action. However, the sentence is essentially the tool name expanded, with no indication of which target kinds (server, label_selector, ip) are involved or what effect the removal has.
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_target_action, no prerequisites (e.g. permissions, whether the target must currently exist), and no note that the operation can be reversed by re-adding. 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.
hcloud_load_balancer_update_service_actionBDestructive
Update Service
Updates a Load Balancer Service.
Operation specific errors
Status | Code | Description |
|
| The source port you are trying to add is already in use |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered. The description adds the source_port_already_used error code, which is useful. However, it doesn't disclose critical update semantics — whether this is a full replacement of the service config or a partial patch, which matters greatly for a destructive 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?
Front-loaded with the verb+resource, then a compact error table. The 'Update Service' title line merely restates the tool name and adds nothing, but overall the description is tight with little 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?
Annotations cover the destructive/open-world profile and the 422 error is a nice addition. But for a destructive update on a nested service config, the description omits whether unspecified fields are cleared, what permissions are needed, and the wait parameter's effect — leaving meaningful 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 coverage is 67% with only 3 params, so the schema carries most of the weight. The description adds no meaning beyond the error mentioning a source port, leaving the body field's replace-vs-merge semantics undocumented. Baseline 3 is appropriate given moderate schema 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+resource: 'Updates a Load Balancer Service.' It's clear what the tool does, but there's no explicit differentiation from sibling actions like add_service or delete_service — the agent must infer from the name that this modifies an existing service.
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 vs add_service or delete_service, no prerequisites, no mention that the service must already exist. The only contextual hint is a single 422 error for source_port_already_used, which doesn't tell the agent when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_network_add_route_actionB
Add a route to a Network
Adds a route entry to a Network.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 profile is covered. The description adds real value by disclosing the concurrency failure mode ('a change is currently being performed... code conflict'), but says nothing about the asynchronous action this presumably creates, even though the schema exposes a `wait` polling parameter, nor about whether adding a duplicate route is rejected.
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, the purpose front-loaded and the conflict caveat last. Minor redundancy: 'Add a route to a Network' and 'Adds a route entry to a Network' restate the same fact, costing a sentence that could have carried behavior 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 three-parameter mutation with a nested object and no output schema, an agent still needs to know that the call returns/awaits an action (implied only by the undocumented `wait` flag) and what duplicate-route behavior looks like. The conflict disclosure helps, but the async action lifecycle is left entirely 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 67% and the nested body fields (`destination`, `gateway`) carry detailed constraints, including RFC1918 range rules and the 172.31.1.1 exclusion. The description adds nothing about `id`, `wait`, or how gateway/destination interact, so it does not compensate for the uncovered parameter — 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 ('Add a route to a Network') and clarifies it appends a route entry rather than modifying the network wholesale, which distinguishes it from siblings like hcloud_network_change_ip_range_action or hcloud_network_add_subnet_action. It never names those siblings explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g. network must exist, route must not overlap), and no pointer to alternatives such as hcloud_network_delete_route_action or the update_network family. The only conditional mentioned is a conflict error, which is a failure mode 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.
hcloud_network_add_subnet_actionA
Add a subnet to a Network
Adds a new subnet to the Network.
If the subnet ip_range is not provided, the first available /24 IP range will be used.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-readonly, non-destructive, open-world mutation, so the description adds real value on top: it discloses the default /24 allocation when ip_range is omitted and the conflict failure mode when a change is in flight on the Network. It doesn't mention that polling is controlled by `wait` or what the async action returns, but the behavioral picture is substantially better than the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then default behavior, then the failure case — every sentence carries information. The repeated markdown anchor links are mild noise but not distracting.
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 action with nested body params and no output schema, the description covers the action's purpose, the default-allocation behavior, and the conflict condition, which is enough for correct invocation. Prerequisites (Network must exist, parent IP range constraints) are left entirely 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 coverage is 67%, between the high and low baselines. The description supplies important semantics the schema lacks for `ip_range` (omitting it triggers automatic /24 selection), but says nothing about `type`, `vswitch_id`, or the `wait` polling flag, so it only partially compensates for the coverage gap.
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 ('Add a subnet to a Network') and names the target Network, which cleanly separates it from siblings like hcloud_network_add_route_action or hcloud_network_delete_subnet_action. It doesn't explicitly reference a sibling, but the operation 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 the operation itself, and the note about the conflict error tells the agent when a call will fail, but there is no explicit 'use this instead of X when Y' guidance among the many network/route/subnet siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_network_change_ip_range_actionADestructive
Change IP range of a Network
Changes the IP range of a Network.
The following restrictions apply to changing the IP range:
IP ranges can only be extended and never shrunk.
IPs can only be added to the end of the existing range, therefore only the netmask is allowed to be changed.
To update the routes on the connected Servers, they need to be rebooted or the routes to be updated manually.
For example if the Network has a range of 10.0.0.0/16 to extend it the new range has to start with the IP 10.0.0.0 as well. The netmask /16 can be changed to a smaller one then 16 therefore increasing the IP range. A valid entry would be 10.0.0.0/15, 10.0.0.0/14 or 10.0.0.0/13 and so on.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive=true, but the description adds the concrete blast radius: ranges cannot shrink, IPs can only be appended, and connected servers must be rebooted or have routes updated manually. It also discloses the `conflict` failure mode, which is exactly the kind of post-call consequence an agent needs before invoking a destructive 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?
Front-loads the purpose and the restriction bullets before the long worked example, so an agent can stop reading early if it only needs the rules. The trailing example paragraph and repeated markdown anchor links add some bulk, but every section carries real 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, open-world action with no output schema, the description covers constraints, side effects on dependent servers, and the conflict-error case. Combined with the schema's ip_range guidance and the `wait` polling parameter, an agent has everything needed to call it safely.
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 67%, and the description adds non-obvious semantics for `ip_range`: the new range must start with the same base IP and only the netmask may decrease, with worked examples (10.0.0.0/16 -> /15, /14). The `id` and `wait` parameters are left to the schema, which documents them adequately.
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: 'Change IP range of a Network', and the restrictions make clear it is an in-place extension of an existing network's CIDR, not a general network update (hcloud_update_network) or subnet/route additions. It never names a sibling tool to disambiguate explicitly, so it stops 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?
Gives clear preconditions for calling: the range can only be extended, only the netmask may change, and a `conflict` error is returned if another change is in flight. It does not say when to prefer it over related tools such as hcloud_create_network or hcloud_network_add_subnet_action, but the constraints effectively define the valid usage envelope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_network_change_protection_actionBDestructive
Change Network Protection
Changes the protection settings of a Network.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the description does not need to establish that this is a mutation. It adds useful behavioral context with the conflict error condition, but it does not explain what protection settings exist beyond the schema, required permissions, or what the wait parameter implies for action polling.
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 short and front-loaded, with the operation stated first and the conflict condition second. The heading repeats the tool name and adds little, but the overall structure is 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?
For a mutation tool with a nested body and no output schema, the description is adequate but incomplete. It covers the conflict case but does not describe the action response, the effect of wait, or clarify that the only protection setting exposed in the schema is delete protection.
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 moderate at 67%, with descriptions already provided for id, body.delete, and wait. The description only broadly refers to protection settings and does not add syntax or constraints beyond the schema. It does not compensate for the remaining gap or clarify that the only exposed setting is delete protection.
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 changes protection settings of a Network. This distinguishes it from general network updates and from protection tools for other resources. It does not explicitly contrast it with sibling tools such as hcloud_update_network, but the resource and operation are clear.
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 explains the operation and the conflict response if a change is already in progress, but it gives no guidance on when to choose this tool over alternatives like hcloud_update_network. There are no prerequisites or exclusions beyond the conflict note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_network_delete_route_actionBDestructive
Delete a route from a Network
Delete a route entry from a Network.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 covered. The description adds genuinely useful context beyond them: a concurrent change on the Network causes a `conflict` error response, telling the agent to expect and handle a specific failure mode.
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?
Short and front-loaded: the action is stated in the first line before the conflict caveat. The Markdown anchor links to #tag/networks are noise that adds no meaning 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 destructive mutation with no output schema, the description covers the conflict case but says nothing about the action object that is returned or what state the Network is left in after deletion. The `wait` parameter hints at async behavior, but the description does not build on that.
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 sits at 67% and the nested body fields (destination, gateway) are documented in exceptional detail in the schema itself, including constraints and exclusions. The description adds nothing about `id`, `body`, or `wait`, so it neither compensates for nor improves on 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+resource ('Delete a route from a Network'), which cleanly separates it from hcloud_network_delete_subnet_action and hcloud_network_add_route_action without needing to name them. The scope is unambiguous, though no sibling is referenced 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 tool versus its siblings (delete_subnet, add_route, update_network), nor does it state prerequisites such as the route having to exist. The only guidance is the conflict condition, which is behavioral rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_network_delete_subnet_actionADestructive
Delete a subnet from a Network
Deletes a single subnet entry from a Network.
Subnets containing attached resources can not be deleted, they must be detached beforehand.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 genuinely useful failure modes (attached-resource blocking, conflict on concurrent changes). It stops short of stating irreversibility or whether the deletion is idempotent, and the polling behavior of `wait` is left to 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?
Three short sentences, front-loaded with the action and followed by the blocking conditions. The opening summary line and the following sentence are mildly redundant ('Delete a subnet from a Network' / 'Deletes a single subnet entry'), a minor waste of space.
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 but a rich input schema and destructive annotations, the description supplies exactly the missing pieces: preconditions, the conflict failure mode, and scope. Nothing essential to calling this destructive action 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 67% and the schema already documents `id` (Network ID), `ip_range` (CIDR of the target subnet), and `wait` (poll to completion). 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 concrete verb and resource: deleting a single subnet entry from a Network, with the API-level anchor to the networks tag. It is distinguishable from hcloud_delete_network (whole network) and hcloud_network_delete_route_action (routes), though it does not name 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?
Gives clear preconditions for use: subnets with attached resources must be detached first, and a conflicting in-flight change on the Network will yield a `conflict` error. It does not point to the alternative tool (e.g. add/detach subnet operations) that an agent should use instead when the precondition fails, leaving that routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_post_zone_rrsetsA
Create an RRSet
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so mutation safety is already framed. The description adds genuinely new behavioral context: the primary-mode-only restriction and the specific 422 error code/condition. It omits what happens on conflict (e.g. existing RRSet) and how the `wait` polling behaves, which keeps it off 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?
The core action is front-loaded in the first sentence, with the mode constraint immediately after. The remainder is a short error table plus markdown link boilerplate, which is slightly noisy but still minimal for the information conveyed.
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 operation with a nested body and no output schema, the description covers the mode prerequisite but not the return value (created RRSet and/or action) or the semantics of the default-on `wait` polling flag. Adequate but leaves the agent guessing about post-call results.
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 67% and the nested body schema is thoroughly documented (name, type, records, ttl, labels), so much of the parameter meaning is already structured. The description says nothing about `id_or_name`, `body`, or `wait`, adding no semantics beyond the schema; baseline 3 is appropriate at this coverage level.
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 opens with a specific verb and resource: 'Create an RRSet in the Zone.' That is unambiguous and the mode qualifier narrows it further. It does not explicitly distinguish itself from sibling writers such as hcloud_update_zone_rrset or hcloud_zone_rrset_set_records_action, 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?
'Only applicable for Zones in primary mode' is an explicit precondition, reinforced by the 422 incorrect_zone_mode entry in the error table. There is, however, no guidance pointing to alternative tools (e.g. set/update records actions) when the Zone is in secondary mode or when the RRSet already exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_primary_ip_assign_actionADestructive
Assign a Primary IP to a resource
Assign a Primary IP to a resource.
A Server can only have one Primary IP of type ipv4 and one of type ipv6 assigned. If you need more IPs use Floating IPs.
A Server must be powered off (status off) in order for this operation to succeed.
Operation specific errors
Status | Code | Description |
|
| The Server is running, but needs to be powered off |
|
| Primary IP is already assigned to a different Server |
|
| The Server already has an IPv4 address |
|
| The Server already has an IPv6 address |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructive/openWorld annotations by disclosing the powered-off requirement, the one-ipv4/one-ipv6 limit, and a table of four 422 failure codes (server_not_stopped, primary_ip_already_assigned, server_has_ipv4/ipv6). It stops short of stating side effects on the previously assigned IP or required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative constraints are front-loaded in the first few lines and the error table is genuinely useful, but the opening sentence is duplicated and cross-reference anchor-link noise ('[Primary IP](#tag/primary-ips)') bloats the text.
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 output documentation, the description supplies the key preconditions and failure modes an agent needs to avoid a doomed call. Only the async action/`wait` behavior is 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 coverage is 67% and the description adds nothing about `id`, `assignee_id`/`assignee_type`, or the `wait` polling flag beyond what the schema already documents. 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 ('Assign a Primary IP to a resource') and immediately clarifies the cardinality rule (one ipv4 and one ipv6 per server), which distinguishes it from the Floating IP and unassign siblings by name.
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 precondition (server must be powered off/status off) and routes agents wanting more addresses to Floating IPs instead. It doesn't explicitly contrast with hcloud_floating_ip_assign_action or hcloud_primary_ip_unassign_action, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_primary_ip_change_dns_ptr_actionCDestructive
Change reverse DNS records for a Primary IP
Change the reverse DNS records for this Primary IP.
Allows to modify the PTR records set for the IP address.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a destructive, non-read-only mutation. The description adds no behavioral context such as what existing PTR data is replaced, auth requirements, or the effect of null values, and does not mention the wait/polling 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?
The first sentence front-loads the purpose, but the second and third sentences largely repeat the same idea without adding useful detail. It is short, but not 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?
For a destructive action with a nested request body and no output schema, the description does not explain the resulting action, polling behavior, or how null dns_ptr resets differ between IPv4 and IPv6. The schema and annotations carry most of the missing context, leaving the description 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?
The description mentions no parameters, and schema description coverage is only 67%, so it does not compensate for the undocumented portions. The schema itself describes id, body.ip, body.dns_ptr, and wait, but the description adds no meaning beyond that.
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: changing reverse DNS/PTR records for a Primary IP. Naming the Primary IP resource distinguishes it from the floating IP and server change-DNS siblings, though it does not explicitly compare itself to 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 description only restates the capability and gives no guidance on when to use this action versus alternatives, nor any prerequisites or exclusions. The intended use is implied by the name, but not explained in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_primary_ip_change_protection_actionBDestructive
Change Primary IP Protection
Changes the protection configuration of a Primary IP.
A Primary IPs deletion protection can only be enabled if its auto_delete property is set to false.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| body | Yes | Protection configuration for the Resource. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description contributes real behavioral context beyond the annotations by disclosing the auto_delete prerequisite for enabling deletion protection — something no annotation conveys. It omits other relevant traits: whether enabling protection vs. disabling is destructive, idempotency, and what the `wait` polling behavior means for the caller. The destructiveHint=true annotation combined with the anti-destructive framing of 'protection' is not reconciled, though it is not directly contradicted.
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 paragraphs, front-loaded with the action, followed by the one non-obvious constraint. Minimal waste; a slightly tighter phrasing would earn 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 mutation tool with no output schema, the description covers purpose and one key precondition but leaves the agent without the outcome shape (returns an Action polled by `wait`), error conditions, or confirmation of how to re-read state afterward. 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 baseline is 3; the schema already documents `id`, `body.delete`, and `wait`. The description adds only the auto_delete precondition tied to `body.delete`, but does not clarify the boolean's semantics (true = protection on) or the nested body structure 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+resource ('Changes the protection configuration of a Primary IP'), which is unambiguous and distinguishable from sibling action tools like hcloud_primary_ip_change_dns_ptr_action or hcloud_primary_ip_unassign_action. It does not explicitly name or contrast those siblings, keeping it 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?
Usage is implied by the name and the single stated precondition ('deletion protection can only be enabled if its `auto_delete` property is set to `false`'), which is genuinely useful. However, there is no explicit when-to-use/when-not guidance and no direction to alternative tools (e.g. hcloud_update_primary_ip) for related changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_primary_ip_unassign_actionADestructive
Unassign a Primary IP from a resource
Unassign a Primary IP from a resource.
A Server must be powered off (status off) in order for this operation to succeed.
A Server requires at least one network interface (public or private) to be powered on.
Operation specific errors
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and readOnly=false, and the description goes well beyond them by disclosing the required server state and a table of operation-specific 422 errors (server_not_stopped, server_is_load_balancer_target). This tells the agent exactly why a call would fail before it tries.
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 precondition and error table are front-loaded and useful, but the opening sentence is duplicated in prose and as a markdown link line, and the anchor-link noise adds no information. Minor redundancy only.
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 action tool with no output schema, the description covers preconditions and failure modes well. It stops short of saying what the call returns (an Action object, per the `wait` polling parameter), which is the one remaining ambiguity.
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 the Primary IP `id` and the `wait` polling flag are already documented in the schema. The description adds nothing about 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 and resource ('Unassign a Primary IP from a resource'), which directly contrasts with the sibling hcloud_primary_ip_assign_action. 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?
Explicitly states the precondition that the target Server must be powered off and that a Server needs at least one network interface to be powered on, which is real when-to-use guidance. It does not, however, route the agent to alternatives (e.g. poweroff_action) or state what to do when no server is attached.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_raw_requestADestructive
Escape hatch: issue an arbitrary request against the Hetzner Cloud API. The configured API token is sent and the client retries a 429, and a 5xx on methods other than POST, like every other tool. Pagination and action polling are not applied, and an HTTP error comes back as { status, body } instead of an error result. Use only when no dedicated tool fits.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body, JSON-serialised when sent. | |
| path | Yes | Path beginning with '/', e.g. '/servers/42/actions/poweron'. | |
| query | No | ||
| method | Yes | ||
| confirm | No | Required when HETZNER_CONFIRM_WRITES=true and method is not GET. Set to "YES" to actually execute; without it the tool returns a preview only. Ignored for GET and when confirm mode is disabled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructive/openWorld) by disclosing auth behavior (configured API token is sent), retry semantics (429 retried; 5xx retried on non-POST methods), and deliberate omissions (no pagination, no action polling). Critically, it explains that HTTP errors return '{ status, body }' rather than an error result, which changes how the agent must interpret output.
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?
Four sentences, each carrying distinct, non-redundant information: escape-hatch scope first, then transport/retry behavior, then omissions, then the error shape. No padding or restatement of the title.
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 defines the error return shape and the retry/pagination caveats, and the confirm-gate is covered by the schema. It stops short of stating what a successful response looks like (presumably the raw API JSON body), leaving one inference 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 coverage is 60%: path, body and confirm are documented in-schema, while method and query are not. The description adds indirect method semantics ('5xx on methods other than POST') but never explains path/query/body usage itself, so it neither compensates for the gap nor adds much over 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 ('issue an arbitrary request against the Hetzner Cloud API') and frames it explicitly as an 'Escape hatch'. Against ~150 dedicated sibling tools, the escape-hatch framing makes the distinction 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?
'Use only when no dedicated tool fits' is an explicit when-not rule pointed at the whole sibling set, which is the only practical way to reference alternatives at this scale. The agent knows to search for a dedicated tool first rather than reaching for this by default.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_add_to_placement_group_actionA
Add a Server to a Placement Group
Adds a Server to a Placement Group.
Server must be powered off for this command to succeed.
Operation specific errors
Status | Code | Description |
|
| The action requires a stopped server |
|
| The server is already part of a placement group |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (not read-only, not destructive, open-world); the description adds real behavioral detail beyond that — the powered-off requirement and the specific 422 failure codes (server_not_stopped, already_in_placement_group). It doesn't describe the returned action object or what `wait` does, which is the remaining gap.
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 action and its precondition, and the error table is efficient, machine-readable content. The heading restates the body sentence verbatim, a small redundancy, but nothing is bloated.
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 action tool with no output schema, the description covers the critical thing an agent needs — the precondition that gates success — plus documented failure modes. It omits return-value/polling behavior, but annotations and schema already establish the safety profile and the `wait` flag.
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 67% and all three parameters already carry descriptions in the schema, so the baseline applies. The description adds no information about `id`, `placement_group`, or the `wait` polling flag — reasonable but no added value on 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 ('Adds a Server to a Placement Group'), making it trivially distinguishable from its sibling hcloud_server_remove_from_placement_group_action. The heading line duplicates the body sentence, so it earns less than full marks, but an agent knows exactly what it 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?
Gives a hard precondition ('Server must be powered off') that tells the agent when this call will fail, plus the two operation-specific errors. It stops short of naming alternatives (e.g. power off first, or use the remove counterpart), so it's clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_attach_iso_actionADestructive
Attach an ISO to a Server
Attaches an ISO to a Server. The Server will immediately see it as a new disk. An already attached ISO will automatically be detached before the new ISO is attached.
Servers with attached ISOs have a modified boot order: They will try to boot from the ISO first before falling back to hard disk.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the annotations: an already-attached ISO is silently detached (explaining the destructiveHint), the disk appears immediately, and boot order changes to ISO-first. What it omits is whether the boot-order change persists after the ISO is later detached, and it says nothing about the asynchronous action or the `wait` polling behavior, which is the main operational risk for a mutation 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?
Three short paragraphs, front-loaded with the key side effect. The opening line 'Attach an ISO to a Server' followed immediately by 'Attaches an ISO to a Server' is a redundant restatement of the tool name, but everything after it 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 destructive nested-body mutation with no output schema, the description covers the important state effects (auto-detach, boot order) that an agent must reason about before calling. The remaining gaps — asynchronous action lifecycle and permission requirements — are partly covered by annotations and the `wait` parameter description.
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 67% — `id`, `iso` and `wait` are documented inline, including the GET /isos reference for ISO identifiers. The description adds no parameter meaning of its own (e.g. whether `iso` accepts names as well as IDs is left to the schema), so it neither compensates for nor degrades the partial 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 names a specific verb and resource ('Attach an ISO to a Server') and immediately describes the effect, which cleanly distinguishes it from the inverse sibling hcloud_server_detach_iso_action. An agent can tell exactly what the call does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through consequences ('Server will immediately see it as a new disk', 'modified boot order'). There is no explicit statement of when to prefer this over alternatives, no prerequisite checks (ISO must exist / be in the same location, server must be off or not), and no pointer to detach_iso to reverse it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_attach_to_network_actionA
Attach a Server to a Network
Attaches a Server to a network. This will complement the fixed public Server interface by adding an additional ethernet interface to the Server which is connected to the specified network.
The Server will get an IP auto assigned from a subnet of type server in the same network_zone.
Using the alias_ips attribute you can also define one or more additional IPs to the Servers. Please note that you will have to configure these IPs by hand on your Server since only the primary IP will be given out by DHCP.
Operation specific errors
Status | Code | Description |
|
| The server is already attached to the network |
|
| The provided Network IP is not available |
|
| No Subnet or IP is available for the Server within the network |
|
| The network IP range overlaps with one of the server networks |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: an additional ethernet interface is added, an IP is auto-assigned from a subnet of type 'server' in the same network_zone, and alias IPs must be configured manually because only the primary IP is DHCP-provided. The operation-specific error table adds valuable failure-mode 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?
The description is front-loaded with the core action, then adds concise behavioral notes and a scannable error table. Every section contributes useful information without redundant restatement.
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 action tool with annotations, no output schema, and nested parameters, the description covers side effects, IP assignment rules, and known 422 errors well. It does not describe the returned action object or wait behavior, but the wait parameter is already documented in 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 67%, and the description meaningfully extends the schema for alias_ips by warning that those IPs must be configured manually on the server. It also reinforces auto-assignment semantics for IPs and subnet zones, though some nested parameter details remain schema-only.
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 ('Attach a Server to a Network') and explains the resulting interface/network relationship. It is clear what the tool does, but it does not explicitly differentiate itself from the sibling detach or load-balancer attach 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?
Usage is implied by the verb and the note that it complements the fixed public interface, but there is no explicit guidance on when to use this versus hcloud_server_detach_from_network_action or hcloud_load_balancer_attach_to_network_action. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_backupCDestructive
Toggle Hetzner-managed automatic backups on a server. Hand-tuned wrapper around enable_backup / disable_backup actions.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| wait | No | ||
| enable | Yes | true to turn backups on, false to turn them off. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, destructive, open-world mutation. The description's framing as a benign 'toggle' adds little beyond that and omits the operationally important facts: disabling backups destroys existing backup history and enabling incurs extra cost. It doesn't contradict the annotations, but it under-discloses the destructive side.
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; the core action is front-loaded. It is arguably too terse for the gaps it leaves, but nothing in the text 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, so the description could carry more. For a destructive, billing-relevant server mutation it omits what happens to previously taken backups, whether the call is synchronous when `wait` is set, and what the response reports. Adequate but clearly incomplete for the risk profile.
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 33%: `enable` is documented in the schema, `id` is self-explanatory, but `wait` (default true) is undocumented in both places. The description adds no parameter meaning at all, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: toggling Hetzner-managed automatic backups on a server, and names the underlying enable_backup / disable_backup actions. It is clear what the tool does, though it doesn't tell the agent why this wrapper differs from the two action siblings it names.
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 mentions enable_backup / disable_backup actions but gives no condition for choosing this wrapper over hcloud_server_enable_backup_action or hcloud_server_disable_backup_action. There is no when-to-use, when-not-to-use, or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_change_alias_ips_actionADestructive
Change alias IPs of a Network
Changes the alias IPs of an already attached Network. Note that the existing aliases for the specified Network will be replaced with these provided in the request body. So if you want to add an alias IP, you have to provide the existing ones from the Network plus the new alias IP in the request body.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the critical destructive behavior that existing alias IPs are replaced, not appended. This is exactly the kind of beyond-annotation context an agent needs for a destructive mutation, and it aligns with destructiveHint=true.
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 short, front-loaded, and organized around the operation and its key replacement caveat. Every sentence contributes directly to correct 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 destructive nested-body action with annotations and no output schema, the description covers the most important behavioral risk: alias replacement. It does not discuss action polling or response shape, but those are partly handled by the wait parameter description in 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 coverage is moderate at 67%, and the description adds essential meaning to the alias_ips parameter by explaining replacement versus addition semantics. The id, network, and wait parameters are largely covered by the schema itself.
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: changing alias IPs of an already attached Network. It is clear enough to distinguish the operation from attach/detach siblings, though it does not explicitly name any sibling alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational guidance: existing aliases are replaced by the request body, so adding an alias requires including all existing aliases plus the new one. It does not explicitly state when to choose this over attach/detach or other network actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_change_dns_ptr_actionADestructive
Change reverse DNS entry for this Server
Changes the hostname that will appear when getting the hostname belonging to the primary IPs (IPv4 and IPv6) of this Server.
Floating IPs assigned to the Server are not affected by this.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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/DNS-exposure risk is covered structurally. The description adds that only primary IPs are modified and that floating IPs are untouched, which is useful impact scoping, but it omits the reset/removal semantics (dns_ptr=null) and that this triggers an async Action the call may poll.
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 lines, front-loaded with the action and immediately followed by the scope constraint. The first line is largely a restatement of the title, so there is minor redundancy, but nothing is bloated.
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 nested-body action tool with 67% schema coverage and annotations carrying the safety profile, the description covers the essential scope questions an agent needs. The remaining gap is action/wait semantics and reset behavior, which is a moderate but not disqualifying omission since there is no output schema to carry return information.
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 67%, and the description reinforces the key constraint that 'ip' must be one of the server's primary IPs rather than a floating IP, which is genuine added meaning over the schema's 'Single IPv4 or IPv6 address'. However, it says nothing about the 'dns_ptr' null-reset behavior or the 'wait' polling parameter, leaving those to 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+resource (change reverse DNS / PTR entry for a Server) and clarifies exactly which IPs are in scope: the server's primary IPv4 and IPv6 addresses. The explicit statement that floating IPs are NOT affected also separates it from the floating-IP and primary-IP DNS variants, though it never names those siblings directly.
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 guidance and no prerequisites (permissions, ownership) are stated. The 'Floating IPs are not affected' line does give implicit routing away from hcloud_floating_ip_change_dns_ptr_action, but an agent must infer that this tool is the right one for primary-IP PTR changes on a server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_change_protection_actionCDestructive
Change Server Protection
Changes the protection configuration of the Server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description's job is to add context—yet it adds none. It does not explain that toggling 'delete' protection controls whether the server can be deleted, that delete and rebuild must currently match, that a long-running action is returned, or that the `wait` flag polls it. For a destructive configuration change, this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two sentences contain no waste and are front-loaded, but the brevity comes from under-specification rather than efficiency; the second sentence merely restates the first.
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 a destructive mutation with a nested body, no output schema, and a potentially confusing delete/rebuild coupling, the description is far too thin. It omits consequences, permissions, the returned action, and the meaning of protection, leaving the agent to rely on annotations and 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 67%, and the schema already documents id, delete, rebuild, and wait. The description contributes nothing—it never mentions the delete/rebuild protection flags, the constraint that they must share a value, or the polling behavior of `wait`—so it fails to compensate for the undocumented remainder.
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 ("Changes the protection configuration of the Server"), which distinguishes it from sibling change_protection tools for volumes, networks, and floating IPs. However, it never says what 'protection' actually means (delete/rebuild flags) or what effect the change has, so the purpose stays at the level of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus the other Server mutation tools (rebuild, delete, update_server), no prerequisites, and no indication that this is the way to lock or unlock a server before deletion/rebuild. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_change_typeBDestructive
Change a server's hardware type. Defaults upgrade_disk to false (disk size kept; safer to downgrade later). Hand-tuned wrapper; polls the resulting action by default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| wait | No | ||
| server_type | Yes | ||
| upgrade_disk | No |
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 genuinely useful behavior beyond that: upgrade_disk defaults to false with the rationale that keeping disk size makes later downgrades safer (an irreversibility warning), and that the tool polls the resulting action by default rather than returning immediately.
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 core action comes first, then the risky default, then the polling behavior. 'Hand-tuned wrapper' is slightly meta but usefully signals this is not the raw API call.
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 four undocumented parameters and no output schema, the definition covers the disk-irreversibility and polling behavior well but leaves out the power-state prerequisite and what the returned action looks like. Adequate, but an agent could still invoke it wrongly on a running 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 0%, so the description carries the full burden, yet it only explains one of four parameters (upgrade_disk, including its default and rationale). The 'polls by default' phrase hints at the wait parameter without naming it, and id/server_type are left entirely to inference from field names.
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 ('Change a server's hardware type'), which is unambiguous on its own. It does not, however, distinguish itself from the sibling hcloud_server_change_type_action, so an agent cannot tell from the text alone which of the two to pick.
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 use this wrapper instead of hcloud_server_change_type_action or the generic hcloud_update_server, and it omits the operational prerequisite that a server generally must be powered off before a type change. Only the default of upgrade_disk is given context; no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_change_type_actionADestructive
Change the Type of a Server
Changes the type (Cores, RAM and disk sizes) of a Server.
Server must be powered off for this command to succeed.
This copies the content of its disk, and starts it again.
You can only migrate to Server types with the same storage_type and equal or bigger disks. Shrinking disks is not possible as it might destroy data.
If the disk gets upgraded, the Server type can not be downgraded any more. If you plan to downgrade the Server type, set upgrade_disk to false.
Operation specific errors
Status | Code | Description |
|
| The server type does not fit for the given server or is deprecated |
|
| The action requires a stopped server |
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag the destructive, non-read-only nature, and the description adds substantial behavior beyond that: the disk is copied and the server restarted, disk upgrades permanently block later downgrades, and the specific 422 failure codes (invalid_server_type, server_not_stopped) are enumerated. This is exactly the context an agent needs before committing a destructive migration.
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 purpose, then preconditions, then the upgrade_disk caveat, then an error table — a sensible order. The error table and the slightly awkward 'This copies the content of its disk, and starts it again' add minor bulk but every element carries operational 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 destructive nested-body mutation with no output schema, the definition covers prerequisites, constraints, irreversibility, and failure modes thoroughly. The only unaddressed item is what is returned when `wait` is true versus false, which the description does not clarify.
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 67%, and the description compensates well: it explains the irreversible trade-off behind upgrade_disk=false (preserves the ability to downgrade) and the validation rules governing server_type. The `wait` parameter is left entirely to its schema description, which is a minor gap.
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 opening states a specific verb and resource and immediately expands what 'type' means (cores, RAM, disk sizes), so an agent knows exactly what is being altered. It does not, however, distinguish this 'action' variant from the sibling hcloud_server_change_type, leaving ambiguity about which of the two to invoke.
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 concrete preconditions and selection criteria: the server must be powered off, the target type must share the same storage_type, and disks may be equal or larger but never smaller. It stops short of naming an alternative tool or routing guidance versus hcloud_server_change_type or a rebuild.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_create_image_actionA
Create Image from a Server
Creates an Image (snapshot) from a Server by copying the contents of its disks. This creates a snapshot of the current state of the disk and copies it into an Image. If the Server is currently running you must make sure that its disk content is consistent. Otherwise, the created Image may not be readable.
To make sure disk content is consistent, we recommend to shut down the Server prior to creating an Image.
You can either create a backup Image that is bound to the Server and therefore will be deleted when the Server is deleted, or you can create a snapshot Image which is completely independent of the Server it was created from and will survive Server deletion. Backup Images are only available when the backup option is enabled for the Server. Snapshot Images are billed on a per GB basis.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint=false, destructiveHint=false, openWorldHint=true. The description goes well beyond: it discloses the consistency hazard on running servers, recommends shutdown, explains that backup Images are tied to the server's lifecycle and require the backup option, that snapshots survive server deletion, and that snapshots are billed per GB. That is exactly the kind of operational consequence 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?
Front-loaded with the core action, then hazards, then the backup/snapshot tradeoff — a sensible order. There is mild redundancy between the title line, the first sentence of the body, and the second sentence restating that it snapshots current disk state, but nothing is wasted overall.
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, nested-body tool with no output schema, the description covers the critical unknowns: safety preconditions, image type consequences, and billing. It stops short of saying what is returned (an Image and/or an async Action) and does not mention the default `wait` polling behavior, which matters for a long-running 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 coverage is 67% and the schema's own text for `type` is only 'Type of Image to create.' The description substantially enriches that enum by explaining lifecycle, availability precondition and billing for each value. It adds nothing for `labels`, `body.description` or the `wait` polling flag, but those are 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?
The first sentence names a specific verb and resource ('Creates an Image (snapshot) from a Server') and elaborates on the mechanism (copying disk contents). It is clear what the tool does, but it never distinguishes itself from the near-identical siblings hcloud_server_snapshot and hcloud_server_backup, which an agent will inevitably compare it against.
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 guidance exists at the operational level ('we recommend to shut down the Server prior to creating an Image') and at the subtype level (backup vs snapshot lifecycle/billing). However, there is no guidance on when to use this tool instead of the sibling snapshot/backup tools, so sibling selection 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.
hcloud_server_detach_from_network_actionCDestructive
Detach a Server from a Network
Detaches a Server from a network. The interface for this network will vanish.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this is a mutating, outward-facing action. The description usefully adds that the network interface vanishes, but omits what is lost (private IPs, connectivity), whether the call is reversible, and how the 'wait' polling behaves.
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 operation name before the consequence. Nothing is wasted, though the second sentence could be merged for tighter structure.
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 action with no output schema and a nested body parameter, the description is thin: it doesn't say that an action object is returned, what the wait flag does, or what happens to addresses/services on the removed interface. The annotations cover the safety profile, but the operational contract is largely 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 coverage is 67% and the description adds no meaning for any of the three parameters — server id, nested body.network, or the wait flag. The nested request object in particular would benefit from a clarifying note that the network ID is required and distinct from the server 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+resource ('Detach a Server from a Network'), which is unambiguous and distinguishable from the attach counterpart by name. It doesn't explicitly contrast itself with hcloud_server_attach_to_network_action or the load balancer detach sibling, but the operation is clear 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?
No indication of when to use this versus the attach tool or other network actions, and no prerequisites (the Server must actually be attached, the network must exist, whether the Server must be powered off). The one added sentence describes the outcome, not the usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_detach_iso_actionBDestructive
Detach an ISO from a Server
Detaches an ISO from a Server. In case no ISO Image is attached to the Server, the status of the returned Action is immediately set to success.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutation. The description adds a useful idempotency detail (action succeeds immediately if no ISO is attached). However, it does not clarify whether the ISO image itself is deleted or merely detached, which is critical given the destructive annotation.
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 a clear one-line summary, followed by a second sentence that adds the idempotency behavior. It is efficient, though the first line duplicates the tool name and the second sentence repeats the opening phrase redundantly.
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 action tool with full schema coverage and annotations covering the safety profile, the description is mostly complete. It explains the no-ISO edge case but omits reassurance that the ISO image is not destroyed, which would be valuable given the destructive hint.
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, wait) are fully documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, 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 (Detach) and resource (ISO from a Server), making the operation unmistakable. However, it does not explicitly contrast with the sibling hcloud_server_attach_iso_action or other ISO tools, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit when-to-use, when-not-to-use, or alternative guidance. The note about immediate success when no ISO is attached is a behavioral edge case, not a usage guideline; there is no mention of prerequisites or the attach counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_disable_backup_actionADestructive
Disable Backups for a Server
Disables the automatic backup option and deletes all existing Backups for a Server. No more additional charges for backups will be made.
Caution: This immediately removes all existing backups for the Server!
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description adds crucial specifics beyond them: that existing backups are permanently deleted, that this is immediate, and that this ends backup charges. That goes well past what the structured hints 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?
The destructive warning is front-loaded and prominent, and each sentence carries useful information. There is minor redundancy between the opening line and the title-like phrase, but it is efficient overall.
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 action with full schema coverage and annotations, the description supplies everything an agent needs: scope, irreversible consequence, and cost implication. Nothing material 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% and both parameters (id, wait) are documented in the schema. 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 verb ('Disable') plus resource ('Backups for a Server') and immediately clarifies the secondary effect: existing backups are deleted. The purpose is unambiguous and clearly the inverse counterpart to hcloud_server_enable_backup_action.
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 operational context and a prominent caution ('immediately removes all existing backups'), which implicitly guides when to invoke it carefully. It does not explicitly name the enable alternative or state preconditions, but the implied usage is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_disable_rescue_actionADestructive
Disable Rescue Mode for a Server
Disables the Hetzner Rescue System for a Server. This makes a Server start from its disks on next reboot.
Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.
Disabling rescue mode will not reboot your Server - you will have to do this yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by stating the setting change does not reboot the server and the agent must trigger that separately, plus the auto-expiry window and the effect on next boot. That is exactly the behavioral context an agent needs before calling a mutation with destructiveHint=true.
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 and short, with the reboot caveat placed last where it belongs. The heading and first sentence are near-duplicates ('Disable Rescue Mode for a Server' / 'Disables the Hetzner Rescue System for a Server'), so one sentence 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?
Covers what the change does, when it happens, and the required follow-up reboot, which is complete for a no-output-schema flag toggle. It stops short of saying an action object is returned or how polling relates to the wait parameter, a minor gap given the rich 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 coverage is 100% and both parameters (id, wait) are documented in the schema, so the description need not repeat them. It adds no meaning beyond the schema, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (disable) and resource (Hetzner Rescue System for a Server) and states the resulting state: the server boots from its disks. This is clearly distinct from siblings like hcloud_server_enable_rescue_action or hcloud_server_reboot_action.
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?
Explains the operational context well, including that rescue mode auto-disables after first boot or 60 minutes of non-use, which tells an agent the call is often unnecessary. It does not explicitly name the counterpart tool (enable_rescue_action) or state exclusions, 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.
hcloud_server_enable_backup_actionA
Enable and Configure Backups for a Server
Enables and configures the automatic daily backup option for the Server. Enabling automatic backups will increase the price of the Server by 20%. In return, you will get seven slots where Images of type backup can be stored.
Backups are automatically created daily.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, openWorld behavior, so the description is free to add cost and capacity context, which it does: a 20% price increase and seven backup image slots, plus daily creation cadence. It does not say what happens if backups are already enabled or what resource is returned, so it stops short of 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?
The lead sentence is a clear front-loaded summary and the pricing and slots detail is the useful payload. There is mild redundancy between the title and the first sentence ('Enables and configures... Enable and configure'), which keeps it from 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?
With annotations covering safety semantics and full schema coverage, the description supplies the missing commercial and retention context (20% cost, 7 slots, daily cadence). The one gap is the response shape, since there is no output schema and the description does not say an action is returned, though the 'wait' parameter hints at an async action.
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 the wait polling flag) are already self-documenting; the description adds nothing about them. Baseline 3 is correct when the schema carries the load.
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 pair (enable and configure) and a precise resource (a Server's automatic daily backup option). An agent can distinguish this from hcloud_server_disable_backup_action and hcloud_server_backup (which creates a backup now) without inspecting 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?
The description implies usage (turn on automatic daily backups) and states the tradeoff, but never explicitly says when to prefer this over hcloud_server_backup or hcloud_server_disable_backup_action, and no prerequisites (server state, permissions) are given. The correct tool is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_enable_rescue_actionADestructive
Enable Rescue Mode for a Server
Enable the Hetzner Rescue System for this Server. The next time a Server with enabled rescue mode boots it will start a special minimal Linux distribution designed for repair and reinstall.
In case a Server cannot boot on its own you can use this to access a Server’s disks.
Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes.
Enabling rescue mode will not reboot your Server - you will have to do this yourself.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Strong beyond-annotation disclosure: rescue mode auto-disables on first boot or after 60 minutes of non-use, and enabling it does not reboot the server. This is exactly the lifecycle context annotations cannot express. It omits what the SSH key injection does when ssh_keys is empty (whether a password is returned instead), which matters for a destructive/openWorld 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?
Front-loaded with the action, then the rationale, then two crisp behavioral facts (auto-expiry, no reboot). Every sentence carries information; only the markdown link to soft-reboot is mild 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?
With no output schema, the description should ideally hint at what an action resource is returned (especially given the 'wait' parameter that polls it), and it does not. Otherwise the operational picture — purpose, failure scenario, expiry, reboot requirement — is complete enough for an agent to call this 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 coverage is a middling 67%, and the description says nothing about any of the three parameters — not the required server id, not the body.ssh_keys array used to inject keys into the rescue system, and not the 'wait' polling switch. For a nested-object body where the user must supply SSH keys, the description leaves real ambiguity unaddressed.
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 opens with a specific verb+resource ('Enable Rescue Mode for a Server') and explains concretely what the rescue system is: a minimal Linux distribution for repair and reinstall. It reads clearly against hcloud_server_disable_rescue_action and hcloud_server_reboot_action, but it never names or contrasts with the sibling hcloud_server_rescue, which an agent could easily confuse with this 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?
It gives an explicit trigger condition ('In case a Server cannot boot on its own you can use this to access a Server's disks'), which is genuine usage guidance, and it clarifies the relationship to rebooting ('you will have to do this yourself'). It stops short of naming the alternatives (disable_rescue, request_console, reboot) or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_powerCDestructive
Run a power operation on a server (poweron / poweroff / reboot / shutdown / reset). Hand-tuned wrapper that polls the resulting action by default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| op | Yes | ||
| wait | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the danger profile is known. The description earns credit for disclosing the polling behavior ('polls the resulting action by default'), which is real operational context absent from the schema. It stops short of saying what happens on failure, that reset/poweroff cause immediate downtime, or what a polled call returns.
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, no filler, with the operation scope front-loaded. The parenthetical enum list is somewhat redundant with the schema, which is the only minor 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 destructive mutation with 0% parameter documentation, no output schema, and five near-identical siblings, the description omits the two things an agent most needs: why to pick this over the per-op tools, and what wait actually changes. Annotations cover safety, but the routing and parameter gaps are substantial.
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 0%, so the description carries the full burden, and it mostly does not. Listing the op values just duplicates the enum already in the schema; 'id' is never explained; and 'wait' is only obliquely implied by 'polls by default' rather than stated as the flag that controls blocking versus returning the action immediately.
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 (run a power operation) and resource (server) and enumerates the five supported ops, so the action space is unambiguous. However, it does not distinguish itself from the five dedicated sibling tools (hcloud_server_poweron_action, hcloud_server_poweroff_action, hcloud_server_reboot_action, hcloud_server_shutdown_action, hcloud_server_reset_action), leaving the agent unable to tell why this wrapper exists alongside 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 use this composite tool versus the single-op siblings that cover every one of its enum values. The one usage-relevant statement ('polls the resulting action by default') implies the wait parameter but never says when to set wait=false or that a non-waiting variant exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_poweroff_actionADestructive
Power off a Server
Cuts power to the Server. This forcefully stops it without giving the Server operating system time to gracefully stop. May lead to data loss, equivalent to pulling the power cord. Power off should only be used when shutdown does not work.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, but the description adds concrete behavioral context: it cuts power, gives the OS no time to gracefully stop, may cause data loss, and is equivalent to pulling the power cord. This is meaningful disclosure beyond the structured annotation, and it does not contradict the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and then provides the critical risk context in a short sequence. Every sentence contributes to understanding the action's severity and appropriate use, with no irrelevant material.
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 server action with complete parameter documentation, destructive annotations, and no output schema, the description covers purpose, risk, and alternative usage. It gives an agent enough to decide when to call it and what behavior to expect.
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 the server id and wait parameters are documented directly in the schema. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: powering off a server. It immediately distinguishes this from a graceful shutdown by explaining that it cuts power and forcefully stops the server, so an agent can differentiate it from siblings like hcloud_server_shutdown_action.
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 explicitly says power off should only be used when shutdown does not work, which gives a clear when-to-use condition and names the preferred alternative. This is exactly the routing guidance an agent needs to avoid using the forceful action unnecessarily.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_poweron_actionC
Power on a Server
Starts a Server by turning its power on.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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 elsewhere. The description adds no behavioral context of its own: it does not say the call is asynchronous, that it returns an Action object, that 'wait' polls it, or what happens when the server is already running.
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 short, but the second sentence is pure redundancy of the heading, so half the content does no work. No front-loaded detail beyond 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?
For a mutating, open-world action tool with no output schema, the description omits essentials: that it triggers an async action whose progress is polled by 'wait', and that the server must be powered off. An agent can guess from the name but is not informed.
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 and wait) are fully documented in the schema, so the description does not need to explain them. It adds nothing beyond the schema, which is the baseline 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?
The description names a specific verb and resource ('Power on a Server', 'turning its power on'), so the intent is understandable. But the second sentence only restates the first, and nothing distinguishes it from close siblings such as hcloud_server_power, hcloud_server_reset_action, or hcloud_server_reboot_action, so an agent gains no discriminating 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 guidance on when to use this versus hcloud_server_power or hcloud_server_reboot_action, and no stated preconditions (e.g. the server should currently be off). Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_reboot_actionADestructive
Soft-reboot a Server
Reboots a Server gracefully by sending an ACPI request. The Server operating system must support ACPI and react to the request, otherwise the Server will not reboot.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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. The description adds a genuinely non-obvious behavioral trait — the operation depends on guest ACPI support and can silently fail to reboot — which is knowledge you cannot get from the annotations or schema. It omits return/action-object semantics, which keeps it below 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 essential capability stated first and the caveat second. Nothing is repeated from the title or schema.
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 action tool with annotations and no output schema, the description covers purpose, mechanism, and the main failure mode. A brief note on what the call returns (an async action, hence the `wait` flag) and the alternative for non-ACPI guests would make 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 coverage is 100%, and both the server id and the `wait` polling flag are fully documented in the schema. The description adds no parameter-level meaning (it never mentions the polling behavior), 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 ('Soft-reboot a Server') and immediately clarifies the mechanism ('gracefully by sending an ACPI request'), which implicitly separates it from hard-reset siblings like hcloud_server_reset_action. It never names an alternative explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition and failure condition: the OS must support ACPI and react to the request, otherwise the reboot will not happen. That is real when-to-use/should-not-expect-success guidance, but it stops short of routing the agent to the hard-reset tool when ACPI is unavailable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_rebuildBDestructive
Rebuild a server from an image. Accept image_id (integer) OR image_name (string). Hand-tuned wrapper; polls the resulting action by default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| wait | No | ||
| image_id | No | ||
| image_name | No |
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 known. The description adds genuinely new behavior: that it is a hand-tuned wrapper and that it polls the resulting action by default. However, for a destructive operation it omits the most important consequence — that the server's disk is wiped and all existing data is lost — which is exactly the kind of 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?
Three terse sentences, front-loaded with the action and immediately followed by the parameter alternatives. No filler; each clause carries information. Slightly clipped in a way that leaves the destructive consequence unstated.
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?
A destructive, open-world mutation with no output schema and zero schema description coverage needs more than this. It should warn that the rebuild destroys existing server state, mention what the polled action returns or when it resolves, and clarify the required id. The image argument handling is the only area covered 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 description coverage is 0%, so the description must compensate. It usefully documents the image_id OR image_name mutual exclusivity, which the schema does not express, and the "polls by default" clause explains the wait parameter. But the required id parameter is never described and mutual exclusivity is not stated as an enforced constraint.
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 ("Rebuild a server from an image") that an agent can match against the server tool family, and implicitly positions itself as the hand-tuned wrapper around the low-level rebuild action. It does not explicitly name the sibling hcloud_server_rebuild_action as the alternative, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says what the tool does but never says when to choose it over hcloud_server_rebuild_action, hcloud_server_reboot_action, or hcloud_server_reset_action. No preconditions, no exclusions, no caution about when rebuilding is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_rebuild_actionADestructive
Rebuild a Server from an Image
Rebuilds a Server overwriting its disk with the content of an Image, thereby destroying all data on the target Server
The Image can either be one you have created earlier (backup or snapshot Image) or it can be a completely fresh system Image provided by us. You can get a list of all available Images with GET /images.
Your Server will automatically be powered off before the rebuild command executes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds real value on top: it bolds that all data on the target disk is destroyed, notes the server is automatically powered off first, and explains that previous user_data is re-used if omitted. It omits async/action semantics, but the safety-relevant behavior is well disclosed.
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?
Short, front-loaded, and the destructive warning appears immediately after the purpose. Minor redundancy between the header line and the first sentence, but no 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 destructive mutation with a nested body and no output schema, the description covers data loss, power-off behavior, and image sourcing but leaves the action/async model and the `wait` polling parameter unexplained. 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?
At 67% schema coverage the description adds meaning for the `image` parameter by explaining that backup, snapshot, or system images are acceptable. It says nothing about the `wait` polling parameter or the nested `user_data` field, so full coverage is not achieved.
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 ('Rebuild a Server from an Image') and elaborates on the mechanics of overwriting the disk. It does not distinguish itself from the close sibling hcloud_server_rebuild or from related actions like reset/reboot, so sibling differentiation is missing.
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 useful context on which image to choose (backup/snapshot vs. fresh system image) and points to GET /images for discovery, but never states when to prefer this over siblings like hcloud_server_rebuild, hcloud_server_reset_action, or a full server recreate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_remove_from_placement_group_actionCDestructive
Remove from Placement Group
Removes a Server from a Placement Group.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, and the description adds nothing further — no mention of preconditions (e.g. server state), what happens to the placement group afterwards, or that the result is an async action. No contradiction with the annotations, but no added value either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the second sentence is a pure duplicate of the heading and the tool name, so structural space is spent on redundancy rather than front-loading any new constraint.
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 should say what the action returns (an action object), whether the placement group is affected, and any state requirements. None of that is present, so an agent must guess.
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 'id' (server) and 'wait' (polling) parameters are already fully documented in the schema. The description adds no parameter-level meaning beyond that, which matches the baseline-3 expectation when 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?
The body sentence 'Removes a Server from a Placement Group' restates the tool name and title verbatim without adding scope, preconditions, or differentiation from the sibling hcloud_server_add_to_placement_group_action.
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 indication of when to use this instead of the sibling add action, delete_placement_group, or a direct server update. The agent must infer the entire usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_request_console_actionADestructive
Request Console for a Server
Requests credentials for remote access via VNC over websocket to keyboard, monitor, and mouse for a Server. The provided URL is valid for 1 minute, after this period a new url needs to be created to connect to the Server. How long the connection is open after the initial connect is not subject to this timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint and destructiveHint, so the description's real contribution is the behavioral detail it adds: the returned URL expires after 1 minute while an established connection is not subject to that timeout. That is genuinely useful and non-obvious. It stops short of saying why a read-like 'request' carries destructiveHint=true or what authorization is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first line and the timeout caveat follows immediately. The heading slightly duplicates the tool name, but there is no filler beyond that.
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 tells the agent what comes back (a URL) and how long it lives, which is the key operational fact for this tool. Combined with annotations covering safety hints, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (id, wait) are documented in the schema, so the schema carries the parameter burden. The description adds no extra semantics about the server identifier or the polling behavior of wait, making 3 the appropriate 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 states a specific verb and resource ('Request Console for a Server') and then specifies exactly what is obtained: VNC-over-websocket credentials for keyboard, monitor, and mouse. No sibling tool offers console access, so there is nothing to confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — the agent can infer this is the tool for out-of-band VNC access — but the description never states prerequisites (server must be running? root password set?) or points to alternatives such as rescue mode or SSH when console access is not the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_rescueBDestructive
Toggle Hetzner rescue mode on a server. When enabling, defaults type to 'linux64' and accepts ssh_keys (array of SSH-key ids). Hand-tuned wrapper.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| type | No | linux64 | |
| wait | No | ||
| enable | Yes | true to enter rescue, false to leave. | |
| ssh_keys | No |
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 covered. The description adds useful behavior (default type is 'linux64', ssh_keys are SSH-key IDs) beyond the structured data, but omits that entering rescue mode reboots/reconfigures the server and what the 'wait' flag does; 'Hand-tuned wrapper' is vague filler.
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 with the core action front-loaded and no redundant restatement of the schema. The trailing 'Hand-tuned wrapper' adds no actionable information and could be cut.
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 5-parameter, destructive, open-world action with no output schema, the description covers the essentials (id + enable, type default, ssh_keys) but leaves 'wait' unexplained and does not position this tool against the enable/disable siblings. Adequate to call, incomplete for correct 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 coverage is only 20% (only 'enable' is documented), so the description must compensate. It does explain the default 'type' and the meaning of 'ssh_keys', but says nothing about 'wait' (default true) or the 'id' parameter, leaving two of five parameters ambiguous.
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: 'Toggle Hetzner rescue mode on a server.' An agent knows exactly what it acts on. However, it never names its near-duplicate siblings hcloud_server_enable_rescue_action and hcloud_server_disable_rescue_action, so there is no differentiation from those 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?
No guidance on when to use this toggle versus the dedicated enable/disable rescue siblings, and no prerequisites (e.g. server must be off/rebooted). The 'toggle' framing plus the 'enable' boolean implies usage but leaves the choice between this and the two _action siblings entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_reset_actionADestructive
Reset a Server
Cuts power to a Server and starts it again. This forcefully stops it without giving the Server operating system time to gracefully stop. This may lead to data loss, it’s equivalent to pulling the power cord and plugging it in again. Reset should only be used when reboot does not work.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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 crucial context they cannot convey: loss of graceful shutdown and the risk of data loss, plus the power-cord analogy. It does not mention that the operation is asynchronous and returns an action object, which is a minor omission.
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 outcome, then the warning, then the usage constraint. Slightly redundant in restating the force-stop consequence twice ('without time to gracefully stop' and 'pulling the power cord'), but every sentence still contributes risk or routing 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 no-output-schema, two-parameter mutation, the description covers the destructive nature, the data-loss risk, and the alternative. The only real omission is that the call is async and can be polled via the wait parameter, which the schema covers but the description does not connect.
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 only two parameters, both fully described in the schema (id and wait/poll). The description adds nothing about either parameter, so it sits at the baseline where the schema carries the 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 (reset) on a specific resource (Server) and immediately defines the semantics: cuts power and restarts without graceful OS shutdown. This clearly distinguishes it from the sibling reboot, poweroff, and poweron actions in the same family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the fallback condition: 'Reset should only be used when reboot does not work,' which routes the agent to hcloud_server_reboot_action first. That is a direct when-to-use/when-not-to-use rule with the alternative implied by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_reset_password_actionADestructive
Reset root Password of a Server
Resets the root password. Only works for Linux systems that are running the qemu guest agent. Server must be powered on (status running) in order for this operation to succeed.
This will generate a new password for this Server and return it.
If this does not succeed you can use the rescue system to netboot the Server and manually change your Server password by hand.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation as destructive and open-world. The description adds meaningful behavior beyond that: the server must be running, it only works on Linux with qemu guest agent, it generates and returns a new password, and rescue mode is a fallback if it fails. It does not cover auth requirements or rate limits, but the core behavior is well disclosed.
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 and reasonably tight, but the opening sentence 'Reset root Password of a Server' is immediately restated as 'Resets the root password,' creating slight redundancy. The rest of the content earns its place by covering prerequisites, return value, and fallback.
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 server action with no output schema, the description covers the key operational constraints, the returned new password, and a fallback path. It could be slightly more complete by mentioning that the old password becomes invalid or that authentication/permissions may be required, but it is broadly sufficient.
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 input schema has 100% description coverage for both parameters (id and wait), so the schema already explains them. The description does not add parameter-level detail beyond 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: resetting the root password of a server. It clearly differentiates this operation from general server update tools, but it does not explicitly name sibling alternatives such as the rescue-system actions to reinforce 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?
It provides important usage context: Linux only, qemu guest agent required, and server must be running. However, it does not explicitly state when to choose this tool over alternatives like hcloud_server_enable_rescue_action or manual rescue-system password changes; the fallback mention is only after failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_shutdown_actionADestructive
Shutdown a Server
Shuts down a Server gracefully by sending an ACPI shutdown request. The Server operating system must support ACPI
and react to the request, otherwise the Server will not shut down. Please note that the action status in this case
only reflects whether the action was sent to the server. It does not mean that the server actually shut down
successfully. If you need to ensure that the server is off, use the poweroff action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| wait | No | Poll the resulting action until success/error or timeout. |
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 a non-obvious caveat that annotations cannot express: the returned `action` status only reflects that the request was sent, not that the shutdown succeeded. This directly prevents a false success interpretation and is exactly the kind of extra context the lower bar for annotated tools is meant to reward.
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 mechanism, then the failure caveat, then the alternative. Each sentence contributes distinct information and none restates the name or title.
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, and the description covers the one thing an agent most needs to know about the result: the action status is not a shutdown guarantee. The only residual gap is return-shape/polling detail, which is partially covered by the `wait` parameter description in 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%, so `id` and `wait` (poll until success/error or timeout) are already documented in the schema. The description adds nothing about either parameter, including the notable `wait` polling behavior, so it sits at the baseline for a fully documented 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?
Specific verb+resource ('Shutdown a Server') with the mechanism named: an ACPI shutdown request. It also distinguishes itself from hcloud_server_poweroff_action by describing the graceful vs. forced semantics, so an agent can pick between the two without reading 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?
States the precondition (the OS must support and react to ACPI) and gives an explicit routing rule: 'If you need to ensure that the server is off, use the `poweroff` action.' That is a when-to-use-this vs. when-to-use-alternative statement, not an inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_server_snapshotB
Create an image (snapshot or backup) of a server. Default type is 'snapshot'. Hand-tuned wrapper that polls the resulting action.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| type | No | snapshot | |
| wait | No | ||
| labels | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true). The description adds genuine value with 'Hand-tuned wrapper that polls the resulting action', telling the agent the call blocks until the action completes when wait=true. It does not cover permissions needed, retention implications of snapshots vs backups, or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loading the core action and following with the default and polling note. No filler, though the polling sentence could be tied explicitly to the 'wait' parameter.
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 tool with no output schema and five undocumented parameters, the description is only minimally sufficient. It hints at polling behavior but does not explain the returned image/action, the meaning of 'id', or the labels/description parameters, so an agent cannot call it fully informed.
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 0% across 5 parameters. The description only clarifies the 'type' parameter default; it says nothing about 'id' (server identifier), 'wait' (blocking vs fire-and-forget), 'labels', or 'description', leaving four parameters undocumented anywhere.
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 an image (snapshot or backup) of a server'), which is clear and actionable. It does not, however, differentiate itself from close siblings such as hcloud_server_backup or hcloud_server_create_image_action, so the agent cannot tell from the text alone which to pick.
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 usage hint is 'Default type is snapshot', which clarifies one parameter choice but gives no when-to-use/when-not guidance and no mention of the near-duplicate sibling tools. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_certificateCDestructive
Update a Certificate
Updates the Certificate properties.
Note: if the Certificate object changes during the request, the response will be a “conflict” error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Certificate. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds one piece of genuinely non-annotated behavior: a concurrent-modification on the object yields a "conflict" error, which is useful for retry logic. However, the annotations already declare destructiveHint=true and openWorldHint=true, and the description never explains what the destructive mutation actually affects (e.g., that supplied labels overwrite the existing set) or whether changes are 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?
Short and front-loaded with the action, which is good, but the middle sentence is redundant with the first and the conflict note is phrased ambiguously ("the Certificate object changes during the request") without stating how the agent should recover.
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 indicate what a successful update returns (the updated certificate resource) and it does not. For a destructive, open-world mutation requiring both id and body, the description leaves the mutation semantics, permissions, and response shape unexplained.
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 50% and the description mentions no parameters at all, so it does not compensate. It only says "properties" generically, giving no hint that the body carries name and labels, or that id is the target certificate.
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 verb+resource pair (Update a Certificate) is unambiguous, and the tool is clearly the certificate-mutation counterpart to create/delete/get certificate siblings. The second line ("Updates the Certificate properties.") is a near-restatement and never says which properties (name, labels) are updatable, so it adds almost no clarity beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 vs. alternatives such as hcloud_create_certificate, hcloud_delete_certificate, or hcloud_certificate_retry_action, nor any prerequisite or id-requirement context. An agent must infer everything about selection from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_firewallBDestructive
Update a Firewall
Update a Firewall.
In case of a parallel running change on the Firewall a conflict error will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Firewall. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the mutating profile is covered. The description adds the concurrency behavior (conflict error on parallel change), which is genuinely useful, but says nothing about what the update affects, whether omitted fields are preserved, or that labels are replaced wholesale (that detail 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?
It is short, but 'Update a Firewall' is immediately restated as 'Update a [Firewall](#tag/firewalls),' which adds nothing but anchor markup. The one substantive sentence, about the conflict error, is buried 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 two-parameter mutation with no output schema, the definition covers the essentials: the target resource, the ID requirement, and the concurrency caveat. The main remaining gap is not clarifying that the operation only touches name and labels and how unspecified fields behave.
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 only 50% schema description coverage and a nested body object, the description should compensate but instead adds zero parameter detail. It never mentions that only name and labels are updatable, nor that the labels map overwrites the existing set, leaving half the parameter surface undescribed.
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 a Firewall'), which clearly identifies the operation. However, it does not differentiate from close siblings such as hcloud_firewall_set_rules_action or hcloud_firewall_apply_to_resources_action, which the agent must disambiguate on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes a conflict error occurs when a parallel change is running, which is a useful operating condition but not a when-to-use rule. It gives no guidance on choosing this tool over hcloud_get_firewall, hcloud_delete_firewall, or the more specific firewall action tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_floating_ipCDestructive
Update a Floating IP
Update a Floating IP.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Floating IP. | |
| body | Yes |
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 externally. The description adds no behavioral context whatsoever — it doesn't warn that the labels map replaces the existing set, that the operation overwrites current values, or what a successful response looks like. No contradiction, but zero added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, but the two sentences are pure duplication — the second adds only a markdown anchor to the first. Brevity here comes from under-specification rather than efficiency.
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 a nested request body, no output schema, and partial parameter documentation, the description is inadequate. An agent cannot tell what the update affects or what constraints apply without reading the raw 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 50% and the body object itself is undocumented; the description does not mention the id or any updatable field. With a nested FloatingIPUpdateRequest containing name/labels/description, the description should at least signal which fields are mutable, but it contributes nothing 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 says only 'Update a Floating IP' and then repeats the same statement with a docs anchor link. It restates the tool name rather than explaining what an update can change (name, labels, description) or how it differs from the many sibling update_* tools. An agent learns nothing beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no distinction from siblings such as hcloud_floating_ip_assign_action or hcloud_update_primary_ip, and no prerequisites mentioned. The agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_imageADestructive
Update an Image
Updates the Image. You may change the description, convert a Backup Image to a Snapshot Image or change the Image labels. Only Images of type snapshot and backup can be updated.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Image. | |
| body | Yes |
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 the useful eligibility constraint, but it omits the operationally important detail that supplied labels overwrite the entire existing label set (that warning lives only in the nested schema) and says nothing about irreversibility of the backup-to-snapshot conversion.
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?
Short and front-loaded with the action, then the mutable fields, then the constraint. Minor waste in the opening redundancy ('Update an Image' followed by 'Updates the Image'), which repeats the same information twice.
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?
A two-parameter tool (one nested body) with no output schema and annotations covering safety; the description names all mutable fields and the type restriction, which is most of what an agent needs. The remaining gap is the overwrite semantics of labels, which is documented in the schema but not surfaced in the description.
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 50% schema description coverage, the description compensates well: it explains that `type` is a conversion from backup to snapshot (the schema only says 'Destination Image type to convert to') and that description/labels are the other mutable fields. It does not clarify the label-overwrite semantics or that `id` must reference an existing updatable Image.
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 Image) and immediately enumerates the three mutable aspects: description, backup-to-snapshot conversion, and labels. It also states the hard eligibility constraint that only snapshot and backup Images can be updated, which lets an agent distinguish this from get_image, list_images, or image action 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?
The eligibility rule ('Only Images of type `snapshot` and `backup` can be updated') is a concrete precondition an agent can check before invoking, and the enumeration of changeable fields implies scope. It does not, however, reference any sibling tool (e.g., use hcloud_get_image first to confirm the type), so routing context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_load_balancerBDestructive
Update a Load Balancer
Updates a Load Balancer. You can update a Load Balancer’s name and a Load Balancer’s labels.
Note: if the Load Balancer object changes during the request, the response will be a “conflict” error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Load Balancer. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds a genuinely useful behavioral fact not in annotations: a concurrent object change causes a 'conflict' error, which signals optimistic concurrency handling. It does not, however, say what the response contains or whether an empty body is a no-op.
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 lines, front-loaded with the action and then the allowed fields. Minor redundancy in restating 'Update a Load Balancer' twice, but nothing is padded or 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 the description never states what is returned (presumably the updated Load Balancer) or whether sending an empty body is valid. The conflict note is helpful, but for a mutation tool with a nested body object, the description leaves meaningful 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 50%, and the description compensates by naming the two updatable fields (name, labels), confirming that the nested body accepts only these. It adds no format, length, or overwrite semantics beyond what the schema already documents (e.g. label set replacement is only in the schema). 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 a Load Balancer') and narrows the scope to name and labels, which implicitly distinguishes it from siblings like hcloud_load_balancer_update_service_action and hcloud_load_balancer_change_protection_action. Sibling differentiation is implied by scope rather than stated explicitly, 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 defines what can be changed but gives no when-to-use guidance, no preconditions (the Load Balancer must already exist and be referenced by id), and never names an alternative tool. The reader must infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_networkCDestructive
Update a Network
Update a Network.
If a change is currently being performed on this Network, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Network. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already flag a destructive, write, open-world operation. The description adds genuinely new behavioral context: a concurrent change results in an error response with code `conflict`. It doesn't mention that some fields (labels) fully overwrite existing values, nor what a successful response contains, which matters for a destructiveHint=true 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?
Short and front-loaded, but the first two lines restate the same thing with anchor-link markup noise, giving only one substantive sentence (the conflict note).
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 nested-body mutation tool with no output schema and half-documented parameters, the description omits update semantics (partial vs. full replacement), permission requirements, and return shape. Only the concurrency-conflict behavior is 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 only 50% (the nested `body` object itself is undocumented) and the description adds zero parameter meaning — it never mentions name, labels, or expose_routes_to_vswitch, nor whether omitted fields are preserved. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update a Network') so the agent knows this mutates an existing network. It doesn't distinguish this from the many closely related network mutation siblings (hcloud_network_add_subnet_action, hcloud_network_change_ip_range_action, etc.), so an agent must infer that this is the general attribute update.
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 specialized network action tools or hcloud_get_network. The only conditional content is about the conflict error, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_placement_groupCDestructive
Update a PlacementGroup
Updates the Placement Group properties.
Note: if the Placement Group object changes during the request, the response will be a “conflict” error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Placement Group. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so safety is covered. The description adds one genuinely useful behavioral detail beyond annotations: a concurrent-modification 'conflict' error. However it omits what 'update' affects (e.g. that labels are fully overwritten, a destructive behavior the agent should know about) and says nothing about return values 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?
Short, but the first two sentences are redundant restatements of the same fact ('Update a PlacementGroup' / 'Updates the Placement Group properties'). The one valuable sentence, the conflict note, is buried at the end rather than 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 destructive mutation with a nested request body, no output schema, and only half the parameters documented, the description is insufficient: it doesn't enumerate what can be changed, doesn't warn that labels replace rather than merge, and gives no prerequisite or failure-mode context beyond the conflict case.
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 50%, so the description needs to compensate and does not. It never names the updatable fields (name, labels) nor the required id, and offers no format or overwrite semantics beyond what 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?
States a specific verb and resource ('Update a PlacementGroup'), unambiguous about the operation. It does not differentiate itself from siblings like hcloud_get_placement_group or hcloud_delete_placement_group, though the verb makes the distinction reasonably implicit.
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 alternatives, no prerequisites (permissions, whether the group must be empty), and no mention of related tools such as hcloud_server_add_to_placement_group_action. The agent is left to infer everything about applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_primary_ipCDestructive
Update a Primary IP
Update a Primary IP.
If another change is concurrently performed on this Primary IP, a error response with code conflict will be returned.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Primary IP. | |
| body | Yes |
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 profile is known. The description adds genuinely new behavioral context: a concurrent modification yields a `conflict` error response. It does not, however, describe which fields are mutable or the overwrite semantics of labels beyond what the schema says.
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?
Short and front-loaded, but the value is diluted by boilerplate anchor markup ('[Primary IP](#tag/primary-ips)') and a grammar slip ('a error response'). The sentence count is appropriate for the content, but roughly half the text is restatement plus a link.
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 could reasonably state what the update returns or what a successful update looks like, and it omits the mutable field set. The conflict behavior note is valuable, but a nested-object mutation tool warrants more disclosure of side effects such as label overwrite.
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 low (50%) and the description adds no parameter-level meaning whatsoever – it never mentions id, name, labels, or auto_delete. The nested body object carries its own descriptions, but the top-level call semantics are left to the schema alone.
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 a Primary IP'), which is clear enough to distinguish from read/delete siblings. However, the many sibling update_* tools mean the description does nothing to differentiate the fields or scope of this particular update.
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 hcloud_get_primary_ip, hcloud_primary_ip_change_protection_action, hcloud_primary_ip_change_dns_ptr_action, or hcloud_primary_ip_assign_action, which are all plausible alternatives touching the same resource. The only conditional content is a concurrency caveat, not a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_serverBDestructive
Update a Server
Updates a Server. You can update a Server’s name and a Server’s labels.
Please note that Server names must be unique per Project and valid hostnames as per RFC 1123 (i.e. may only contain letters, digits, periods, and dashes).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Server. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation profile is covered by structured data. The description adds genuinely useful behavior not in the annotations — server names must be unique per Project and valid RFC 1123 hostnames — but it omits that label updates replace the entire label set, that omission is only in the schema, and never acknowledges the destructiveHint explicitly.
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?
Short and front-loaded, with the constraint placed at the end where it belongs. However, the first line ("Update a Server") is pure repetition of the second sentence ("Updates a Server"), so it wastes a line of the small budget.
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 a nested body object and no output schema, the description covers what can be changed and the naming rule, but says nothing about the overwrite semantics of labels, required permissions, or whether other server properties are out of scope here. Adequate but with visible 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 ~50%, so the description must contribute; it names the two updatable body fields and adds the non-obvious constraint that names are unique per Project and must be valid hostnames per RFC 1123, going beyond the schema's thin "New name to set." It adds nothing about labels semantics (overwrite behavior), which is left to 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 ("Updates a Server") and enumerates the two mutable fields (name, labels), so the scope is unambiguous. It does not contrast itself with the many other server-mutating siblings (hcloud_server_change_type, hcloud_server_change_protection_action, etc.), leaving the agent to infer that only name/labels belong 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?
There is no guidance on when to use this versus the dozens of other server tools; the description never says that type, protection, network attachments and similar changes must go through the dedicated *_action endpoints. An agent wanting to rename a server is served, but one wanting to modify other server attributes 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.
hcloud_update_ssh_keyCDestructive
Update an SSH key
Updates an SSH key. You can update an SSH key name and an SSH key labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the SSH Key. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, but the description adds no behavioral context beyond 'updates'. It omits that the supplied labels set fully replaces the existing labels – critical information for an agent deciding whether this call destroys state – leaving only the nested schema to convey it.
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, but the title line and the body sentence are near-verbatim repeats ('Update an SSH key' / 'Updates an SSH key'), so half the text is redundant filler rather than new 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 a nested body object, no output schema, and no annotation elaboration, the description leaves out the label-replacement side effect, required id semantics, and what happens to fields not supplied – too much is left implicit.
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 50%; the description names the two mutable body fields (name, labels) and so roughly mirrors what the schema documents, but it adds nothing about the id requirement, label overwrite semantics, or immutable fields.
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 SSH key') and names the two mutable fields (name, labels), which distinguishes it from the get/list/create/delete siblings sharing the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus hcloud_create_ssh_key, hcloud_delete_ssh_key, or the other update_* tools, and no prerequisites or caveats about what an update affects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_volumeCDestructive
Update a Volume
Updates the Volume properties.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| body | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this is a destructive, non-read-only update, but the description adds no behavioral context. In particular, it does not mention that labels overwrite the existing label set, which is important for a destructive update.
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 two sentences are redundant: the first restates the tool name and the second paraphrases it without adding information. Brevity here reflects under-specification rather than efficient communication.
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 destructive mutation tool with no output schema and a nested request body, yet the description says nothing about what changes, what gets overwritten, or operational effects. Annotations and schema provide some safety context, but the description remains materially 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?
Schema description coverage is only 50%, and the description provides no parameter-level detail. The schema documents id, name, and labels reasonably well, but the description does not compensate for the coverage gap or clarify the request body 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?
The description only restates the tool name: "Update a Volume" followed by "Updates the Volume properties." It does not identify which properties can be updated, so it adds almost no specificity beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus sibling volume actions such as resize, attach, detach, or change protection. It gives neither prerequisites nor exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_zoneCDestructive
Update a Zone
Updates a Zone.
To modify resource record sets (RRSets), use the RRSet Actions endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true. The description adds nothing beyond them: it does not say that the label set is *overwritten* (only the nested schema says that), nor what permissions or side effects apply, nor what a 'destructive' zone update actually destroys. With annotations carrying the safety profile, the description should at minimum explain the overwrite semantics; it does not.
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, but a large share of the text is a raw markdown link and a restated title ('Update a Zone / Updates a [Zone]...'). Minimal waste in length, yet the content that is there is low-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 flagged destructive with no output schema and only 50% param coverage, the description should explain what mutating a zone affects, that labels are fully replaced, and what the call returns. None of that is present, so an agent cannot predict the effect of the call from the description.
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 50%, and the description supplies no parameter information at all — no mention of `id_or_name` (ID vs name), no mention of the `body`/labels payload. The nested object is documented in the schema, but the description fails to compensate for the coverage gap it leaves.
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 verb and resource ('Update a Zone') and includes a markdown link, but never says what part of a zone is updatable (only `labels`, per the schema). It does at least draw a boundary against the RRSet endpoints, so an agent can rule those out, but the core purpose ('what does updating a zone change?') is left vague.
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?
One explicit when-not is given: to modify record sets, use the RRSet Actions endpoints. However, there is no guidance on when this tool *is* the right choice (e.g. only for re-labelling), and no mention of the many zone-change siblings (hcloud_zone_change_ttl_action, hcloud_zone_change_protection_action) that an agent might otherwise reach for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_update_zone_rrsetADestructive
Update an RRSet
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
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. The description adds genuine behavioral context with the primary-mode restriction and the specific error code, but it never says what the update destroys or whether unmentioned fields are preserved, which matters for a destructive 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?
The core purpose is front-loaded and the mode restriction plus error table are compact and skimmable. The markdown anchor links (#tag/zone-rrsets, #tag/zones) are noise that adds length without meaning.
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 whose annotations carry the destructive/read-write profile, the description supplies the one non-obvious constraint (primary mode) plus its failure signal. It stops short of explaining replace-vs-merge semantics for the RRSet, but the schema partially covers the labels overwrite behavior.
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 75% and the schema already documents rr_name formatting, rr_type enum values, and the labels-overwrite semantics. The description adds nothing about any of the four parameters, so it neither compensates for the remaining gap nor repeats what is better handled 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 clear verb+resource: 'Update an RRSet in the Zone'. It is unambiguous what the tool mutates, but it does not distinguish itself from the many sibling record-level operations (hcloud_zone_rrset_update_records_action, hcloud_zone_rrset_set_records_action, add/remove_records), so an agent cannot tell from the text which of these mutates the RRSet itself versus its records.
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 real precondition, 'Only applicable for Zones in primary mode', tied to a concrete 422 incorrect_zone_mode error. It offers no guidance on when to choose this over the record-level siblings, which is exactly the ambiguity an agent will face here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_volume_attach_actionA
Attach Volume to a Server
Attaches a Volume to a Server. Works only if the Server is in the same Location as the Volume.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a mutating, non-read-only operation, so the main added value is the same-Location requirement. The description says nothing about the automount side effect on the server's filesystem, whether attachment is reversible, or that the optional wait parameter polls the resulting action — all material for an agent deciding whether to call it.
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, the precondition front-loaded alongside the action. Nothing extraneous.
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 with no output schema and an async action model (wait polls until success/error), the description omits return semantics and the automount consequence. The Location constraint covers the main failure mode, but side effects and action-polling behavior are left unexplained.
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 67% and the schema documents id, server, automount and wait individually. The description adds no parameter-level information at all, notably omitting the behavioral meaning of automount and wait, so it sits at the baseline for partially-documented params.
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: attaches a Volume to a Server. It is clear against the sibling hcloud_volume_detach_action and unrelated volume tools, though it doesn't name the inverse 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?
The Location-matching precondition is a useful constraint that tells the agent when the call will fail, but there is no guidance on when to attach versus resize/detach, nor how it relates to the sibling volume action tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_volume_change_protection_actionCDestructive
Change Volume Protection
Changes the protection configuration of a Volume.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
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 safety profile is covered. The description adds nothing beyond that – it doesn't explain that the call returns an async action, that `wait` controls polling, or that setting delete=false removes protection (which is why destructiveHint is true). With annotations present the bar is lower, but there is essentially zero added 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?
Two sentences that say the same thing; the second ('Changes the protection configuration of a Volume.') is near-redundant with the title. Brevity here reflects under-specification rather than efficiency.
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, async, open-world action with no output schema, the description omits the async/action-return behavior, permission requirements, and the meaning of the protection flag. It leaves the agent dependent on the schema and preconceptions from other cloud APIs.
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 67% and the schema already documents `id`, `body.delete` and `wait` precisely. The description references none of them, so it contributes no meaning the schema doesn't already carry; the nested `body` object and the semantics of `wait` (async polling) are left entirely to 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 names the verb ('changes') and the resource ('protection configuration of a Volume'), which is enough to know it toggles protection. However, the second sentence only restates the title in a slightly different form, adding no specificity (e.g. that only delete-protection is controllable). It does not differentiate from siblings like hcloud_volume_delete_volume or the other *_change_protection_action tools beyond what the name already 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 statement of when to use this rather than hcloud_volume_attach_action, hcloud_volume_resize_action, or any of the sibling change-protection tools. No prerequisites or context (e.g. 'use before attempting deletion to guard against accidental loss') are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_volume_detach_actionADestructive
Detach Volume
Detaches a Volume from the Server it’s attached to. You may attach it to a Server again at a later time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as a non-read-only, destructive, open-world action. The description adds meaningful behavioral context by noting the detachment is reversible—the Volume can be attached to a Server again later—which reassures the agent that this is not data loss. It does not mention permission requirements or polling behavior, but the schema already documents the wait parameter.
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 waste. The core action is front-loaded, and the reversibility note is a useful 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 two-parameter mutation action with rich annotations and complete schema coverage, the description covers the essential behavior and the key reversibility property. It does not explain the wait/polling mechanism, but that is documented in the schema, so the description is nearly 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 (id and wait) are fully documented elsewhere. The description does not add any parameter-level detail, such as what the id refers to or how wait interacts with the action lifecycle, 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?
The description states a specific verb (Detach) and resource (Volume) and clarifies it removes the Volume from its attached Server. It implies the inverse operation, hcloud_volume_attach_action, but does not name or explicitly distinguish that sibling 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 phrase 'Detaches a Volume from the Server it’s attached to' implies the precondition that the Volume must be currently attached, and the note about reattaching later hints at temporary detachment. However, there is no explicit when-to-use guidance, no exclusions, and no named alternative such as hcloud_volume_attach_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_volume_resize_actionBDestructive
Resize Volume
Changes the size of a Volume. Note that downsizing a Volume is not possible.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the Volume. | |
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, and the description restates the growth-only constraint (also implied by the schema). It adds nothing about irreversibility, cost implications, or what happens to the attached server during resize — meaningful gaps for a destructive mutation, but not contradictions.
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 operation and immediately followed by the key constraint. No padding, though the duplicated title line 'Resize Volume' 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?
For an action-triggering mutation with no output schema, the description should say that an async action is returned and that wait controls blocking. It is adequate on what changes but silent on the result and on side effects for a mounted Volume.
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 67% and all three parameters (id, body.size, wait) carry their own descriptions, so the baseline is 3. The description adds no syntax, units, or constraints beyond what the schema already states (size in GB, must exceed current size).
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 ('Resize Volume', 'Changes the size of a Volume'), which cleanly distinguishes it from metadata siblings like hcloud_update_volume or hcloud_volume_attach_action. It does not explicitly mention the sibling, but the operation 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?
The description gives one clear consumption rule ('downsizing a Volume is not possible'), which tells the agent when not to call it. It offers no alternatives, no prerequisite checks, and no guidance on the async/wait behavior for callers who need the resize to finish.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_wait_actionARead-only
Poll an existing Hetzner Cloud action until it reaches terminal status (success/error) or the timeout elapses. Returns the final action plus a polling_timed_out flag.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| timeout_ms | No | Override the default poll timeout for this call. | |
| interval_ms | No | Override the default poll interval for this call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, open-world), and the description adds genuinely new behavior: this call blocks until a terminal state or timeout, and a timeout is surfaced as a flag rather than an error. It stops short of stating default timeout/interval values or the maximum blocking duration.
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 front-loaded sentences with no filler: behavior first, return value second. Every clause carries information an 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?
No output schema exists, and the description covers the return shape (final action plus polling_timed_out) alongside the terminal-status semantics. For a three-parameter read-only poller, 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?
Schema coverage is 67% and the description only echoes the timeout concept already documented on timeout_ms; interval_ms is never mentioned and 'id' is not clarified as an action ID (versus any other resource ID). Baseline 3 is appropriate since the schema carries most of the weight.
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 ('Poll an existing Hetzner Cloud action') plus the termination condition and return payload. The polling semantics implicitly separate it from single-fetch siblings like hcloud_get_action, 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?
'Existing action' and 'until it reaches terminal status' imply it is used after an action-returning call, but the description never states that directly, nor when to prefer hcloud_get_action instead, nor what to do when polling_timed_out is true. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_change_primary_nameservers_actionADestructive
Change a Zone's Primary Nameservers
Overwrites the primary nameservers of a Zone.
Only applicable for Zones in secondary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context beyond the annotations by saying it overwrites primary nameservers and only applies in secondary mode. The annotations already mark it destructive and open-world, and the description reinforces the destructive nature without contradicting them. It does not explain the effect on DNS propagation or AXFR behavior, but annotations and schema cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and short: it states the operation, clarifies overwrite semantics, gives the mode restriction, and lists the relevant error. Every sentence and table row 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 destructive zone action with rich nested schema and annotations, the description covers the key precondition and operation-specific failure mode. It does not explain return behavior or wait polling, but those are either schema-documented or not essential to 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 description coverage is 67%, with the nested primary_nameservers fields, id_or_name, and wait described in the schema. The description itself adds no parameter-level meaning, so the schema carries most of the burden and 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 states a specific verb and resource: changing primary nameservers for a Zone. It also clarifies the mutation is an overwrite and scopes it to Zones in secondary mode, distinguishing it from other zone actions.
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 clearly states the key applicability condition: only Zones in secondary mode. It reinforces this with the 422 incorrect_zone_mode error, though it does not explicitly name alternative tools or actions for primary-mode zones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_change_protection_actionCDestructive
Change a Zone's Protection
Changes the protection configuration of a Zone.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
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 safety profile is known. The description adds nothing on top: it does not explain that setting 'delete=true' protects the Zone from deletion while 'false' makes it deletable, does not mention that this is asynchronous and polled via the 'wait' flag, and gives no reversibility or permission context. For a destructive mutation this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but the second sentence merely restates the heading ('Change a Zone's Protection' / 'Changes the protection configuration of a Zone'), so the tiny body contains no information beyond the title. Conciseness here is achieved by omission rather than by density.
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 destructive, open-world mutation with a nested body object and no output schema. The description does not cover what the protection setting means, what changes as a result, the async action/polling behavior implied by 'wait', or required permissions — the bare minimum for an agent to call it safely 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 67% and the description contributes zero parameter meaning — it never mentions id_or_name, wait, or the delete flag. The critical ambiguity is the polarity of 'delete' (protection enabled vs. deletion allowed), which the schema phrase 'Prevents the Zone from being deleted' only partially resolves; the description should disambiguate it and does not.
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 verb ('Changes') and resource ('protection configuration of a Zone'), so the general purpose is inferable. But 'protection' is never defined — it does not say whether this toggles delete protection on or off — and there is no differentiation from sibling protection tools such as hcloud_zone_rrset_change_protection_action or hcloud_server_change_protection_action beyond the resource 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?
There is no statement of when to use this tool, when not to (e.g., prefer hcloud_update_zone for other Zone settings), or what prerequisites/permissions are required. The agent must infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_change_ttl_actionADestructive
Change a Zone's Default TTL
Changes the default Time To Live (TTL) of a Zone.
This TTL is used for RRSets that do not explicitly define a TTL.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true; the description adds meaningful context beyond them — the primary-mode restriction, the specific error code emitted on invalid mode, and the blast radius (affects every RRSet without an explicit TTL). It stops short of stating whether the change is reversible or whether the action is async, which the `wait` parameter hints at but the description never mentions.
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 title sentence followed by scoping and the error table; every element is relevant. The repeated markdown anchor links add minor noise but do not obscure the content.
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 preconditions, impact scope, and the expected error case. Remaining gaps — permission requirements and confirmation of the async action lifecycle — are modest given the schema documents the `wait` polling flag.
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 67%, so two of three parameters are documented inline. The description reinforces what `ttl` governs conceptually (zone-wide default for RRSets), adding some meaning over the schema, but says nothing about `id_or_name` resolution or the `wait` polling behavior. Adequate but not compensating for the coverage gap.
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 ('Change a Zone's Default TTL') and clarifies the scope by explaining that the TTL applies to RRSets that don't define their own TTL, which implicitly separates it from hcloud_zone_rrset_change_ttl_action. It does not name that sibling explicitly, so differentiation requires a small 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?
Explicitly states 'Only applicable for Zones in primary mode' and documents the 422 incorrect_zone_mode failure, giving clear preconditions for use. It does not route to alternatives (e.g. the per-RRSet TTL tool) or say when to prefer this tool over updating an RRSet directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_import_zonefile_actionADestructive
Import a Zone file
Imports a zone file, replacing all resource record sets (RRSets).
The import will fail if existing RRSet are change protected.
See Zone file import for more details. Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag destructive/openWorld, and the description earns credibility beyond them by disclosing the blast radius ('replacing all resource record sets'), a hard precondition (change-protected RRSets cause failure) and a mode restriction. That is exactly the operational context an agent needs before a destructive write.
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 and short, with the destructive scope stated first and conditions after. Minor waste: 'Import a Zone file' is immediately restated as 'Imports a zone file', and the markdown anchor links add noise without 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?
No output schema, but the description covers preconditions, failure modes and the mutation scope, which is what matters for a destructive action. The defaulted wait/polling behavior is left entirely to the schema, which is a small gap for an async action 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 67%, so the schema already documents id_or_name, body.zonefile and the wait polling flag. The description adds no parameter-level meaning, no notes on how much of the zonefile is authoritative or how wait interacts with the async action. 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 ('Import a Zone file') and immediately scopes it with 'replacing all resource record sets', which distinguishes it from the RRSet-level mutation siblings such as hcloud_zone_rrset_set_records_action and hcloud_zone_rrset_add_records_action. The replacement-of-all semantics is the key differentiator and it is front and center.
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 two concrete preconditions: the Zone must be in primary mode, and it will fail if existing RRSets are change-protected. It also documents the 422 incorrect_zone_mode error, which effectively tells the agent when not to call it. It stops short of naming an alternative tool for non-primary zones, so it is clear context without full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_add_records_actionA
Add Records to an RRSet
Adds resource records (RRs) to an RRSet in the Zone.
For convenience, the RRSet will be automatically created if it doesn't exist. Otherwise, the new records are appended to the existing RRSet.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-destructive write against an open world. The description adds materially more: the RRSet is auto-created when missing, records are appended rather than replaced, primary-mode restriction, and the specific 422 failure code. Return shape and wait/polling behavior are not described, keeping it short of 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?
Front-loaded with the operation and effect in the first two sentences, then constraints, then an error table. The pervasive inline anchor links add visual noise but the information density is high and nothing is 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 mutation with nested body, 4 required params and no output schema, the description covers the key behavioral surprises (auto-create, append, zone mode) an agent needs to call it safely. Only the async 'wait' semantics and the returned action object are left unexplained, which the schema partially covers.
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% and the schema already documents rr_name normalization, TTL rules, record value sources, and the 50-item/distinct-value constraints. The description adds no parameter-level meaning 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 and resource ('Adds resource records (RRs) to an RRSet in the Zone') and clarifies the append semantics plus auto-creation. It implies the distinction from set/update siblings via 'appended to the existing RRSet' but never names them, so an agent must infer the contrast.
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 real exclusion ('Only applicable for Zones in primary mode') and documents the 422 incorrect_zone_mode error, which is useful when-not guidance. However, it never names the alternative operations (set_records / update_records / remove_records) or the conditions that select them, leaving sibling choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_change_protection_actionADestructive
Change an RRSet's Protection
Changes the protection of an RRSet in the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Protection of the [RRSet](#tag/zone-rrsets). | |
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose that this is a destructive, non-read-only, open-world operation. The description adds the primary-mode constraint and an operation-specific error, but it does not explain what protection changes imply, whether enabling/disabling is reversible, or what authorization is required. With annotations covering the safety profile, 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?
The description is front-loaded with the operation's purpose and constraint, then uses a compact error table for the notable failure mode. Every sentence and table row contributes useful information without unnecessary verbosity.
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 rich schema descriptions and annotations, the description supplies the key mode restriction and specific error behavior. It does not describe the return value, but there is no output schema and the `wait` parameter's schema description already explains polling behavior.
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 parameters, including the nested `change` boolean, are already well documented. The description adds no parameter-level detail beyond the general concept of an RRSet's protection, which is appropriate at the baseline level.
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: changing an RRSet's protection within a Zone. This clearly distinguishes it from sibling tools that change Zone protection or update RRSet records, 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?
It explicitly limits applicability to Zones in primary mode and documents the resulting `incorrect_zone_mode` error. It does not name alternative tools for other modes, but the operational context is clear enough for correct selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_change_ttl_actionADestructive
Change an RRSet's TTL
Changes the Time To Live (TTL) of an RRSet in the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
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 safety is covered. The description adds real value beyond them with the primary-mode restriction and the specific 422/incorrect_zone_mode failure. It does not explain that the call is asynchronous, what the resulting action contains, or what happens to records when TTL changes.
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?
Purpose is front-loaded in the first sentence, and the error table is well-scoped to operation-specific failures. Minor redundancy: the second sentence largely restates the first, and the [#tag/...] anchor markup is noise 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 5-param mutation tool with full annotation coverage and 80% schema documentation, the description supplies the key precondition and the mode-specific error. The main gap is return behavior – no output schema exists, and the presence of a 'wait' polling parameter is left for the schema to explain.
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% and the ttl field already documents its range, default behavior and fallback to the Zone's default TTL, so the description need not repeat it. The description contributes nothing parameter-specific, which is acceptable at this coverage but not more than 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 a specific verb+resource pair (change the TTL of an RRSet), which is clearly distinct from the zone-level TTL sibling hcloud_zone_change_ttl_action and from record-manipulation siblings like hcloud_zone_rrset_set_records_action. It does not explicitly name or route against those alternatives, keeping it below 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?
It gives one genuine applicability constraint – 'Only applicable for Zones in primary mode' – which is useful routing context. But there is no guidance on when to pick this over hcloud_update_zone_rrset or the zone-level TTL tool, and no prerequisites beyond mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_remove_records_actionADestructive
Remove Records from an RRSet
Removes resource records (RRs) from an existing RRSet in the Zone.
For convenience, the RRSet will be automatically deleted if it doesn't contain any RRs afterwards.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
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 genuinely non-obvious behavior: the RRSet is auto-deleted when it becomes empty, and the primary-mode restriction with its specific error code. It doesn't say what happens when a listed record doesn't exist, which is the main residual gap.
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, then the auto-delete side effect, then the applicability constraint and error table — a sensible priority order. The repeated markdown anchor links add mild noise, but nothing meaningful 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 destructive 5-parameter nested-body mutation with no output schema, the description covers the critical side effect, the mode restriction, and the operation-specific error. It could say more about the returned action object or the matching semantics (value is used to identify a record), but the essentials are present.
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 80%, with rr_name formatting rules, the rr_type enum, and the records body constraints all documented in the schema. The description adds no parameter-level guidance of its own, 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?
The description opens with a specific verb+resource ("Remove Records from an RRSet") and scopes it to records within an existing RRSet in a Zone. This clearly distinguishes it from sibling mutations like hcloud_zone_rrset_add_records_action, set_records_action, and update_records_action.
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 key precondition explicitly — "Only applicable for Zones in primary mode" — and backs it with the 422 incorrect_zone_mode error. It stops short of naming which sibling to use instead when the intent is replacement versus removal, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_set_records_actionADestructive
Set Records of an RRSet
Overwrites the resource records (RRs) of an existing RRSet in the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description earns its keep by spelling out the overwrite semantics (the entire RR set is replaced, not merged) and the zone-mode restriction that triggers a specific error. It doesn't mention that the call produces an async action polled via the `wait` flag, but the destructive behavior itself is well disclosed.
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 operation name and its overwrite semantics before any constraint or error detail. The error table is somewhat boilerplate for a single row, but each section 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 destructive DNS mutation with a nested records array, no output schema, and an async action model, several things are left unstated: that an empty set is rejected (so deletion requires remove_records), TTL handling, and partial-failure behavior. The primary-mode restriction and overwrite semantics cover the most important gaps, but not all.
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 80%, so the baseline would be 3, but "Overwrites" adds meaning the schema lacks: the `records` array replaces the existing set rather than appending to it. It also ties the `id_or_name`/`rr_name`/`rr_type` triple to the primary-mode constraint, which the schema doesn't 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 and resource ("Set Records of an RRSet") and immediately clarifies the semantics with "Overwrites the resource records (RRs) of an existing RRSet," which implicitly distinguishes it from the add/remove/update record siblings. It doesn't explicitly name those alternatives, so the differentiation requires the agent to infer it from "overwrites."
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 applicable for Zones in primary mode" is a genuine precondition, reinforced by the 422 incorrect_zone_mode error row. However, with three close siblings (add_records, remove_records, update_records) doing similar work, the description never says when to pick this full-replacement tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcloud_zone_rrset_update_records_actionADestructive
Update Records of an RRSet
Updates resource records' (RRs) comments of an existing RRSet in the Zone.
Only applicable for Zones in primary mode.
Operation specific errors
Status | Code | Description |
|
| This operation is not supported for this Zone's |
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| wait | No | Poll the resulting action until success/error or timeout. | |
| rr_name | Yes | Name of the [RRSet](#tag/zone-rrsets). The name must be in lower case, and must not end with a dot or the [Zone](#tag/zones) name. Names containing non-ASCII characters must be transcribed to [Punycode](https://wikipedia.org/wiki/Punycode) representation with ACE prefix, e.g. `xn--4bi` (✉️). For the [Zone](#tag/zones) apex, use `@`. | |
| rr_type | Yes | Type of the [RRSet](#tag/zone-rrsets). | |
| id_or_name | Yes | ID or Name of the Zone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true. The description adds useful behavioral context by clarifying that only record comments are updated and that the operation is unsupported outside primary-mode Zones, with the specific error code.
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 operation, then the mode constraint, then the relevant error. The error table is compact and earns its place by documenting a known operation-specific failure.
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 80% schema coverage and the destructive/open-world annotations, the description is largely complete for an agent to select and invoke the tool. It still omits explicit sibling differentiation and does not describe the action response, but the schema covers the key nested record structure and the wait 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 80%, so the schema already documents most parameter meaning, including value/comment and wait behavior. The description adds no parameter-level detail beyond saying comments are updated, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 updates resource records' comments on an existing RRSet in a Zone. This is clear enough to distinguish it from general RRSet metadata updates, but it does not explicitly contrast it with sibling record actions such as set/add/remove records.
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 clear usage constraint: only applicable for Zones in primary mode, and it names the resulting 422 incorrect_zone_mode error. However, it does not explicitly route the agent between this tool and sibling tools like hcloud_zone_rrset_set_records_action or hcloud_zone_rrset_add_records_action.
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.
202 tool updates
v0.2.0- First observed
hcloud_apply_firewall_to_server - First observed
hcloud_certificate_retry_action - First observed
hcloud_create_certificate - First observed
hcloud_create_firewall - First observed
hcloud_create_floating_ip - First observed
hcloud_create_load_balancer - First observed
hcloud_create_network - First observed
hcloud_create_placement_group - First observed
hcloud_create_primary_ip - First observed
hcloud_create_server - First observed
hcloud_create_ssh_key - First observed
hcloud_create_volume - First observed
hcloud_create_zone - First observed
hcloud_delete_certificate - First observed
hcloud_delete_firewall - First observed
hcloud_delete_floating_ip - First observed
hcloud_delete_image - First observed
hcloud_delete_load_balancer - First observed
hcloud_delete_network - First observed
hcloud_delete_placement_group - First observed
hcloud_delete_primary_ip - First observed
hcloud_delete_server - First observed
hcloud_delete_ssh_key - First observed
hcloud_delete_volume - First observed
hcloud_delete_zone - First observed
hcloud_delete_zone_rrset - First observed
hcloud_firewall_apply_to_resources_action - First observed
hcloud_firewall_remove_from_resources_action - First observed
hcloud_firewall_set_rules_action - First observed
hcloud_floating_ip_assign_action - First observed
hcloud_floating_ip_change_dns_ptr_action - First observed
hcloud_floating_ip_change_protection_action - First observed
hcloud_floating_ip_unassign_action - First observed
hcloud_get_action - First observed
hcloud_get_certificate - First observed
hcloud_get_certificate_action - First observed
hcloud_get_certificates_actions - First observed
hcloud_get_certificates_actions_id - First observed
hcloud_get_datacenter - First observed
hcloud_get_firewall - First observed
hcloud_get_firewall_action - First observed
hcloud_get_firewalls_actions - First observed
hcloud_get_firewalls_actions_id - First observed
hcloud_get_floating_ip - First observed
hcloud_get_floating_ip_action - First observed
hcloud_get_floating_ips_actions - First observed
hcloud_get_floating_ips_actions_id - First observed
hcloud_get_image - First observed
hcloud_get_image_action - First observed
hcloud_get_images_actions - First observed
hcloud_get_images_actions_id - First observed
hcloud_get_iso - First observed
hcloud_get_load_balancer - First observed
hcloud_get_load_balancer_action - First observed
hcloud_get_load_balancer_metrics - First observed
hcloud_get_load_balancer_type - First observed
hcloud_get_load_balancers_actions - First observed
hcloud_get_load_balancers_actions_id - First observed
hcloud_get_location - First observed
hcloud_get_network - First observed
hcloud_get_network_action - First observed
hcloud_get_network_members - First observed
hcloud_get_networks_actions - First observed
hcloud_get_networks_actions_id - First observed
hcloud_get_placement_group - First observed
hcloud_get_pricing - First observed
hcloud_get_primary_ip - First observed
hcloud_get_primary_ip_action - First observed
hcloud_get_primary_ips_actions - First observed
hcloud_get_primary_ips_actions_id - First observed
hcloud_get_server - First observed
hcloud_get_server_action - First observed
hcloud_get_server_metrics - First observed
hcloud_get_server_metrics_raw - First observed
hcloud_get_server_raw - First observed
hcloud_get_server_type - First observed
hcloud_get_servers_actions - First observed
hcloud_get_servers_actions_id - First observed
hcloud_get_ssh_key - First observed
hcloud_get_volume - First observed
hcloud_get_volume_action - First observed
hcloud_get_volumes_actions - First observed
hcloud_get_volumes_actions_id - First observed
hcloud_get_zone - First observed
hcloud_get_zone_action - First observed
hcloud_get_zone_rrset - First observed
hcloud_get_zone_rrsets - First observed
hcloud_get_zone_zonefile - First observed
hcloud_get_zones_actions - First observed
hcloud_get_zones_actions_id - First observed
hcloud_image_change_protection_action - First observed
hcloud_list_actions - First observed
hcloud_list_certificate_actions - First observed
hcloud_list_certificates - First observed
hcloud_list_datacenters - First observed
hcloud_list_firewall_actions - First observed
hcloud_list_firewalls - First observed
hcloud_list_floating_ip_actions - First observed
hcloud_list_floating_ips - First observed
hcloud_list_image_actions - First observed
hcloud_list_images - First observed
hcloud_list_isos - First observed
hcloud_list_load_balancer_actions - First observed
hcloud_list_load_balancer_types - First observed
hcloud_list_load_balancers - First observed
hcloud_list_locations - First observed
hcloud_list_network_actions - First observed
hcloud_list_networks - First observed
hcloud_list_placement_groups - First observed
hcloud_list_primary_ip_actions - First observed
hcloud_list_primary_ips - First observed
hcloud_list_server_actions - First observed
hcloud_list_server_types - First observed
hcloud_list_servers - First observed
hcloud_list_servers_raw - First observed
hcloud_list_ssh_keys - First observed
hcloud_list_volume_actions - First observed
hcloud_list_volumes - First observed
hcloud_list_zone_actions - First observed
hcloud_list_zones - First observed
hcloud_load_balancer_add_service_action - First observed
hcloud_load_balancer_add_target_action - First observed
hcloud_load_balancer_attach_to_network_action - First observed
hcloud_load_balancer_change_algorithm_action - First observed
hcloud_load_balancer_change_dns_ptr_action - First observed
hcloud_load_balancer_change_protection_action - First observed
hcloud_load_balancer_change_type_action - First observed
hcloud_load_balancer_delete_service_action - First observed
hcloud_load_balancer_detach_from_network_action - First observed
hcloud_load_balancer_disable_public_interface_action - First observed
hcloud_load_balancer_enable_public_interface_action - First observed
hcloud_load_balancer_remove_target_action - First observed
hcloud_load_balancer_update_service_action - First observed
hcloud_network_add_route_action - First observed
hcloud_network_add_subnet_action - First observed
hcloud_network_change_ip_range_action - First observed
hcloud_network_change_protection_action - First observed
hcloud_network_delete_route_action - First observed
hcloud_network_delete_subnet_action - First observed
hcloud_post_zone_rrsets - First observed
hcloud_primary_ip_assign_action - First observed
hcloud_primary_ip_change_dns_ptr_action - First observed
hcloud_primary_ip_change_protection_action - First observed
hcloud_primary_ip_unassign_action - First observed
hcloud_raw_request - First observed
hcloud_server_add_to_placement_group_action - First observed
hcloud_server_attach_iso_action - First observed
hcloud_server_attach_to_network_action - First observed
hcloud_server_backup - First observed
hcloud_server_change_alias_ips_action - First observed
hcloud_server_change_dns_ptr_action - First observed
hcloud_server_change_protection_action - First observed
hcloud_server_change_type - First observed
hcloud_server_change_type_action - First observed
hcloud_server_create_image_action - First observed
hcloud_server_detach_from_network_action - First observed
hcloud_server_detach_iso_action - First observed
hcloud_server_disable_backup_action - First observed
hcloud_server_disable_rescue_action - First observed
hcloud_server_enable_backup_action - First observed
hcloud_server_enable_rescue_action - First observed
hcloud_server_power - First observed
hcloud_server_poweroff_action - First observed
hcloud_server_poweron_action - First observed
hcloud_server_reboot_action - First observed
hcloud_server_rebuild - First observed
hcloud_server_rebuild_action - First observed
hcloud_server_remove_from_placement_group_action - First observed
hcloud_server_request_console_action - First observed
hcloud_server_rescue - First observed
hcloud_server_reset_action - First observed
hcloud_server_reset_password_action - First observed
hcloud_server_shutdown_action - First observed
hcloud_server_snapshot - First observed
hcloud_update_certificate - First observed
hcloud_update_firewall - First observed
hcloud_update_floating_ip - First observed
hcloud_update_image - First observed
hcloud_update_load_balancer - First observed
hcloud_update_network - First observed
hcloud_update_placement_group - First observed
hcloud_update_primary_ip - First observed
hcloud_update_server - First observed
hcloud_update_ssh_key - First observed
hcloud_update_volume - First observed
hcloud_update_zone - First observed
hcloud_update_zone_rrset - First observed
hcloud_volume_attach_action - First observed
hcloud_volume_change_protection_action - First observed
hcloud_volume_detach_action - First observed
hcloud_volume_resize_action - First observed
hcloud_wait_action - First observed
hcloud_zone_change_primary_nameservers_action - First observed
hcloud_zone_change_protection_action - First observed
hcloud_zone_change_ttl_action - First observed
hcloud_zone_import_zonefile_action - First observed
hcloud_zone_rrset_add_records_action - First observed
hcloud_zone_rrset_change_protection_action - First observed
hcloud_zone_rrset_change_ttl_action - First observed
hcloud_zone_rrset_remove_records_action - First observed
hcloud_zone_rrset_set_records_action - First observed
hcloud_zone_rrset_update_records_action
TDQS
Scored across 202 tools
Many tools have near-identical or overlapping purposes: parallel hand-tuned/generated pairs (hcloud_get_server vs hcloud_get_server_raw, hcloud_server_change_type vs _action, hcloud_server_rebuild vs _action, hcloud_server_power vs individual power on/off/reboot/shutdown/reset actions). The numerous per-resource action-listing tools (list_*_actions, get_*_actions, get_*_actions_id, get_*_action) are hard to tell apart, forcing misselection.
A hcloud_ prefix is present, but conventions are mixed: some tools are bare get_/list_ while others append _action or _raw; pluralization is inconsistent (e.g. hcloud_get_load_balancers_actions vs hcloud_list_load_balancer_actions) and get_/list_ are used interchangeably for the same concept.
202 tools for one cloud provider API is an extreme mismatch, far exceeding the typical 3-15 range. Much of the surface is redundant per-resource action-listing endpoints and duplicate raw/wrapped variants that bloat the set.
Coverage of the Hetzner Cloud domain is essentially complete: full CRUD for servers, networks, firewalls, load balancers, floating/primary IPs, volumes, certificates, and DNS zones/RRSets, plus actions and a raw escape hatch. Minor gaps are deprecated endpoints and some hand-tuned/generated inconsistency, but core lifecycle operations are all present.
Maintenance
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that publishes CLI tools on your machine for discoverability by LLMs2 npm1MIT
- AlicenseNot gradedqualityAmaintenanceModel Context Protocol server for full Hetzner Cloud + Storage API automation. Exposes all official Hetzner operations as MCP tools so AI agents can manage servers, networking, load balancers, firewalls, volumes, DNS zones, and storage boxes from one server.1MIT
- AlicenseBqualityAmaintenanceMCP server for the Hetzner Cloud API. Manage servers, networks, volumes, firewalls, load balancers, and more through the Model Context Protocol.1851,146 npm5Functional Source , Version 1.1, MIT Future
- FlicenseAqualityCmaintenanceMCP server for Personal OS API that enables managing tasks, notes, projects, collections, reviews, and more through typed tools over stdio.66-