hetzner-mcp-server
hetzner-mcp-server
Hetzner Cloud API용 MCP 서버입니다. Model Context Protocol을 통해 서버, 네트워크, 볼륨, 방화벽, 로드 밸런서 등을 관리할 수 있습니다.
15개 리소스 도메인에 걸친 185개 도구와 9개의 진입점을 제공하므로 MCP 클라이언트의 도구 제한에 맞는 서버를 선택할 수 있습니다. 모든 진입점에서 읽기 전용 API 참조 리소스(reference://hetzner/api)도 노출됩니다.
설치
npm install -g @lazyants/hetzner-mcp-server또는 직접 실행:
npx @lazyants/hetzner-mcp-serverRelated MCP server: hcloud-mcp
구성
Hetzner Cloud API 토큰을 설정하세요:
export HETZNER_API_TOKEN=your-token-hereHetzner Cloud Console의 Security > API Tokens에서 토큰을 받으세요.
Storage Box 도구는 별도의 호스트(https://api.hetzner.com/v1)를 호출합니다. HETZNER_STORAGE_API_TOKEN이 설정되어 있으면 이를 사용하고, 그렇지 않으면 HETZNER_API_TOKEN으로 대체되므로 단일 토큰으로 계속 작동합니다. Storage Box 액세스를 전용 토큰으로 제한하는 경우에만 HETZNER_STORAGE_API_TOKEN을 설정하세요:
export HETZNER_STORAGE_API_TOKEN=your-storage-token-here # optional진입점
명령 | 도메인 | 도구 |
| 전체 15개 도메인 | 185 |
| 서버, 데이터센터/위치/서버 유형, 가격 | 34 |
| 네트워크, 방화벽 | 21 |
| 로드 밸런서, 인증서 | 28 |
| 플로팅 IP, 기본 IP | 20 |
| 볼륨, 이미지 | 17 |
| Storage Boxes (+ 스냅샷, 하위 계정, 유형) | 29 |
| SSH 키, ISO, 배치 그룹 | 14 |
| DNS 영역 | 22 |
컨텍스트 크기를 줄이려면 분할 서버를 사용하세요 — 필요한 분할만 선택하세요.
Claude Code
~/.claude/settings.json에 추가하세요:
{
"mcpServers": {
"hetzner": {
"command": "npx",
"args": ["-y", "@lazyants/hetzner-mcp-server"],
"env": {
"HETZNER_API_TOKEN": "your-token-here"
}
}
}
}또는 분할 서버를 사용하세요(필요한 분할 선택):
{
"mcpServers": {
"hetzner-servers": {
"command": "npx",
"args": ["-y", "-p", "@lazyants/hetzner-mcp-server", "hetzner-mcp-servers"],
"env": { "HETZNER_API_TOKEN": "your-token-here" }
},
"hetzner-networking": {
"command": "npx",
"args": ["-y", "-p", "@lazyants/hetzner-mcp-server", "hetzner-mcp-networking"],
"env": { "HETZNER_API_TOKEN": "your-token-here" }
}
}
}Claude Desktop
claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"hetzner": {
"command": "npx",
"args": ["-y", "@lazyants/hetzner-mcp-server"],
"env": {
"HETZNER_API_TOKEN": "your-token-here"
}
}
}
}도구
서버 (27개 도구) — servers
hetzner_list_servers, hetzner_get_server, hetzner_create_server, hetzner_update_server, hetzner_delete_server, hetzner_power_on, hetzner_power_off, hetzner_reboot, hetzner_reset, hetzner_shutdown, hetzner_rebuild_server, hetzner_resize_server, hetzner_enable_rescue, hetzner_disable_rescue, hetzner_get_server_metrics, hetzner_list_server_actions, hetzner_change_server_protection, hetzner_request_console, hetzner_enable_backup, hetzner_disable_backup, hetzner_change_alias_ips, hetzner_change_dns_ptr, hetzner_attach_server_to_network, hetzner_detach_server_from_network, hetzner_add_server_to_placement_group, hetzner_remove_server_from_placement_group, hetzner_reset_server_password
이미지 (7개 도구) — storage
hetzner_list_images, hetzner_get_image, hetzner_update_image, hetzner_delete_image, hetzner_create_image, hetzner_change_image_protection, hetzner_list_image_actions
ISO (4개 도구) — config
hetzner_list_isos, hetzner_get_iso, hetzner_attach_iso, hetzner_detach_iso
배치 그룹 (5개 도구) — config
hetzner_list_placement_groups, hetzner_get_placement_group, hetzner_create_placement_group, hetzner_update_placement_group, hetzner_delete_placement_group
참조 데이터 (7개 도구) — servers
hetzner_list_datacenters, hetzner_get_datacenter, hetzner_list_locations, hetzner_get_location, hetzner_list_server_types, hetzner_get_server_type, hetzner_get_pricing
hetzner_list_datacenters/hetzner_get_datacenter는 Hetzner에서 더 이상 사용되지 않으며 2026-10-01 이후 제거됩니다(HTTP 410). 대신hetzner_list_server_types(locations[].available/recommended)와hetzner_list_locations를 사용하세요.
네트워크 (12개 도구) — networking
hetzner_list_networks, hetzner_get_network, hetzner_create_network, hetzner_update_network, hetzner_delete_network, hetzner_add_subnet, hetzner_delete_subnet, hetzner_add_route, hetzner_delete_route, hetzner_change_network_protection, hetzner_change_ip_range, hetzner_list_network_actions
방화벽 (9개 도구) — networking
hetzner_list_firewalls, hetzner_get_firewall, hetzner_create_firewall, hetzner_update_firewall, hetzner_delete_firewall, hetzner_set_firewall_rules, hetzner_apply_firewall, hetzner_remove_firewall, hetzner_list_firewall_actions
로드 밸런서 (21개 도구) — load-balancers
hetzner_list_load_balancers, hetzner_get_load_balancer, hetzner_create_load_balancer, hetzner_update_load_balancer, hetzner_delete_load_balancer, hetzner_add_lb_target, hetzner_remove_lb_target, hetzner_add_lb_service, hetzner_update_lb_service, hetzner_delete_lb_service, hetzner_change_lb_algorithm, hetzner_change_lb_type, hetzner_attach_lb_to_network, hetzner_detach_lb_from_network, hetzner_get_lb_metrics, hetzner_list_lb_types, hetzner_change_load_balancer_protection, hetzner_list_load_balancer_actions, hetzner_enable_lb_public_interface, hetzner_disable_lb_public_interface, hetzner_change_lb_dns_ptr
인증서 (7개 도구) — load-balancers
hetzner_list_certificates, hetzner_get_certificate, hetzner_create_certificate, hetzner_update_certificate, hetzner_delete_certificate, hetzner_retry_certificate, hetzner_list_certificate_actions
볼륨 (10개 도구) — storage
hetzner_list_volumes, hetzner_get_volume, hetzner_create_volume, hetzner_update_volume, hetzner_delete_volume, hetzner_attach_volume, hetzner_detach_volume, hetzner_resize_volume, hetzner_change_volume_protection, hetzner_list_volume_actions
플로팅 IP (10개 도구) — ips
hetzner_list_floating_ips, hetzner_get_floating_ip, hetzner_create_floating_ip, hetzner_update_floating_ip, hetzner_delete_floating_ip, hetzner_assign_floating_ip, hetzner_unassign_floating_ip, hetzner_change_floating_ip_rdns, hetzner_change_floating_ip_protection, hetzner_list_floating_ip_actions
기본 IP (10개 도구) — ips
hetzner_list_primary_ips, hetzner_get_primary_ip, hetzner_create_primary_ip, hetzner_update_primary_ip, hetzner_delete_primary_ip, hetzner_assign_primary_ip, hetzner_unassign_primary_ip, hetzner_change_primary_ip_rdns, hetzner_change_primary_ip_protection, hetzner_list_primary_ip_actions
SSH 키 (5개 도구) — config
hetzner_list_ssh_keys, hetzner_get_ssh_key, hetzner_create_ssh_key, hetzner_update_ssh_key, hetzner_delete_ssh_key
DNS 영역 (22개 도구) — dns
hetzner_list_zones, hetzner_get_zone, hetzner_create_zone, hetzner_update_zone, hetzner_delete_zone, hetzner_change_zone_protection, hetzner_change_zone_ttl, hetzner_change_zone_primary_nameservers, hetzner_export_zonefile, hetzner_import_zonefile, hetzner_list_zone_actions, hetzner_list_zone_rrsets, hetzner_get_zone_rrset, hetzner_create_zone_rrset, hetzner_update_zone_rrset, hetzner_delete_zone_rrset, hetzner_change_zone_rrset_protection, hetzner_change_zone_rrset_ttl, hetzner_add_zone_rrset_records, hetzner_remove_zone_rrset_records, hetzner_set_zone_rrset_records, hetzner_update_zone_rrset_records
Storage Boxes (29개 도구) — storage-boxes
Storage Boxes는 https://api.hetzner.com/v1 호스트를 사용합니다. 토큰: HETZNER_STORAGE_API_TOKEN(HETZNER_API_TOKEN으로 대체됨).
hetzner_list_storage_boxes, hetzner_create_storage_box, hetzner_get_storage_box, hetzner_update_storage_box, hetzner_delete_storage_box, hetzner_list_storage_box_folders, hetzner_list_storage_box_actions, hetzner_change_storage_box_protection, hetzner_change_storage_box_type, hetzner_reset_storage_box_password, hetzner_update_storage_box_access_settings, hetzner_rollback_storage_box_snapshot, hetzner_enable_storage_box_snapshot_plan, hetzner_disable_storage_box_snapshot_plan, hetzner_list_storage_box_types, hetzner_get_storage_box_type, hetzner_list_storage_box_snapshots, hetzner_create_storage_box_snapshot, hetzner_get_storage_box_snapshot, hetzner_update_storage_box_snapshot, hetzner_delete_storage_box_snapshot, hetzner_list_storage_box_subaccounts, hetzner_create_storage_box_subaccount, hetzner_get_storage_box_subaccount, hetzner_update_storage_box_subaccount, hetzner_delete_storage_box_subaccount, hetzner_change_storage_box_subaccount_home_directory, hetzner_reset_storage_box_subaccount_password, hetzner_update_storage_box_subaccount_access_settings
보안
API 토큰을 버전 관리에 커밋하지 마세요
리소스를 조회/가져오기만 하면 되는 경우 읽기 전용 토큰을 사용하세요
생성 및 삭제 도구는 실제 비용이 발생합니다 — Hetzner는 프로비저닝된 리소스에 대해 청구합니다
서버는 속도 제한을 자동으로 처리합니다(시간당 3,600건 요청, 429 시 지수 백오프)
면책 조항
생성, 업데이트, 삭제 작업은 Hetzner Cloud 계정에 요금이 부과될 수 있습니다. 가능하면 읽기 전용 API 토큰을 사용하세요. 작성자는 발생한 비용에 대해 책임을 지지 않습니다.
릴리스
릴리스는 GitHub Release 이벤트를 통해 배포됩니다. 관리자 흐름:
package.json과server.json에서 버전을 올리세요(#/version과#/packages[0].version둘 다). 그런 다음npm install --package-lock-only를 실행하여package-lock.json을 동기화하세요.node scripts/check-versions.mjs는package.json#/version이server.json#/packages[0].version과 일치하지 않으면 하드 실패합니다.server.json#/version은 느슨하게 검사됩니다. 레지스트리 전용 재게시가 해당 필드만 올리므로 정당하게 앞서 있을 수 있기 때문입니다. 따라서 오래된 값은WARN:줄과 함께 통과하며 실패하지 않습니다. 종료 코드를 믿지 말고 스크립트의 출력을 읽으세요.CHANGELOG.md는 전혀 검사되지 않습니다.CHANGELOG.md를 업데이트하세요.커밋하고, 릴리스를 만들기 전에 버전 범프를
main에 병합하세요. 그런 다음 직접 확인한 SHA에 태그를 직접 만들고, 그 후에야 그 태그로 릴리스를 만드세요:V=X.Y.Z && PR=<release-pr-number> && SHA="$(gh pr view "$PR" --json mergeCommit -q .mergeCommit.oid)" && test -n "$SHA" && git fetch origin main && git merge-base --is-ancestor "$SHA" origin/main && PKG="$(git show "$SHA:package.json")" && test "$(printf '%s' "$PKG" | node -pe 'JSON.parse(require("fs").readFileSync(0,"utf8")).version')" = "$V" && CL="$(git show "$SHA:CHANGELOG.md")" && printf '%s\n' "$CL" | awk -v v="$V" 'index($0,"## ["v"]")==1{f=1;next} /^## \[/{f=0} /^\[[0-9]+\.[0-9]+\.[0-9]+\]:/{f=0} f' > "/tmp/notes-v$V.md" && grep -q '[^[:space:]]' "/tmp/notes-v$V.md" && git tag -a "v$V" "$SHA" -m "v$V" && git push origin "v$V" && gh release create "v$V" --verify-tag --notes-file "/tmp/notes-v$V.md"gh release create vX.Y.Z를 그냥 실행하지 마세요. 기존 태그가 없으면 기본 브랜치의 **끝(tip)**에 태그를 생성합니다. 따라서 범프가 아직 릴리스 브랜치에 있는 상태에서 실행하면 이전 릴리스의 커밋에 태그가 붙습니다. 그러면 워크플로는 해당 커밋의package.json에서 찾은 버전을 게시하고, 조용히 이전 버전을 다시 게시하는vX.Y.ZGitHub 릴리스가 만들어집니다. 이제 게시 워크플로는GITHUB_REF_NAME이v<package.json version>이 아니면 계속 진행을 거부하므로, 정확히 그런 상황은 조용히 다시 게시하는 대신npm publish전에 실패합니다. 위의 절차는 여전히 필요하며, 워크플로가 막을 수 없는 경우를 방어합니다. 워크플로 가드는 릴리스가 이미 존재할 때만 실행되고, 올바른 버전을 가진 모든 커밋에 대해 통과하기 때문입니다. 즉, 잘못 태그된 릴리스는 잡아내지만, 잘못된 커밋에 태그가 붙는 경우는 잡아내지 못합니다.각 요소는 모두 필수적입니다:
**
gh pr view … .mergeCommit.oid**는 릴리스 PR 자체의 스쿼시 커밋을 가리킵니다.git rev-parse origin/main으로 대체하지 마세요. 그것은 단지 확인하는 시점에main에 있는 내용일 뿐이므로, 그 사이에 들어온 무관한 병합이 대신 태그되어 배포됩니다.gh는 병합되지 않은 PR에 대해 0으로 종료하고 아무것도 출력하지 않으므로, 명시적인test -n이 필요한 것입니다.&&체인은 되돌릴 수 없는 단계로 넘어가는 대신 첫 번째 실패에서 멈춥니다. 두git show호출은 직접 파이프로 연결하지 않고 변수에 할당되므로 종료 상태가 실제로 확인됩니다. 파이프라인은pipefail이 설정되지 않은 한 마지막 명령의 상태만 보고하는데, 여기서는pipefail을 가정하지 않습니다.**
git merge-base --is-ancestor**는 커밋이main에서 도달 가능함을 증명합니다. 단순히 존재하는 것만으로는 충분하지 않습니다. 다른 브랜치를 fetch했기 때문에 커밋이 로컬에 존재할 수 있기 때문입니다.버전 테스트는 작업 트리가 아니라 대상 커밋에서
package.json을 읽습니다. 작업 트리는$SHA가 다른 곳을 가리키는 동안에도 올바른 버전을 보여줄 수 있기 때문입니다.**
awk**는--notes-file을 위해 해당 버전의 섹션을 커밋의CHANGELOG.md에서 추출합니다. 가장 오래된 항목 뒤에는 헤딩이 없어서 그렇지 않으면 전체 링크-참조 블록을 삼켜버리기 때문에, 다음## [헤딩 또는 첫 번째 링크-참조 정의에서 멈춥니다. 결과는test -s대신grep -q로 검증합니다. 빈 줄 외에는 내용이 없는 섹션도 여전히 1바이트 파일을 생성하며,test -s는 이를 통과시키기 때문입니다.
Publish to npm + MCP Registry워크플로는 자동으로 실행됩니다. provenance와 함께npm publish를 실행하고, tarball을 사용할 수 있을 때까지 레지스트리를 폴링한 다음,mcp-publisher를 통해 일치하는server.json을 MCP Registry로 푸시합니다.
워크플로는 버전이 이미 npm에 있으면 npm publish를 깔끔하게 건너뜁니다(수동으로 부분 게시된 릴리스에 대한 전환 가드).
npm 인증
게시는 npm Trusted Publishing을 사용합니다. 워크플로의 GitHub OIDC 토큰(id-token: write)이 런타임에 일회용 게시 토큰으로 교환됩니다. 저장소에 NPM_TOKEN 시크릿이 있을 필요가 없습니다.
바인딩은 npm 웹 UI(패키지 → Trusted Publishers)에서 구성됩니다: 공급자 GitHub Actions, 조직 lazyants, 저장소 hetzner-mcp-server, 워크플로 publish-registry.yml.
라이선스
FSL-1.1-MIT — 전체 약관은 LICENSE를 참조하세요. 1.1.1 및 이전 버전은 계속 MIT 라이선스입니다.
Available Tools
185 toolshetzner_add_lb_serviceAdd Load Balancer ServiceC
Add a service (port listener with forwarding rules) to a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| http | No | HTTP-specific service settings | |
| protocol | Yes | Service protocol: tcp, http, or https | |
| listen_port | Yes | Port the load balancer listens on | |
| health_check | No | Health check configuration | |
| proxyprotocol | No | Enable PROXY protocol | |
| destination_port | Yes | Port traffic is forwarded to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) but not destructive (destructiveHint=false). The description adds no behavioral details beyond 'add', such as whether the operation is idempotent, whether it requires specific permissions, or what side effects 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?
A single, clear sentence that conveys the core purpose without extraneous words. It could be slightly expanded to include key behavioral notes, but remains 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?
The description lacks details on return values (no output schema), error conditions, or examples. For a complex tool with nested objects, this is insufficient for an agent to fully understand the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple 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 well-documented in the schema. The description adds minimal extra meaning (e.g., 'port listener with forwarding rules') but does not enhance understanding 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 clearly states 'Add a service (port listener with forwarding rules) to a load balancer,' using a specific verb and resource. It distinguishes from sibling tools like 'hetzner_delete_lb_service' and 'hetzner_create_load_balancer', though it does not explicitly differentiate from 'hetzner_update_lb_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?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., load balancer must exist), and no context on idempotency or ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_add_lb_targetAdd Load Balancer TargetB
Add a target (server, label selector, or IP) to a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| ip | No | IP target | |
| type | Yes | Target type | |
| server | No | Server target | |
| label_selector | No | Label selector target | |
| use_private_ip | No | Use private IP for the target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, openWorldHint=true), the description adds no behavioral details such as idempotency, side effects of adding an existing target, or mutation behavior. It does not contradict annotations but provides minimal additional transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that is front-loaded and precisely conveys the tool's function with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema fully documents parameters, there is no output schema or description of return values. For a moderately complex tool with nested objects, the description is complete regarding input but lacks context on what happens after adding a target (e.g., success/failure indications).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description only lists target types parenthetically, adding no additional semantic meaning beyond what is 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?
The description clearly states the verb 'Add', the resource 'a target (server, label selector, or IP)', and the context 'to a load balancer'. It effectively distinguishes from sibling tools like 'hetzner_add_lb_service' which adds a service to a 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 tool versus alternatives or prerequisites (e.g., the load balancer must exist). With many sibling tools, this lack of context could lead to incorrect tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_add_routeAdd Route to NetworkB
Add a route to an existing network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| gateway | Yes | Gateway for the route | |
| destination | Yes | Destination network of the route |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readOnly (modifying) and non-destructive. The description confirms the adding behavior but adds no extra transparency about side effects, error conditions, or the requirement for the network to exist. It is adequate given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: 'Add a route to an existing network.' No wasted words; it gets straight to the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description does not hint at return values or side effects. It also does not mention that the network must exist or what happens if the route conflicts. It is minimally complete for a simple add operation but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter descriptions like 'Destination network of the route' and 'Gateway for the route'. The tool description does not add additional meaning beyond these, and the schema descriptions themselves are somewhat vague (e.g., lacking format constraints). 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 the verb 'Add' and the resource 'route', and specifies the context 'to an existing network'. It distinguishes from sibling tools like 'delete_route' or 'add_subnet', but could be more explicit that the network is identified by the 'id' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives, such as checking network existence or comparing with 'add_subnet' or 'delete_route'. The description does not mention prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_add_server_to_placement_groupAdd Server to Placement GroupA
Add a server to a placement group. The server must be powered off before it can be added.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| placement_group | Yes | ID of the placement group to add the server to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (mutation) and destructiveHint=false. The description adds a key behavioral constraint (server must be powered off), which is valuable beyond annotations. It does not detail error handling or reversibility, but the precondition is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no redundant information. It is front-loaded with the purpose immediately, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 simple action (add server to placement group) with two required parameters and no output schema, the description covers the purpose and a critical precondition. It lacks a mention of the return value or side effects, but for a straightforward mutation, it is reasonably 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?
The input schema already provides clear descriptions for both parameters (Server ID, Placement group ID) with 100% coverage. The description does not add further parameter-level semantics beyond the schema, so it meets the baseline of 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?
The description clearly states the action: 'Add a server to a placement group.' It uses a specific verb and resource, and the sibling list includes distinct tools like 'remove_server_from_placement_group' and 'create_placement_group', so the purpose is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicitly states a prerequisite: 'The server must be powered off before it can be added.' This provides important usage context. However, it does not mention when to use this tool versus alternatives (e.g., 'remove' or 'create' tools), which would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_add_subnetAdd Subnet to NetworkC
Add a subnet to an existing network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| type | Yes | Type of subnet | |
| ip_range | No | IP range of the subnet | |
| vswitch_id | No | ID of the vSwitch (required for vswitch type) | |
| network_zone | Yes | Name of the network zone, e.g. "eu-central" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides no behavioral details beyond the action. Annotations indicate non-readonly and non-destructive, but the description does not mention side effects, permissions, or state changes. For a creation tool, more context is expected.
Agents need to know what a tool does to the 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 concise one-sentence description with no unnecessary words. It is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately states the purpose, but given no output schema, it would be helpful to mention what the tool returns. It also assumes the agent knows 'existing network' context. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented there. The tool description adds no additional meaning over the schema, but the schema already suffices, giving 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?
The description clearly states the action (Add) and resource (subnet). However, it does not differentiate from sibling 'add' tools for other resources 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 tool versus other network operations, such as 'delete_subnet' or 'attach_server_to_network'. No prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_add_zone_rrset_recordsAdd Records to DNS Zone RRSetA
Add new records to an existing RRSet without removing existing ones. Optionally update the RRSet TTL.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Optional new TTL applied alongside the addition | |
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| records | Yes | Records to add to the RRSet | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-readonly, non-idempotent, non-destructive mutation. The description adds useful behavioral detail beyond those annotations: it confirms existing records are preserved and that TTL updates are optional. This is meaningful but not exhaustive, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with no filler. The core additive behavior is stated first, and the optional TTL behavior follows succinctly. Every phrase contributes to understanding the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 a fully covered input schema, the description gives the essential behavioral context: append-only semantics and optional TTL adjustment. It stops short of discussing edge cases or failure modes, but the operation is simple enough that this is not a critical 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 the baseline is 3. The description adds little parameter-level meaning beyond what the schema already provides, though it does reinforce that 'records' are additions and that 'ttl' is an optional update. No substantial extra semantic value is contributed.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Add'), names the resource ('existing RRSet'), and explicitly states the non-destructive scope ('without removing existing ones'). This clearly distinguishes it from related record-set tools like hetzner_set_zone_rrset_records or hetzner_update_zone_rrset_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?
The description provides clear context: use this when adding records to an existing RRSet while preserving current records, and optionally updating the TTL. It does not explicitly name alternatives or state when not to use it, but the additive wording gives enough practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_apply_firewallApply Firewall to ResourcesA
Apply a firewall to one or more servers or label selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| apply_to | Yes | Resources to apply the firewall to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and non-destructiveness (destructiveHint=false). The description adds no additional context about behavioral traits such as idempotency, side effects, or permissions. It merely states the action without delving into what happens during application.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the essential action and resource, and contains no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple action with two well-documented parameters, the description is adequate but lacks completeness. It does not explain what happens if a resource already has the firewall applied, or the behavior of label selectors. Given the absence of an output schema, more context would be helpful for an AI agent to anticipate 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%, with both parameters already described ('id' and 'apply_to'). The description adds no new semantics beyond what's in the schema, such as value formats or constraints (e.g., label selector syntax). It provides a high-level overview but no extra detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply'), the resource ('firewall'), and the scope ('to one or more servers or label selectors'). It effectively distinguishes from siblings like 'hetzner_create_firewall' and 'hetzner_remove_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?
The description implies usage when you have an existing firewall to assign, but it does not explicitly state when to use this tool vs alternatives, nor does it mention prerequisites or exclusions. For example, it doesn't clarify that the firewall must already exist or how it differs from 'hetzner_set_firewall_rules'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_assign_floating_ipAssign Floating IPA
Assign a floating IP to a server in the same location.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID | |
| server | Yes | Server ID to assign the floating IP to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only, not destructive, not idempotent, and open-world. The description adds no additional behavioral context such as reversibility, side effects, or state requirements, so it does not exceed what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (one short sentence). While it conveys the core purpose, it lacks useful structure such as a second sentence on prerequisites or outcome. It could be more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 simple tool (2 required params, no output schema), the description is barely adequate. It misses details like return value, success/failure states, or elaboration on the location constraint. The location note is valuable but 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 100%, so the schema already documents both parameters. The description adds no extra meaning beyond the parameter names; 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 clearly states the action ('Assign'), the resource ('floating IP'), and the target ('server') with the important constraint ('in the same location'). This distinguishes it from siblings like 'hetzner_unassign_floating_ip' and other floating IP operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 context with the location constraint but does not explicitly guide the agent on when to use this tool versus alternatives (e.g., 'hetzner_change_floating_ip_protection'). No prerequisites or conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_assign_primary_ipAssign Primary IPB
Assign a primary IP to a server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID | |
| assignee_id | Yes | Server ID to assign the primary IP to | |
| assignee_type | Yes | Assignee type (must be "server") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Assign a primary IP to a server.' While annotations exist (readOnlyHint=false, etc.), the description adds no behavioral details about side effects, such as replacing an existing primary IP or impact on networking. OpenWorldHint is true but unexplained.
Agents need to know what a tool does to the 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 extremely concise (one sentence) and front-loaded with the core purpose. It could benefit from slight expansion, but it is not verbose or wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (3 required params, no output schema), the minimal description might be sufficient but lacks any context about constraints, typical use cases, or behavior when the IP is already assigned. It feels incomplete for an AI 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 100%, and each parameter already has a clear description. The tool description adds no extra meaning beyond the schema, so 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 clearly states the action ('Assign') and resource ('primary IP' to a server). It distinguishes from sibling tools like 'hetzner_assign_floating_ip' (different resource) and 'hetzner_unassign_primary_ip' (opposite 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 no guidance on when to use this tool, prerequisites, or when not to use it. It does not mention alternatives or provide context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_attach_isoAttach ISO to ServerA
Attach an ISO image to a server. The server must be rebooted to boot from the ISO.
| Name | Required | Description | Default |
|---|---|---|---|
| iso | Yes | ISO name or ID to attach | |
| server_id | Yes | Server ID to attach the ISO to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations by stating the reboot requirement, which is not implied by the annotations (readOnlyHint=false, destructiveHint=false). This helps the agent understand the post-action 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 extremely concise: two sentences with no wasted words. The first sentence states the action, and the second adds a critical condition. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description covers the essential action and the key behavioral requirement (reboot). No output schema exists, but the return value is straightforward. It is complete enough for an agent to understand the tool's 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?
The input schema provides descriptions for both parameters (server_id, iso) and coverage is 100%. The description does not add additional parameter-specific details 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 title and description clearly state 'Attach an ISO image to a server,' with a specific verb and resource. The sibling tool hetzner_detach_iso provides a clear counterpart, making the purpose distinct and 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 provides a clear usage context: attaching an ISO and the critical requirement that the server must be rebooted to boot from it. It does not explicitly mention when not to use or list alternatives, but the sibling list shows related tools like hetzner_get_iso and hetzner_list_isos for reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_attach_lb_to_networkAttach Load Balancer to NetworkB
Attach a load balancer to a network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| ip | No | IP address to assign in the network | |
| network | Yes | Network ID to attach to | |
| ip_range | No | Subnet IP range (CIDR) to attach to, e.g. "10.0.1.0/24" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description merely restates the action without disclosing behavioral traits such as idempotency, whether it overwrites existing network attachments, or any effects on the load balancer's public interface. Annotations indicate it is a write operation but not destructive, yet no additional context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words, front-loading the key action and resources.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description lacks context about side effects (e.g., whether attaching replaces an existing network attachment, if the load balancer must be in a certain state) and does not reference the output or limitations. For a simple mutation tool with no output schema, more behavioral context 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 descriptions already fully define all parameters (id, network, ip, ip_range) with clear meanings. The description adds no additional value beyond the schema, so 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 the action (attach) and the resources involved (load balancer to a network). It is specific enough to distinguish from siblings like hetzner_detach_lb_from_network and hetzner_attach_server_to_network.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives, prerequisites (e.g., load balancer and network must exist), or whether the load balancer must not already be attached to a network.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_attach_server_to_networkAttach Server to NetworkB
Attach a server to a private network, optionally assigning a specific IP, alias IPs, or IP range.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | No | Private IP to assign the server in the network (within the network IP range) | |
| network | Yes | ID of the network to attach the server to | |
| ip_range | No | Subnet IP range (CIDR) to attach to, e.g. "10.0.1.0/24" | |
| alias_ips | No | Additional alias IPs to assign the server on the network |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but not destructive. The description adds that optional IP assignments are possible, but it does not disclose behavioral traits like whether attaching affects running services, requires the server to be powered off, or if it overwrites existing network config. Annotations already cover safety, so the description adds minimal 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?
The description is a single, well-structured sentence that conveys the core action and optional capabilities without extraneous information. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description lacks important context for a mutation tool with no output schema. It does not explain return values, side effects, prerequisites (e.g., server and network must exist), or whether the operation is reversible. Given the complexity of network attachment and the lack of output schema, the description should provide more guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. The description reiterates that ip, alias_ips, and ip_range are optional, aligning with the schema. This adds context but does not significantly enhance understanding beyond what the schema already provides. 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 clearly states the action (attach a server to a private network) and optionally mentions assigning IPs, which distinguishes it from sibling tools like detach_server_from_network or attach_volume. The verb+resource+target structure is specific and 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?
No usage guidelines are provided. The description does not mention when to use this tool versus alternatives (e.g., assign_floating_ip for public IPs, or attach_lb_to_network). It also does not specify prerequisites such as server and network existence or whether the server should be powered off.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_attach_volumeAttach VolumeB
Attach a volume to a server. The server and volume must be in the same location.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID | |
| server | Yes | Server ID to attach the volume to | |
| automount | No | Auto-mount the volume after attaching |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness (destructiveHint=false). The description adds the location constraint as a behavioral requirement, but does not disclose whether the volume must be unattached first, impact on server, or automount behavior. Moderate additional 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?
The description is extremely concise with two sentences that front-load the action and essential constraint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks explanation of automount behavior, expected result, prerequisites (e.g., volume not attached elsewhere), and error scenarios. For a tool with no output schema and multiple parameters, more context 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 coverage is 100% with clear parameter descriptions. The tool description adds no new meaning beyond the schema, so 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 clearly states the action ('Attach a volume to a server') and adds a specific constraint ('server and volume must be in the same location'), making the purpose precise and distinguishable from related tools like hetzner_detach_volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a prerequisite (same location) but gives no guidance on when to use this tool versus alternatives such as hetzner_create_volume or hetzner_detach_volume. No when-not-to-use or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_alias_ipsChange Server Alias IPsADestructiveIdempotent
Replace the alias IPs that a server has on a private network. The list overrides any existing alias IPs for that network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| network | Yes | ID of the network the server is attached to | |
| alias_ips | Yes | Full list of alias IPs to set on the network (replaces existing). Pass [] to clear. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the operation is destructive (destructiveHint=true) and idempotent (idempotentHint=true). The description adds context about overriding existing alias IPs, but does not disclose additional behaviors such as prerequisites, permissions, or error scenarios beyond what the annotations and schema 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 description is a single sentence of 18 words, front-loading the action and using imperative mood. No extraneous information, and it efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with three required parameters and no output schema, the description covers the essential operation. However, it does not mention return values or prerequisites (e.g., server must be attached to the network), which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple 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 each parameter having a clear description. The tool description does not add new semantic meaning beyond what the schema already conveys, so it meets the baseline of 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?
The description clearly states the action ('Replace'), the resource ('alias IPs that a server has on a private network'), and the effect ('overrides any existing alias IPs for that network'). This distinguishes it from other change tools in the sibling list, which target different resources like protection, DNS, or load balancer settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use (when you need to set the alias IPs for a server on a network, replacing existing ones). However, it does not explicitly state when not to use or mention alternatives like adding/removing individual IPs, which are not present in sibling tools but could be relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_dns_ptrChange Server Reverse DNSAIdempotent
Change the reverse DNS entry for one of a server's public IPv4 or IPv6 addresses. Set dns_ptr to null to reset to the default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| ip | Yes | Public IPv4 or IPv6 address of the server to set the reverse DNS entry for | |
| dns_ptr | Yes | Reverse DNS PTR record value, or null to reset to the default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations list idempotentHint=true, non-destructive, non-read-only. The description adds the reset behavior (setting to null). However, it does not disclose other behavioral traits like potential errors, prerequisites, or effects. With annotations present, it adds modest 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?
The description is two sentences, front-loaded with the main action, and includes a specific usage note. No extraneous 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?
Given the tool's simplicity and the presence of annotations and full schema, the description is mostly complete. It lacks mention of prerequisites (server existence, IP assignment) and success behavior, but these are minor for a simple mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the schema (100% coverage). The description's role is to add meaning beyond the schema, but it largely restates the same info (e.g., 'change reverse DNS', 'set to null to reset'). No new semantic details are provided.
Input schemas describe structure but not intent. Descriptions should explain 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 the tool's purpose: changing reverse DNS for a server's IP address. It specifies 'one of a server's public IPv4 or IPv6 addresses', which distinguishes it from sibling tools like hetzner_change_floating_ip_rdns that target floating IPs. The reset behavior is also mentioned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use by specifying 'server's public...' but does not explicitly contrast with alternatives like other RDNS change tools. It gives a usage example (set to null to reset), but lacks guidance on prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_floating_ip_protectionChange Floating IP ProtectionAIdempotent
Enable or disable delete protection on a floating IP to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID | |
| delete | No | If true, prevents the floating IP from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds context that the tool enables or disables delete protection, which explains the idempotent nature (toggling) and confirms non-destructive behavior. This goes beyond annotations by specifying the protection type.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence (17 words) that is front-loaded with the action and resource. Every word contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple boolean toggle with no output schema, the description adequately covers the operation. It does not explain return values, but this is not expected given the tool's simplicity and the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for both parameters ('id' and 'delete'). The description does not add any new information about the parameters beyond what the schema already provides, hitting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'enable or disable', the resource 'delete protection on a floating IP', and the purpose 'to guard against accidental destruction'. It distinguishes itself from sibling tools like hetzner_change_floating_ip_rdns and hetzner_update_floating_ip by specifying the exact aspect being changed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context for when to use this tool: to toggle delete protection. While it does not explicitly state when not to use it or mention alternatives, the purpose is unambiguous and sufficient for decision-making given the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_floating_ip_rdnsChange Floating IP Reverse DNSAIdempotent
Change the reverse DNS entry for a floating IP. Set dns_ptr to null to reset.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID | |
| ip | Yes | IP address to set the reverse DNS entry for | |
| dns_ptr | Yes | Reverse DNS PTR record value, or null to reset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and openWorldHint=true, reducing the burden on description. The description adds the specific behavior of resetting via null, which is not in the annotations. No 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?
The description consists of two short, clear sentences with no extraneous information. It is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description lacks detail on return values or side effects, but given idempotentHint and no output schema, it is minimally adequate. Could mention that success is indicated implicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that setting dns_ptr to null resets the reverse DNS entry, which is beyond the schema's definition of the parameter as nullable.
Input schemas describe structure but not intent. Descriptions should explain 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 the tool changes the reverse DNS entry for a floating IP. It uses a specific verb and resource, distinguishing it from siblings like 'hetzner_change_dns_ptr' which targets DNS entries 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?
The description provides one guideline: setting dns_ptr to null resets the entry. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_image_protectionChange Image ProtectionAIdempotent
Enable or disable delete protection on a snapshot or backup image to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID | |
| delete | No | If true, prevents the image from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotency and non-destructiveness. The description adds context about delete protection specifically and guarding against accidental destruction. It is consistent with annotations and provides useful behavioral context beyond the structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of 17 words, front-loaded with key information, and contains no unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with two parameters and no output schema, the description is sufficient. It specifies the target (snapshot/backup image) and the action. Minor omission: could mention that protection only prevents deletion, not modifications, but overall adequately 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%, so baseline 3 applies. The description does not add additional meaning beyond the schema; the boolean parameter 'delete' mapping is clear from the description but does not enhance schema 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 clearly states the tool enables or disables delete protection on snapshot/backup images, specifying the verb, resource, and purpose. It effectively distinguishes from sibling tools like hetzner_delete_image or hetzner_get_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (to protect images from deletion) but does not explicitly state when to use versus alternatives, nor does it mention prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_ip_rangeChange Network IP RangeAIdempotent
Expand the IP range of an existing network. The new CIDR range must contain the current range; shrinking is not supported.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Network ID | |
| ip_range | Yes | New IP range in CIDR notation (e.g. "10.0.0.0/8"). Must be a superset of the current range. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond annotations: confirms expansion-only operation and superset requirement. No contradictions with annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=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?
Two sentences, no fluff, front-loaded with the primary action. Every sentence adds necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with 2 parameters and no output schema, the description covers purpose, constraint, and behavior. Missing nothing critical.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for both parameters. The description adds minimal extra meaning beyond what the schema already provides (e.g., 'superset' constraint is already in 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?
The description uses a specific verb ('Expand') and resource ('IP range of an existing network'), clearly distinguishing it from sibling tools like create_network or update_network.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 constraint that the new CIDR must contain the current range and that shrinking is not supported, providing clear usage context. However, it does not compare to alternatives or mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_lb_algorithmChange Load Balancer AlgorithmAIdempotent
Change the balancing algorithm of a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| type | Yes | Algorithm type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is idempotent, non-destructive, and not read-only. The description adds no additional behavioral context beyond the annotation hints, such as whether changing the algorithm affects existing connections or requires a specific load balancer state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant information. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of good annotations and schema coverage, the minimal description is adequate but lacks context about effects (e.g., impact on traffic) or prerequisites (e.g., load balancer status).
Complex tools with many parameters or behaviors need more documentation. 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, with both parameters ('id' and 'type') well-documented. The description does not add any extra meaning beyond the schema; it simply restates the purpose.
Input schemas describe structure but not intent. Descriptions should explain 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 the action ('Change') and the resource ('balancing algorithm of a load balancer'). It distinguishes from sibling tools like 'hetzner_change_lb_type' which modifies a different property (load balancer type).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., 'hetzner_update_load_balancer' or 'hetzner_change_lb_type'). The description does not mention any prerequisites or conditions for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_lb_dns_ptrChange Load Balancer Reverse DNSAIdempotent
Change the reverse DNS entry for one of a load balancer's public IP addresses. Set dns_ptr to null to reset to the default.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Load Balancer ID | |
| ip | Yes | Public IPv4 or IPv6 address of the load balancer to set the reverse DNS entry for | |
| dns_ptr | Yes | Reverse DNS PTR record value, or null to reset to the default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint and non-destructiveHint. The description adds the valuable detail that null resets to default. However, it does not disclose permission requirements or other side effects.
Agents need to know what a tool does to the 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 concise sentences, front-loaded with the core action, and zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich annotations (idempotentHint, openWorldHint) and full schema coverage, the description is sufficient. It covers the crucial null-reset behavior, 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 coverage is 100% and each parameter is well-described in the schema. The description does not add additional meaning beyond the schema; the null reset behavior is already captured in the schema's description of dns_ptr.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb ('Change'), the resource ('reverse DNS entry for a load balancer's public IP'), and a specific behavior ('Set dns_ptr to null to reset'). It distinguishes from similar tools like change_dns_ptr by specifying 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?
The description implies usage context (setting PTR for load balancer IPs) but does not explicitly compare with sibling tools like change_dns_ptr or change_floating_ip_rdns, nor does it mention 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.
hetzner_change_lb_typeChange Load Balancer TypeBIdempotent
Change the type (plan) of a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| load_balancer_type | Yes | New load balancer type name or ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true, but the description adds no behavioral context—e.g., potential downtime, billing changes, or validation rules. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that directly conveys the purpose without redundancy. It is front-loaded and efficient, though it sacrifices 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?
With no output schema and only two params, the description should cover typical usage context—like verifying type availability or handling errors—but fails to do so. The tool may be usable but the description leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already explains both parameters ('Resource ID' and 'New load balancer type name or ID'). The description adds no additional meaning beyond the schema, meriting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain 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 'change' and clearly identifies the resource as 'type (plan) of a load balancer.' It is distinct from sibling tools like change_lb_algorithm or change_load_balancer_protection, which target different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives, such as when to upgrade vs. downgrade, or prerequisites like checking available types via hetzner_list_lb_types. The description lacks context about use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_load_balancer_protectionChange Load Balancer ProtectionAIdempotent
Enable or disable delete protection on a load balancer to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Load Balancer ID | |
| delete | No | If true, prevents the load balancer from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds minimal context ('guard against accidental destruction') beyond what the schema and annotations provide. It does not detail side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool, the description, combined with the schema and annotations, provides sufficient information for an agent to understand and invoke the tool correctly. It covers the essential purpose and 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 100%, with both parameters described. The description does not add new meaning to the parameters beyond the schema. It could have elaborated on the default behavior when 'delete' is not provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it enables or disables delete protection on a load balancer, specifying both the action and the resource. It distinguishes from sibling protection tools for other resources like floating IP, server, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for protecting a load balancer from deletion but does not explicitly state when to use this tool versus other protection tools or provide any prerequisites. There is no guidance on 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.
hetzner_change_network_protectionChange Network ProtectionAIdempotent
Enable or disable delete protection on a network to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Network ID | |
| delete | No | If true, prevents the network from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write (readOnlyHint=false), non-destructive (destructiveHint=false), and idempotent (idempotentHint=true) behavior. Description adds that it guards against accidental destruction, which aligns with annotations. No additional behavioral details like side effects 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?
Single sentence of 14 words, directly conveying purpose and effect. No filler, front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 it's a simple toggle with no output schema and good annotations, the description is mostly complete. It could mention that the network must already exist, but this is implied by the resource type.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear descriptions for both parameters (id: Network ID, delete: If true prevents deletion). Description does not add any new meaning beyond the schema; it simply summarizes the boolean 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?
Description clearly states the tool enables or disables delete protection on a network, using specific verb (enable/disable) and resource (network protection). It distinguishes from sibling tools by focusing on network protection, matching the naming pattern of other protection tools like hetzner_change_server_protection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like other protection tools or manual deletion prevention. No mention of prerequisites (e.g., network must exist) or context where toggling protection is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_primary_ip_protectionChange Primary IP ProtectionAIdempotent
Enable or disable delete protection on a primary IP to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID | |
| delete | No | If true, prevents the primary IP from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide key behavioral hints (idempotent, not destructive, not readonly). The description adds minimal extra context ('guard against accidental destruction') but doesn't elaborate on side effects or idempotency implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the tool's purpose without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two well-described parameters and robust annotations, the description provides sufficient context. It covers the essential purpose and benefit, though it could optionally mention the effect of setting delete to false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema with clear descriptions. The tool description adds no additional parameter 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 clearly states the tool's function: enable or disable delete protection on a primary IP. It uses specific verbs and resource type, and the name distinguishes it from many similar protection tools for other Hetzner 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?
The description implies use when wanting to guard against accidental deletion but lacks explicit guidance on when not to use it or alternatives. Given the sibling list, the purpose is clear, but no comparative context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_primary_ip_rdnsChange Primary IP Reverse DNSAIdempotent
Change the reverse DNS entry for a primary IP. Set dns_ptr to null to reset.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID | |
| ip | Yes | IP address to set the reverse DNS entry for | |
| dns_ptr | Yes | Reverse DNS PTR record value, or null to reset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and destructiveHint=false, indicating the operation is non-destructive and safe to retry. The description adds the behavior of resetting via null, which is already in the schema description for dns_ptr. However, it does not disclose whether other settings are affected, what happens if the IP is not assigned, or any authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words. Front-loaded with the main purpose followed by a key behavioral note. Highly 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?
Given the lack of output schema, the description does not mention what is returned (e.g., the updated primary IP object). For a simple mutation with 3 params, it covers the basic action but lacks information about error scenarios or required resource state (e.g., the primary IP must exist and not be in use or something). Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear descriptions for all three required parameters. The description's extra statement about null reset is redundant with the schema description. No additional semantics beyond the schema are provided, so 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?
Description clearly states the tool changes reverse DNS for a primary IP, with specific verb 'change' and resource 'primary IP'. It also mentions the special case of setting dns_ptr to null to reset. The name and title match the description, and it is distinct from sibling tools like hetzner_change_floating_ip_rdns by explicitly stating 'primary 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?
No guidance on when to use this tool versus alternatives like hetzner_change_floating_ip_rdns or hetzner_change_dns_ptr. No prerequisites or conditions for use are mentioned. The description only states the action without any context on appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_server_protectionChange Server ProtectionAIdempotent
Enable or disable delete and rebuild protection on a server to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| delete | No | If true, prevents the server from being deleted | |
| rebuild | No | If true, prevents the server from being rebuilt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds little behavioral context beyond the annotations. Annotations already indicate idempotent and non-destructive behavior, but the description does not disclose any additional traits like prerequisites or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with no wasted words, front-loading the key purpose. It is appropriately 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?
Given the simplicity of the tool and full schema coverage, the description is largely complete. It states the purpose clearly, though it could mention that the server must exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description briefly summarizes the boolean parameters (delete and rebuild) but does not add meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables delete and rebuild protection on a server, using a specific verb and resource. It distinguishes from sibling protection tools by specifically mentioning 'server'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for protecting servers, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., other change_X_protection tools). No when-not-to-use or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_storage_box_protectionChange Storage Box ProtectionAIdempotent
Enable or disable delete protection on a Storage Box to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| delete | No | If true, prevents the Storage Box from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, idempotent behavior. The description adds rationale ('guard against accidental destruction') but lacks details on idempotency effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence that immediately conveys the tool's action. No extraneous 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?
Adequately describes the tool for its simplicity, though it could mention that the 'delete' parameter is optional (not required). Overall sufficient for a protection toggle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters. The description does not add semantic value beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a clear verb ('Enable or disable delete protection') and resource ('Storage Box'), and is distinct from sibling tools like change_floating_ip_protection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when toggling delete protection but does not explicitly state when to use or avoid this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_storage_box_subaccount_home_directoryChange Storage Box Subaccount Home DirectoryAIdempotent
Change the home directory a Storage Box subaccount is scoped to.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| subaccount_id | Yes | Subaccount ID | |
| home_directory | Yes | New home directory for the subaccount, e.g. "/backups/db" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, openWorldHint=true, and non-destructive. The description adds no further behavioral context (e.g., whether existing files are moved). It is adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, directly states the action and resource. No redundant words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 change operation with full schema coverage, the description covers the basics. However, it lacks context about validation, immediacy of the change, or side effects, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear descriptions for all three parameters, including an example for home_directory. Description adds no extra 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?
Description clearly states the verb 'change' and the resource 'home directory a Storage Box subaccount is scoped to', exactly matching the tool name and distinguishing it from sibling tools like hetzner_update_storage_box_subaccount.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., hetzner_update_storage_box_subaccount). The usage is implied but lacks exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_storage_box_typeChange Storage Box TypeB
Change the type (capacity tier) of a Storage Box. The new type must have at least the current usage capacity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| storage_box_type | Yes | ID or name of the target Storage Box type, e.g. "bx30" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a mutation (readOnlyHint false) and non-destructive (destructiveHint false). The description adds the capacity constraint but does not disclose error handling, reversibility, or side effects beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff, front-loaded with the core action. Every part 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?
Adequate for a simple mutation with 2 params and no output schema. However, it lacks details on return values, potential errors, and whether the operation is reversible. The capacity constraint is helpful but could be expanded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds the capacity constraint for storage_box_type, but does not explain how to find available types or how the condition is validated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it changes the type/capacity tier of a Storage Box, with a constraint on capacity. It distinguishes from get/list tools but not from hetzner_update_storage_box, which might also modify type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like hetzner_update_storage_box or when not to use it. No prerequisites mentioned, such as checking current usage capacity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_volume_protectionChange Volume ProtectionAIdempotent
Enable or disable delete protection on a volume to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID | |
| delete | No | If true, prevents the volume from being deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, and idempotentHint=true. The description adds that the tool enables/disables delete protection, which is clear. No contradictions. It adequately discloses the mutation behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 15 words, front-loaded with action and resource. Every word is necessary; 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 simple toggle tool with two parameters and no output schema, the description is sufficient. It explains the purpose and the effect. Minor gap: it doesn't state the volume ID is required, but that's 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 100%, so baseline 3. The description ('delete protection') adds context to the 'delete' boolean parameter, but does not add technical details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (enable/disable delete protection) and resource (volume), with purpose to guard against accidental destruction. The title matches. Among sibling tools with similar 'change_*_protection' patterns, it is distinct for 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?
The description gives a use case (protection against accidental deletion) but does not contrast with other protection tools or provide when-not-to-use guidance. The context is implied via sibling tools, but explicit guidelines are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_zone_primary_nameserversChange DNS Zone Primary NameserversAIdempotent
Replace the list of primary nameservers used by a secondary DNS zone for AXFR/IXFR transfers.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | Zone ID or name | |
| primary_nameservers | Yes | New full list of primary nameservers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate mutation (readOnlyHint=false) and idempotency, which the description supports by stating 'Replace'. It adds context about secondary zones and AXFR/IXFR, but does not disclose potential side effects or required permissions beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 18 words, no redundancy. Essential information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description adequately explains purpose and scope (secondary zone, AXFR/IXFR). It does not detail return values (no output schema) or error conditions, but is largely complete given tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The description adds no additional meaning beyond schema, so 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 uses the specific verb 'Replace' and clearly identifies the resource ('primary nameservers') and context ('secondary DNS zone for AXFR/IXFR transfers'), distinguishing it from sibling tools like 'hetzner_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 explicit guidance on when to use this tool versus alternatives, such as 'hetzner_update_zone' or 'hetzner_import_zonefile'. No prerequisites or limitations mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_zone_protectionChange DNS Zone ProtectionAIdempotent
Enable or disable delete protection on a DNS zone to guard against accidental destruction.
| Name | Required | Description | Default |
|---|---|---|---|
| delete | No | If true, prevents the zone from being deleted | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds context about guarding against accidental destruction, which aligns with the idempotentHint. No 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?
A single, front-loaded sentence with no wasted words. Every word earns its place, making it highly 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?
Given the simple two-parameter tool with full schema coverage and no output schema, the description provides sufficient context. It covers the purpose and effect, but could mention that the tool is idempotent or that protection can be toggled multiple times.
Complex tools with many parameters or behaviors need more documentation. Simple 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. The description does not elaborate on parameters beyond the schema, which already provides adequate descriptions for 'id_or_name' and 'delete'.
Input schemas describe structure but not intent. Descriptions should explain 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 the action (enable/disable delete protection) and the resource (DNS zone), distinguishing it from sibling protection tools like hetzner_change_floating_ip_protection or hetzner_change_server_protection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for managing zone protection but lacks explicit guidance on when to use versus alternatives (e.g., hetzner_change_zone_rrset_protection) or prerequisites. The context is clear but no exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_zone_rrset_protectionChange DNS Zone RRSet ProtectionAIdempotent
Enable or disable change protection on an RRSet to guard against accidental modification or deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| change | No | If true, prevents the RRSet from being modified or deleted | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is mutating, non-destructive, and idempotent. The description adds the consequence that protection guards against accidental modification or deletion, which is useful but mostly reinforces what the tool's name and the `change` parameter already imply. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that states the action, the resource, and the purpose with no wasted words. The key information is front-loaded and immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 toggle operation with comprehensive parameter schemas and annotations covering the safety profile, the description is functionally complete. An agent can select the tool and invoke it correctly from the provided information. Minor missing piece is explicit guidance about how this differs from zone-level protection mutations.
Complex tools with many parameters or behaviors need more documentation. Simple 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 four parameters, including the boolean `change` behavior and the id_or_name, name, and type fields. The description does not add 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 clearly identifies the action ('Enable or disable change protection') and the resource ('on an RRSet'), making it obvious what the tool does. It does not explicitly distinguish itself from sibling protection tools such as hetzner_change_zone_protection, 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 phrase 'to guard against accidental modification or deletion' provides clear context for when this tool should be used. It does not explicitly mention alternatives or when not to use it, but the intended use case is clear for a resource-specific protection toggle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_zone_rrset_ttlChange DNS Zone RRSet TTLBIdempotent
Change the TTL of an RRSet. Pass ttl=null to fall back to the zone default TTL.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | Yes | New TTL in seconds, or null to fall back to the zone default | |
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a mutating, non-destructive, idempotent operation, so the description does not need to restate that. However, it adds no behavioral context beyond the null-fallback behavior, which is already in the schema description. There is no mention of propagation, permissions, or side effects on existing records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It leads with the core action and then adds the key exception/nuance. This is an appropriately sized and well-structured 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?
For a single-attribute mutation with complete schema coverage and helpful annotations, the description is sufficient. It captures the core behavior and the null special-case. It could be slightly richer about relationship to zone-level TTL or expected effects, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented. The description's 'ttl=null to fall back to the zone default TTL' repeats what the schema already says. The description adds no semantic value beyond the structured 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: 'Change the TTL of an RRSet.' It also adds the meaningful null-fallback behavior, clarifying the scope of the operation. It does not explicitly contrast with the sibling change_zone_ttl, but the RRSet-specific focus makes the purpose 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 implies this tool is for per-RRSet TTL changes, and the phrase 'zone default TTL' hints at a zone-level alternative. However, it does not explicitly say when to use this tool versus change_zone_ttl or other RRSet tools. The usage guidance is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_change_zone_ttlChange DNS Zone Default TTLAIdempotent
Change the default TTL applied to records in a DNS zone that do not have an explicit TTL.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | Yes | New default TTL in seconds | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by specifying that the change only affects records that do not have an explicit TTL. This behavioral detail is not captured by the annotations, which already indicate idempotent and non-destructive traits. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that clearly conveys the tool's purpose. It is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with two parameters and no output schema, the description adequately covers the purpose and key behavioral detail (only affects records without explicit TTL). It does not mention prerequisites or side effects, but these are largely inferable from context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond the schema, which already describes both parameters 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?
The description clearly states the verb 'Change' and the resource 'default TTL applied to records in a DNS zone'. It distinguishes from sibling tools like hetzner_change_zone_rrset_ttl by specifying 'default TTL' for the entire zone versus a specific record set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like hetzner_change_zone_rrset_ttl or other zone configuration tools. There is no mention of prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_certificateCreate CertificateA
Create an uploaded certificate (provide PEM data) or a managed certificate (provide domain names).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the certificate | |
| type | No | Certificate type (default: uploaded) | |
| labels | No | Labels as key-value pairs | |
| certificate | No | PEM-encoded certificate (required for uploaded type) | |
| private_key | No | PEM-encoded private key (required for uploaded type) | |
| domain_names | No | Domain names (required for managed type) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true. The description adds context about the two modes but does not disclose behavioral traits like idempotency, rate limits, or potential duplicates. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 15 words, starting with the action verb. It is extremely concise and front-loaded, wasting no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no output schema, open-world hint) and rich schema coverage, the description adds value by clarifying the two creation modes and conditional requirements. It does not mention related operations (e.g., update, retry) but is fairly complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. 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 has 100% parameter description coverage, so the baseline is 3. The description mentions 'PEM data' and 'domain names' but these are already detailed in the schema parameters. No additional parameter-level meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain 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 that the tool creates a certificate, specifying two distinct types: uploaded (PEM data) and managed (domain names). It uses a specific verb and resource, and distinguishes between sibling tools like hetzner_get_certificate and hetzner_delete_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?
The description implies when to use the tool (to create a certificate of either type) but does not provide exclusions or alternatives. It could mention that for retrieving existing certificates, use get_certificate, or for deleting, use delete_certificate, but it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_firewallCreate FirewallB
Create a new firewall with optional rules and resource assignments.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the firewall | |
| rules | No | Array of firewall rules | |
| labels | No | Labels as key-value pairs | |
| apply_to | No | Resources to apply the firewall to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false) and nondestructive (destructiveHint=false). The description adds no extra behavioral details beyond the annotations, such as idempotency, side effects, or error conditions. With openWorldHint=true, the agent might expect unknown side effects, but the description doesn't clarify.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence without redundancy. It gets the point across efficiently, but could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complexity (nested objects, 4 parameters, no output schema), the description is insufficient. It does not explain what the response contains, whether creation succeeds immediately, or any constraints like name uniqueness. For a creation tool, more context is expected.
Complex tools with many parameters or behaviors need more documentation. Simple 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%, meaning every parameter has a description in the schema. The tool description merely echoes that rules and apply_to are optional, adding no new semantic nuance. 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?
Description states 'Create a new firewall with optional rules and resource assignments.' This clearly identifies the verb (create) and resource (firewall), and distinguishes from siblings like hetzner_apply_firewall (which applies existing firewalls) and hetzner_set_firewall_rules (which modifies rules).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives such as hetzner_apply_firewall or hetzner_set_firewall_rules. The description lacks any prerequisites, exclusions, or context for choosing this action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_floating_ipCreate Floating IPA
Create a new floating IP. Either home_location or server must be provided.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the floating IP | |
| type | Yes | IP type | |
| labels | No | Labels as key-value pairs | |
| server | No | Server ID to assign the floating IP to. Required if home_location is not set | |
| description | No | Description of the floating IP | |
| home_location | No | Home location name (e.g. "fsn1"). Required if server is not set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only, and the description confirms it creates a floating IP. However, it does not disclose additional behavioral traits like idempotency or side effects; the constraint is already implied by 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 description is a single sentence that is direct and contains no unnecessary words. It is front-loaded with the action and key 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?
With 6 parameters, no output schema, and a simple description, the agent lacks information about return values or post-creation behavior. The description does not compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add significant meaning beyond what is already in the schema. The constraint about home_location/server is mirrored in 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?
The description clearly states 'Create a new floating IP' with a specific verb and resource. It distinguishes from siblings like hetzner_create_primary_ip by specifying the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the key constraint 'Either home_location or server must be provided' but does not differentiate from alternative tools or provide when-to-use guidance beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_imageCreate ImageB
Create a snapshot image from an existing server.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Image type (default: snapshot) | |
| labels | No | Labels as key-value pairs | |
| server_id | Yes | Server ID to create the image from | |
| description | No | Image description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation (readOnlyHint=false), but no destructive or idempotent hints. The description does not disclose consequences like potential conflicts or limits. With no output schema, the agent lacks insight into return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence of 8 words with zero wasted words. It is front-loaded and efficient, though it could benefit from slight expansion for context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high schema coverage, the description is too minimal for a creation tool with 4 parameters. It omits information about image types, labels, description, and return values, which an agent needs 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%, so baseline is 3. The description does not add any meaning beyond what the schema already provides for 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 the action (create) and resource (image) and source (existing server). It is specific and distinguishes from sibling tools that create other resources like servers or 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 tool versus alternatives, such as hetzner_enable_backup or when to choose between snapshot and backup types. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_load_balancerCreate Load BalancerB
Create a new load balancer with the specified type, location, and optional targets and services.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the load balancer | |
| labels | No | Labels as key-value pairs | |
| network | No | Network ID to attach to | |
| targets | No | Array of targets | |
| location | No | Location name (e.g. "fsn1"), mutually exclusive with network_zone | |
| services | No | Array of services | |
| algorithm | No | Load balancing algorithm | |
| network_zone | No | Network zone (e.g. "eu-central"), mutually exclusive with location | |
| public_interface | No | Enable the public interface | |
| load_balancer_type | Yes | Load balancer type name or ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a write operation (readOnlyHint=false). The description adds no extra behavioral context beyond the obvious creation action. It doesn't disclose potential side effects, permission requirements, 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?
The description is a single sentence with 16 words, front-loading the core purpose. No wasted words; every part contributes to understanding the tool's primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's complexity (10 parameters, nested objects, no output schema), the description is too brief. It lacks context on prerequisites, behavior when creating, or return values. The description does not adequately prepare the agent for the full scope of the tool's use.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for all parameters. The description only lists a few parameters generically ('type, location, and optional targets and services') without adding value beyond what the schema already provides. 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 explicitly states 'Create a new load balancer' with 'specified type, location, and optional targets and services,' which is a clear verb+resource. The word 'new' distinguishes it from sibling tools that add to existing load balancers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives like hetzner_add_lb_service or hetzner_add_lb_target. It does not mention prerequisites or typical workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_networkCreate NetworkA
Create a new network with the specified IP range, and optionally subnets and routes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the network | |
| labels | No | Labels as key-value pairs | |
| routes | No | Array of routes to create | |
| subnets | No | Array of subnets to create | |
| ip_range | Yes | IP range of the whole network, e.g. "10.0.0.0/8" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly and non-destructive behavior. The description adds no extra behavioral context, such as permissions required or side effects of creating a network.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is efficient and directly states the tool's purpose and optional features. No redundant 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?
Adequate for a creation tool, but lacks explanation of return values or any constraints (e.g., limits on subnets). Given the complexity of nested arrays, a slightly richer description would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple 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 describes each parameter. The description adds minimal semantic value beyond naming the key parameters (IP range, subnets, routes).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool creates a network with an IP range and optional subnets/routes. It distinguishes from sibling tools like hetzner_add_subnet and hetzner_add_route by being the primary creation 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 explicit guidance on when to use this tool versus alternatives. While the context implies it's for initial network creation, there is no mention of when not to use it or comparisons with related tools like hetzner_update_network.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_placement_groupCreate Placement GroupA
Create a new placement group to control server distribution across hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the placement group | |
| type | Yes | Placement group type | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description adds minimal behavioral context beyond stating the creation action; it does not disclose permissions, idempotency (idempotentHint=false), or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 11 words, efficiently conveying the core purpose without fluff. It is well-structured and front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is minimally adequate. However, it lacks contextual completeness by not explaining the role of placement groups in server distribution, that creation is a prerequisite for adding servers, or that only 'spread' type is available. An AI agent might need more context to use it appropriately.
Complex tools with many parameters or behaviors need more documentation. 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% parameter description coverage, so the schema already explains each parameter. The description does not add further meaning or context, such as explaining the effect of the 'spread' type or the purpose of labels, beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('placement group') and provides a brief purpose ('control server distribution across hosts'). This distinguishes it from sibling tools like hetzner_add_server_to_placement_group and hetzner_update_placement_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as adding servers to an existing group or updating a group. It does not mention prerequisites, appropriateness of the 'spread' type, or scenarios where creation is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_primary_ipCreate Primary IPA
Create a new primary IP with the specified type, optional location, and optional assignee type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the primary IP | |
| type | Yes | IP type | |
| labels | No | Labels as key-value pairs | |
| location | No | Location name (e.g. "fsn1", "nbg1", "hel1") | |
| assignee_id | No | Server ID to assign the primary IP to (create-and-assign in one call) | |
| auto_delete | No | Delete the primary IP when the assignee is deleted | |
| assignee_type | No | Assignee type. Optional since 2026-04-27; defaults to "server" until 2026-08-01, then to "unassigned". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent operation, and the description aligns with them without contradiction. However, it adds little behavioral detail beyond 'new' creation, such as billing implications, the create-and-assign behavior enabled by assignee_id, or the assignee_type default transition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It immediately communicates the core action and the most relevant parameter categories.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 create operation with no output schema, the description is somewhat thin on its own, but the schema carries most of the parameter detail. Missing context includes the create-and-assign option via assignee_id and the future default change for assignee_type, both of which are only present 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 description does not need to compensate. It mentions type, location, and assignee_type, but these are already described in the schema; it adds no significant meaning beyond what the input schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new primary IP'), while noting the key distinguishing parameters (type, optional location, optional assignee type). This makes it easy to differentiate from sibling tools like hetzner_create_floating_ip or hetzner_update_primary_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?
There is no guidance about when to use this tool versus alternatives such as assign_primary_IP or update_primary_IP. The description does not mention conditions, prerequisites, or exclusions, so the agent must infer usage solely from the word 'Create' and the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_serverCreate ServerC
Create a new server with the specified type, image, and configuration options.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the server | |
| image | Yes | Image name or ID to use (e.g. "ubuntu-22.04", "debian-12") | |
| labels | No | Labels as key-value pairs | |
| volumes | No | Volume IDs to attach at creation | |
| location | No | Location name (e.g. "fsn1", "nbg1", "hel1") | |
| networks | No | Network IDs to attach the server to | |
| ssh_keys | No | SSH key names or IDs to inject | |
| automount | No | Auto-mount the volumes passed in "volumes" after attach | |
| firewalls | No | Firewalls to apply to the server | |
| user_data | No | Cloud-init user data (base64 or plain text) | |
| public_net | No | Public network configuration | |
| server_type | Yes | Server type name or ID (e.g. "cx22", "cpx11") | |
| placement_group | No | Placement group ID | |
| start_after_create | No | Start server after creation (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already communicate that this is a non-read-only, non-idempotent operation, and the description adds no behavioral context beyond the obvious fact that a server is created. It does not disclose consequences such as billing, default start behavior, or what resource identifiers 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?
One sentence with no wasted words, front-loading the core action and resource. It is appropriately short, though the phrase 'configuration options' is generic and carries little 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 14 parameters, nested objects, and no output schema, the description is too thin to be complete. It omits what the success response contains, prerequisites such as SSH keys or networks, and any side effects, leaving the agent to rely solely on the tool name and 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 schema already documents all 14 parameters. The description mentions type and image but adds no format details or relationships beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create') on a specific resource ('a new server') and names the key required inputs (type, image, configuration options). It clearly distinguishes from update/delete server tools, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus other server tools such as hetzner_update_server, hetzner_delete_server, or list/get server tools. There is no mention of prerequisites, provisioning flow, or exclusions, so the agent must infer usage from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_ssh_keyCreate SSH KeyA
Add a new SSH public key to the project for use when creating servers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the SSH key | |
| labels | No | Labels as key-value pairs | |
| public_key | Yes | SSH public key content (e.g. "ssh-rsa AAAA...") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, and the description states 'Add', which is consistent. However, the description adds no extra behavioral context beyond what annotations already provide, such as potential idempotency or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and purpose. Every word earns its place, with no wasted or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the core function but lacks details like return value (no output schema), validation of the public key, or potential constraints. Given the tool's simplicity, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond the schema, relying on the schema's parameter descriptions. With high schema coverage, baseline is 3, and no extra value is added from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Add), resource (SSH public key), and purpose (for use when creating servers). It distinguishes from sibling tools like list, get, update, and delete SSH keys, making the tool's function 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 does not explicitly mention when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. While the context implies it's for creation, the lack of guidance on when to prefer this tool over other SSH-key-related actions is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_storage_boxCreate Storage BoxA
Create a new Storage Box in the given location and type. Billing applies for the provisioned resource.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the Storage Box | |
| labels | No | Labels as key-value pairs | |
| location | Yes | ID or name of the location, e.g. "fsn1" | |
| password | Yes | Password for the Storage Box main account | |
| ssh_keys | No | SSH public keys in OpenSSH format to inject into the Storage Box | |
| access_settings | No | Initial access settings for the Storage Box | |
| storage_box_type | Yes | ID or name of the Storage Box type, e.g. "bx20" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only action, and the description adds the behavioral trait 'Billing applies for the provisioned resource'. This supplements the annotations, but does not disclose other potential side effects like failures or constraints.
Agents need to know what a tool does to the 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 concise sentences, front-loaded with the core purpose. No unnecessary words, and the billing note is efficiently placed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description covers the basic purpose and billing, but given the tool has 7 parameters, nested objects, and no output schema, it lacks information about the expected return value or any prerequisites/constraints. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple 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 itself documents all parameters. The description mentions 'location and type' but adds no new semantic meaning beyond what the schema provides, 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 the action ('Create a new Storage Box'), the resource ('Storage Box'), and the key parameters ('in the given location and type'). This distinguishes it from sibling tools like update, delete, or get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'hetzner_create_storage_box_snapshot' or 'hetzner_get_storage_box'. The description implies usage for creation but does not provide exclusions or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_storage_box_snapshotCreate Storage Box SnapshotA
Create a manual snapshot of a Storage Box, optionally with a description and labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| labels | No | Labels as key-value pairs | |
| description | No | Human-readable description for the snapshot |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-destructive, non-idempotent operation. The description adds minimal additional context ('manual snapshot') but does not disclose potential costs, concurrency behavior, or whether overwriting exists. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that captures the essence. It is front-loaded with the main action and includes optional parameters. While very brief, it has no redundancy and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description could explain return values or behavior (e.g., returns snapshot object, creation time). It does not. However, the tool is simple and well within the context of sibling snapshot tools, making it functional but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, all parameters are described in the schema. The description repeats this ('optionally with a description and labels') without adding new semantic detail or clarifying usage beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the resource ('manual snapshot of a Storage Box'), and optional parameters ('description and labels'). It distinguishes itself from sibling tools like hetzner_create_storage_box (creates the box itself) and hetzner_enable_storage_box_snapshot_plan (enables automatic snapshots).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like creating automatic snapshots via plans. It only describes the action without providing usage context or exclusions. The usage is implied but not guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_storage_box_subaccountCreate Storage Box SubaccountB
Create a subaccount on a Storage Box, scoped to a home directory with its own password and access settings.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| name | No | Optional display name for the subaccount | |
| labels | No | Labels as key-value pairs | |
| password | Yes | Password for the subaccount | |
| description | No | Human-readable description for the subaccount | |
| home_directory | Yes | Home directory the subaccount is scoped to, e.g. "/backups/web" | |
| access_settings | No | Initial access settings for the subaccount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only or destructive, and description confirms it creates a subaccount. However, it does not disclose potential side effects, authentication needs, or behavior under duplicates. Annotations partially cover safety, but description adds limited 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 description is a single 14-word sentence that is entirely front-loaded and to the point. There is no unnecessary information, and every word contributes to understanding the tool's primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool has 7 parameters, nested objects, and no output schema, the description is too brief. It does not describe the return value, confirm that the subaccount is created immediately, or address any potential responses. The agent lacks context on what to expect after 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%, so baseline is 3. The description reiterates the purpose of home_directory, password, and access_settings but does not add new meaning beyond the schema descriptions. It adds no novel parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a subaccount on a Storage Box with scoping to a home directory, password, and access settings. It distinguishes from siblings like create_storage_box (creates the box itself) and update/delete subaccount 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 description provides no explicit guidance on when to use this tool vs alternatives, nor any when-not-to-use conditions. It does not mention prerequisite steps or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_volumeCreate VolumeA
Create a new volume. Either location or server must be provided to determine placement.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the volume | |
| size | Yes | Size of the volume in GB | |
| format | No | Filesystem format for the volume | |
| labels | No | Labels as key-value pairs | |
| server | No | Server ID to attach the volume to. Required if location is not set | |
| location | No | Location name (e.g. "fsn1"). Required if server is not set | |
| automount | No | Auto-mount the volume after attaching to a server |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write, non-destructive, non-idempotent operation with open-world effects. The description adds a placement constraint but does not elaborate on side effects like cost, naming conflicts, or return behavior. It offers some value beyond annotations but remains minimal.
Agents need to know what a tool does to the 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 extremely concise: two short sentences. The first sentence states the purpose, the second adds a crucial usage constraint. No wasted words; 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?
Given the 7 parameters and no output schema, the description is partly complete. It covers the essential placement rule but omits important context: creating with 'server' attaches the volume, cost implications, and that the volume is initially unattached if only location is given. Schema coverage helps but the description could better round out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters are fully described in the schema (100% coverage), so the baseline is 3. The description does not add any parameter-specific details beyond what's already in the schema, such as format enum or labels structure. It mentions the 'location' vs 'server' choice but not the semantics of each 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 clearly states 'Create a new volume', specifying the verb (create) and resource (volume). It adds a key placement constraint ('Either location or server must be provided'), which distinguishes this from sibling tools like attach, list, delete, or update operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a constraint on parameter usage ('Either location or server must be provided'), but lacks explicit guidance on when to use this tool versus alternatives (e.g., attaching an existing volume, or using a different creation tool). Usage is implied but not differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_zoneCreate DNS ZoneA
Create a new DNS zone in primary or secondary mode. Optionally provide TTL, primary nameservers (for secondary), initial RRSets, or a zonefile.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Default TTL in seconds for records in this zone | |
| mode | Yes | Zone mode: "primary" (managed here) or "secondary" (transferred from external primary) | |
| name | Yes | Fully qualified domain name of the zone, e.g. "example.com" | |
| labels | No | Labels as key-value pairs | |
| rrsets | No | Initial RRSets to create with the zone | |
| zonefile | No | Initial zone content in RFC 1035 zonefile format (alternative to rrsets) | |
| primary_nameservers | No | Primary nameservers (required for secondary zones) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description accurately states the action without contradicting annotations. Annotations indicate readOnlyHint=false, so creating is expected, but no further behavioral details like idempotency or side effects are provided. With minimal annotations, the description could offer more but is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with only necessary words. Very concise and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 7 parameters, nested objects, and no output schema, the description is very brief. It does not explain the mutual exclusivity of rrsets and zonefile, the response structure, or any post-creation behavior. This is insufficient for such a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds a note about primary nameservers being required for secondary zones, which is not in the schema, but overall adds little new 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?
Description clearly states the verb 'Create', the resource 'DNS zone', and the modes 'primary or secondary'. It distinguishes from siblings like 'hetzner_create_zone_rrset' and 'hetzner_import_zonefile' by specifying the scope and optional parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions optional parameters and the conditional requirement for primary nameservers for secondary zones, but does not explicitly compare to alternatives like import_zonefile or when to use each mode. Still, it provides clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_create_zone_rrsetCreate DNS Zone RRSetC
Create a new RRSet (record set) inside a DNS zone.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds for records in this RRSet | |
| name | Yes | RRSet name (e.g. "@", "www", "_acme-challenge") | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| labels | No | Labels as key-value pairs | |
| records | No | Records belonging to this RRSet | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate it is not read-only, not destructive, not idempotent, and open-world. The description adds no additional behavioral context such as authentication needs, error conditions, or idempotency details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose. It is efficient, but could benefit from slightly more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complexity of creating an RRSet (zone requirement, record formatting, TTL implications), the description is too minimal. It lacks context on prerequisites, record structure, and response behavior (no output schema).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents parameters well. The description does not add further meaning beyond the schema, so 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 clearly states it creates a new RRSet inside a DNS zone. However, it does not explicitly differentiate from siblings like hetzner_add_zone_rrset_records or hetzner_set_zone_rrset_records, which modify existing 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?
No guidance is provided on when to use this tool vs alternatives. It does not mention prerequisites (zone must exist), potential conflicts (duplicate name/type), or related tools for listing zones or adding records.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_certificateDelete CertificateADestructiveIdempotent
Delete a certificate. It must not be in use by any load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive nature, but the description adds the constraint that the certificate must not be in use, which is beyond annotation coverage. No 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 concise sentences, front-loaded, no filler. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers purpose and a key constraint. Could briefly mention error behavior if certificate is in use, but it's 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?
The description does not add meaning beyond the schema's description for the id parameter, which already covers it fully. Baseline 3 applies due to 100% 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?
Clearly states the verb 'Delete' and resource 'certificate'. The constraint about not being in use by load balancers adds specificity and distinguishes it from other delete tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite (certificate must not be in use by load balancer) but does not explicitly state when to use vs alternatives like update or get, nor 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.
hetzner_delete_firewallDelete FirewallADestructiveIdempotent
Delete a firewall. It must be removed from all resources first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds the key precondition that the firewall must be detached before deletion, which is valuable beyond the destructiveHint annotation. No other side effects mentioned, but the prerequisite is critical.
Agents need to know what a tool does to the 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 wasted words. Immediately states action then precondition – efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with one parameter, the description covers the crucial prerequisite. Lacks details like error behavior if still attached, but adequate given annotations and schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (id described as 'Resource ID'). The description adds no further parameter guidance, so 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?
Clearly states 'Delete a firewall' – specific verb and resource. Distinguishes from siblings like hetzner_remove_firewall by the action (delete vs remove).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a prerequisite: firewall must be removed from all resources first. However, does not explicitly compare to hetzner_remove_firewall or indicate when to use delete versus remove.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_floating_ipDelete Floating IPADestructiveIdempotent
Delete a floating IP permanently. Since 2026-05-01 the floating IP must be unassigned first; otherwise the API returns the must_be_unassigned error code.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true. The description adds a key behavioral constraint: the API requires the IP to be unassigned since 2026-05-01. This goes beyond annotations by providing a temporal rule and error condition, helping the agent avoid failures.
Agents need to know what a tool does to the 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 with no wasted words. The first sentence states the action, the second adds a critical constraint. Every word contributes to the tool's 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?
For a simple destructive operation with one parameter, the description covers the essential purpose and a vital precondition. No output schema is needed for a delete operation. The description is complete enough for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a single parameter 'id' described as 'Floating IP ID'. The description does not add any additional semantic detail about the parameter itself. Baseline score of 3 is appropriate since schema covers it fully.
Input schemas describe structure but not intent. Descriptions should explain 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 'Delete a floating IP permanently,' which is a specific verb-resource combination. It distinguishes itself from sibling tools like hetzner_delete_firewall or hetzner_delete_certificate by focusing on floating IPs. The added detail about the unassignment requirement further clarifies 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?
The description explicitly states that the floating IP must be unassigned first, providing a crucial precondition. It also mentions the error code (must_be_unassigned) for feedback. While it does not name the alternative tool (hetzner_unassign_floating_ip), the guidance is clear enough for an agent to infer the correct sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_imageDelete ImageADestructiveIdempotent
Permanently delete a snapshot or backup image.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds context by specifying 'permanently delete' and restricting to snapshots/backups, clarifying the irreversibility and scope. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no extraneous words. It efficiently conveys the core action and resource, achieving high front-loading and minimalism.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description adequately covers the delete action and irreversibility. However, it does not mention prerequisites like removing protection (via 'change_image_protection') or that the image must not be in use, which would enhance completeness 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 for the single parameter 'id' is 100% with description 'Image ID'. The tool description adds no further semantic information about the parameter, so a 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 'Permanently delete a snapshot or backup image' uses a specific verb ('delete') and resource ('snapshot or backup image'), clearly distinguishing it from sibling tools like 'update_image' or 'change_image_protection'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 lacks explicit guidance on when to use this tool vs alternatives. It does not mention conditions (e.g., image must not be protected) nor direct users to other tools like 'change_image_protection' if deletion is blocked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_lb_serviceDelete Load Balancer ServiceADestructiveIdempotent
Remove a service from a load balancer by its listen port.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| listen_port | Yes | Listen port of the service to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint=true and idempotentHint=true. The description adds no new behavioral context (e.g., prerequisites, error handling, state changes). Bare minimum, does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (12 words), single sentence with verb front-loaded. No 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?
With no output schema, the description does not mention return values or side effects. For a simple delete operation, this may be adequate but lacks context on success/failure behavior. Siblings similarly brief; still room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for both id and listen_port. The description reiterates the listen port as identifier but adds little beyond what the schema provides. Meets baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Remove' and resource 'service from a load balancer', with identification by listen port. Clearly distinguishes from deleting the entire load balancer (sibling hetzner_delete_load_balancer) and updating a service (hetzner_update_lb_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?
Implies usage when needing to remove a service, but no explicit mention of when not to use it or alternatives like hetzner_update_lb_service or hetzner_delete_load_balancer. The context is clear but guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_load_balancerDelete Load BalancerBDestructiveIdempotent
Permanently delete a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'permanently' to confirm irreversibility, but the annotations already set destructiveHint=true and idempotentHint=true. The description does not disclose additional behaviors like side effects on associated resources (e.g., services, targets).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the essential action without extra words. It is front-loaded and 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 delete tool with one parameter and annotations present, the description is minimally adequate. However, it lacks mention of behavior if the resource does not exist (despite idempotentHint) or any prerequisites (e.g., whether the load balancer must be detached).
Complex tools with many parameters or behaviors need more documentation. 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 one parameter 'id' with description 'Resource ID' (100% coverage). The tool description does not elaborate beyond this, so it adds marginal value. Baseline 3 is appropriate given high 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?
The description clearly states the action 'delete' and the resource 'load balancer', using the adverb 'permanently' for emphasis. It distinguishes well from sibling delete tools that target different resources (e.g., servers, networks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage guidance is provided. There is no indication of when to use this tool versus alternatives like hetzner_delete_lb_service or hetzner_detach_lb_from_network, nor any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_networkDelete NetworkADestructiveIdempotent
Delete a network. All subnets and routes within it will also be deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include destructiveHint=true and idempotentHint=true. The description adds important behavioral context that subnets and routes are deleted along with the network, which goes beyond the annotations. No 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?
The description is concise with two sentences, front-loading the main action and then adding the cascading deletion detail. No superfluous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool, the description covers the key effect (cascading deletion). No output schema is needed, but it could mention return value or async nature. Still adequate given tool simplicity.
Complex tools with many parameters or behaviors need more documentation. 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 one parameter 'id' with schema description 'Resource ID'. The description does not add additional meaning beyond the schema. Schema coverage is 100%, so 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 clearly states 'Delete a network' and specifies the cascading effect on subnets and routes. This distinguishes it from related tools like hetzner_delete_subnet or hetzner_delete_route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 indicates the tool is for deleting a network with its subnets/routes, but does not provide when-not-to-use guidance or contrast with alternatives like individual subnet/route deletion. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_placement_groupDelete Placement GroupADestructiveIdempotent
Delete a placement group. All servers must be removed from it first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Placement group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds the crucial precondition about server removal, which is not captured 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 sentences: first states the action, second states the prerequisite. No redundant words, front-loaded, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple delete tool with one parameter. Precondition is covered. No output schema is needed for a delete 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%, so the parameter 'id' is fully documented in the schema. The description adds no additional meaning beyond the schema's field description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Delete a placement group' and adds a necessary precondition, distinguishing it from sibling tools like 'hetzner_update_placement_group' or 'hetzner_get_placement_group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance on when to use: only after all servers are removed. Does not name alternatives but the prerequisite is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_primary_ipDelete Primary IPADestructiveIdempotent
Delete a primary IP permanently. Since 2026-05-01 the primary IP must be unassigned first; otherwise the API returns the must_be_unassigned error code.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations by specifying the date-dependent requirement and the 'must_be_unassigned' error code. It confirms destructive behavior, aligning with annotations without contradiction.
Agents need to know what a tool does to the 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 concise: two sentences deliver the action and a critical behavioral condition with no extraneous content. Every word is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 delete tool, the description covers the essential behavior (permanence, precondition). Absence of output schema is acceptable as the action is final; the description sufficiently informs 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?
The sole parameter 'id' is fully documented in the schema (100% coverage). The description adds no extra meaning beyond what the schema already provides, which is adequate for a simple numeric 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 description clearly states the action ('Delete') and the resource ('primary IP'), with emphasis on permanence. It is distinct from sibling tools that update, assign, or list primary IPs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a specific prerequisite: 'must be unassigned first' since a certain date, and notes the resulting error code if violated. This guides correct usage, though it lacks explicit alternatives or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_routeDelete Route from NetworkBDestructiveIdempotent
Remove a route from an existing network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| gateway | Yes | Gateway of the route to delete | |
| destination | Yes | Destination network of the route to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive (destructiveHint=true) and idempotent (idempotentHint=true) behavior. The description adds only the phrase 'from an existing network', which does not significantly expand behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that is front-loaded with the verb and resource. No wasted words, but could be slightly more 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?
The description is minimally adequate for a straightforward delete operation. It assumes the user knows what a route is and does not mention return values (no output schema), error scenarios, or the need for an existing network.
Complex tools with many parameters or behaviors need more documentation. Simple 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 each parameter (id, destination, gateway) having a description in the input schema. The description adds no additional parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Remove a route from an existing network' clearly states the action (remove) and the resource (route within a network), distinguishing it from siblings like add_route or delete_subnet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., add_route for adding, delete_network for the whole network). No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_serverDelete ServerADestructiveIdempotent
Permanently delete a server. This destroys the server and all associated data.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds context by specifying 'all associated data' is destroyed, providing additional transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the key action. Every word serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description covers the action and consequences. However, it could mention that the server must exist or what happens on 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?
Schema coverage is 100% with the parameter 'id' already described as 'Server ID'. The description does not add any new meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool permanently deletes a server and destroys all associated data, using specific verbs and resources, distinguishing it from other sibling tools like delete volume or delete 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?
No explicit guidance on when to use this tool versus alternatives such as rebuild server or power off. The description does not mention prerequisites or 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.
hetzner_delete_ssh_keyDelete SSH KeyADestructiveIdempotent
Delete an SSH key from the project permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SSH key ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent hints. The description adds 'permanently', emphasizing irreversibility, but does not disclose potential side effects (openWorldHint=true) or behavior on already-deleted keys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero waste. Every word (Delete, SSH key, project, permanently) adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive action with one parameter and no output schema, the description covers the essential purpose and scope. However, with an openWorldHint, brief mention of side effects would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter 'id' is described as 'SSH key ID'. The description adds no additional detail beyond schema context, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'Delete', the resource 'an SSH key', and the scope 'from the project permanently'. It distinguishes this tool from create, update, and read siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. Alternatives like updating or listing keys are not mentioned, leaving the agent to infer context from sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_storage_boxDelete Storage BoxADestructiveIdempotent
Delete a Storage Box and all of its data permanently. The Storage Box must not be delete-protected.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds value by specifying that the deletion is permanent and requires the Storage Box to not be delete-protected, providing context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every sentence adds value (action, permanence, prerequisite). No redundant or missing 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 tool with one parameter, no output schema, and comprehensive annotations, the description provides all necessary context: what the tool does, that it's destructive and idempotent, and a critical precondition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with a description for 'id' as 'Storage Box ID'. The tool description does not add additional meaning or explanation for the parameter, so 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 clearly states the verb 'Delete' and specific resource 'Storage Box', and distinguishes from sibling deletion tools by specifying the resource. It also mentions permanent deletion and a prerequisite condition.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 condition ('must not be delete-protected') for using the tool, but does not explicitly mention when to use it over alternatives or provide exclusions. It implicitly differentiates from other deletion tools by resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_storage_box_snapshotDelete Storage Box SnapshotBDestructiveIdempotent
Delete a Storage Box snapshot permanently.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| snapshot_id | Yes | Snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'permanently' beyond annotations, reinforcing the destructive and irreversible nature already indicated by destructiveHint=true. However, it does not disclose additional behaviors (e.g., effect on Storage Box, error states, or idempotent retry 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?
Very concise single-sentence description with no wasted words. Could benefit from a tiny bit more context but remains 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 simple destructive tool with only two parameters and no output schema, the description covers the essential purpose. However, it lacks mention of response behavior or side effects, relying on annotations for safety 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 100% with clear descriptions for both parameters ('Storage Box ID' and 'Snapshot ID'). The description adds no further semantic meaning beyond what the input schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a Storage Box snapshot permanently' uses a specific verb (Delete) and resource (Storage Box snapshot), clearly distinguishing it from related sibling tools like create, rollback, update, and enable/disable snapshot plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as rollback (which restores from a snapshot) or update (which modifies snapshot settings). No prerequisites or context about irreversible nature beyond the word 'permanently'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_storage_box_subaccountDelete Storage Box SubaccountADestructiveIdempotent
Delete a Storage Box subaccount permanently. Its home directory contents are not removed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| subaccount_id | Yes | Subaccount ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide destructiveHint, idempotentHint, and openWorldHint. The description adds value by specifying that the deletion does not remove home directory contents, which is important behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and add a critical behavioral note. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool, the description covers the key effect (deletion, no removal of contents). It lacks details on reversibility or prerequisites, but annotations already provide idempotency and destructiveness hints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for both parameters ('Storage Box ID' and 'Subaccount ID'). The description does not add additional meaning or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Delete) and the resource (Storage Box subaccount), and distinguishes it from related tools like 'hetzner_delete_storage_box' by noting that home directory contents are not removed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for deleting a subaccount but does not explicitly state when to use it versus alternatives (e.g., deleting the entire storage box). No guidance on prerequisites or post-conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_subnetDelete Subnet from NetworkBDestructiveIdempotent
Remove a subnet from an existing network by its IP range.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| ip_range | Yes | IP range of the subnet to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds 'Remove a subnet', which is consistent but provides no extra behavioral details (e.g., what happens if the subnet is missing, or if it's idempotent). Minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that conveys the core functionality without any extraneous words. Highly 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 simple delete operation, the description covers the basic purpose and parameters. However, it lacks usage guidelines and behavioral details (e.g., idempotency, effect of deletion). With annotations covering safety, it's adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both 'id' and 'ip_range'. The description mentions 'by its IP range', adding slight context but not significantly beyond what the schema provides. 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 clearly states the action 'Remove a subnet' and the resource 'from an existing network', uniquely identifying it by IP range. This distinguishes it from siblings like 'delete_network' (deletes entire network) and 'add_subnet' (adds).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., deleting the whole network or removing via other means). The description does not specify prerequisites (e.g., network must exist) or 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.
hetzner_delete_volumeDelete VolumeADestructiveIdempotent
Delete a volume permanently. The volume must be detached from any server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds 'permanently' and detachment requirement beyond annotations. Annotations already indicate destructive and idempotent behavior; description reinforces and adds context without contradiction.
Agents need to know what a tool does to the 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 concise sentences with no redundancy. Front-loaded with core action and immediately adds critical 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?
Sufficient for a simple delete tool with one parameter, no output schema, and annotations present. Covers action and precondition; could mention what happens if volume is attached (though implied).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter (id) with description. Description adds no additional meaning beyond schema, meeting the baseline for 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?
Clearly states 'Delete a volume permanently', identifying the specific verb and resource. Differentiates from sibling tools like create, attach, detach, and update 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?
Provides a clear precondition: 'volume must be detached from any server'. Implicitly guides when to use (when volume is detached) and hints at alternative (detach first if attached), though not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_zoneDelete DNS ZoneADestructiveIdempotent
Delete a DNS zone and all of its RRSets permanently. The zone must not be delete-protected.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent behavior. The description adds value by specifying the permanent deletion and cascading effect on all RRSets, as well as the delete-protection constraint.
Agents need to know what a tool does to the 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 concise sentences with essential information, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 delete tool with one parameter and no output schema, the description covers the action, effect, and a key constraint, making it complete enough for an AI 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 100% and the parameter is described in the schema as 'Zone ID or name'. The description adds no additional 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 clearly states the action 'Delete a DNS zone' and specifies the permanent deletion of all RRSets, distinguishing it from sibling tools like hetzner_delete_zone_rrset and hetzner_change_zone_protection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a precondition (zone must not be delete-protected) but does not explicitly guide when to use this tool over alternatives or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_delete_zone_rrsetDelete DNS Zone RRSetADestructiveIdempotent
Delete an RRSet from a DNS zone permanently. The RRSet must not be change-protected.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the operation as destructive and non-read-only, so the description adds useful context by stating the deletion is permanent and by flagging the change-protection precondition. This goes beyond what annotations alone 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 description is two short sentences with the primary action front-loaded and the critical precondition immediately after. Every word earns its place and there is no redundant restating of 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 simple destructive operation with full parameter documentation and safety annotations, the description provides the essential behavioral context: permanence and the change-protection requirement. It could mention related record-level operations, but nothing critical is missing for invoking this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes all three parameters, including the type enum and the id_or_name flexibility. The description does not add additional parameter-level meaning, 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 names the exact operation — deleting an RRSet from a DNS zone — and adds the important qualifier 'permanently.' This distinguishes it clearly from sibling tools like delete_zone, update_zone_rrset, and remove_zone_rrset_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?
The description implies this tool is for removing an entire RRSet and gives one explicit exclusion: it must not be change-protected. However, it does not point to alternatives such as remove_zone_rrset_records for partial record removal, nor does it explain how to handle a protected RRSet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_detach_isoDetach ISO from ServerADestructiveIdempotent
Detach an ISO image from a server. The server must be rebooted for the change to take effect.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | Server ID to detach the ISO from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and idempotent behavior. Description adds the important behavioral detail that a server reboot is required for the change to take effect, which is beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Front-loaded with the action, then key side effect. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the tool is simple. However, the description does not specify whether the server needs to be powered off before detaching, which could be relevant for user expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the single parameter 'server_id' with a clear description. The tool description does not add extra information about the parameter, so 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?
Clear verb 'Detach' and resource 'ISO from a server'. Distinguishes from sibling 'hetzner_attach_iso' by describing the inverse operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states a required post-action (reboot) but does not provide explicit guidance on when to use this tool versus alternatives, such as other detach tools or 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.
hetzner_detach_lb_from_networkDetach Load Balancer from NetworkBDestructiveIdempotent
Detach a load balancer from a network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| network | Yes | Network ID to detach from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide destructiveHint, idempotentHint, and readOnlyHint. The description adds no behavioral details beyond those, such as side effects, permissions, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence, front-loaded with the key action and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple detach operation requiring two IDs, the description is adequate but brief. Annotations cover safety aspects, but the description doesn't mention idempotency or reassuring callers of safe re-attempts.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear parameter descriptions. The tool description does not add additional meaning, so 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 the action 'Detach' and the specific resource 'load balancer from a network', distinguishing it from sibling tools like hetzner_attach_lb_to_network and other detach operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The description merely restates the tool name without usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_detach_server_from_networkDetach Server from NetworkADestructiveIdempotent
Detach a server from a private network, removing its private connectivity on that network.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| network | Yes | ID of the network to detach the server from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds 'removing its private connectivity', which aligns but does not elaborate on side effects (e.g., public network reachability). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, clearly front-loaded with action and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 params, no output schema), the description sufficiently covers the purpose and effect. Could mention potential IP changes, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple 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% (both parameters have descriptions). Description does not add any additional meaning beyond the schema's description of IDs. 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 clearly states the action (detach), the resource (server from network), and the effect (removing private connectivity). It distinguishes from sibling tools like 'hetzner_attach_server_to_network'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The purpose itself implies usage (when needing to remove a server from a network), but no exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_detach_volumeDetach VolumeBDestructiveIdempotent
Detach a volume from the server it is attached to.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds no extra behavioral context beyond stating the action, such as potential side effects or system impacts.
Agents need to know what a tool does to the 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 one concise sentence without any redundant or verbose elements. It is efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple operation with one parameter and no output schema, the description is largely adequate. However, it could mention that the volume becomes free for reattachment, which adds minimal but useful context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'id' is fully described in the schema ('Volume ID'). The tool description adds no additional meaning, so baseline score of 3 is appropriate given 100% 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?
The description clearly states the action 'Detach a volume from the server it is attached to', specifying a specific verb and resource. It distinguishes from sibling tools like 'hetzner_attach_volume' and other detach operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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, prerequisites (e.g., volume must be attached), or when not to use it. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_disable_backupDisable Server BackupADestructiveIdempotent
Disable automatic backups for a server and remove all existing backup snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveness; description clarifies exactly what is destroyed (backup snapshots). Adequate transparency for a simple 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?
Extremely concise single sentence. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple; description covers the action and effect. Could mention idempotency or prerequisites but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already fully describes the single parameter. Description adds no semantic enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states action (disable) and dual effect (stops backups, removes snapshots). Unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage guidance provided. Agent must infer from name and description alone. No comparison to alternatives like enable_backup or other disable tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_disable_lb_public_interfaceDisable Load Balancer Public InterfaceADestructiveIdempotent
Disable the public network interface of a load balancer, removing its public connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Load Balancer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is destructive and idempotent. The description adds the effect 'removing its public connectivity', which is helpful. Could be more transparent about consequences (e.g., load balancer becomes internal-only, impact on services), but overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, clearly states action and effect. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, annotations present), the description is complete. It adequately conveys the operation without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 'Load Balancer ID' clearly specified. The description does not add additional semantics beyond the schema, so 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 uses a specific verb ('Disable') and resource ('public network interface of a load balancer'), clearly distinguishing the action from its sibling 'hetzner_enable_lb_public_interface' and other load balancer 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 description implies use when you want to remove public connectivity, but lacks explicit when-to-use or when-not-to-use guidance or alternatives. For a straightforward tool this is adequate, but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_disable_rescueDisable Rescue ModeAIdempotent
Disable rescue mode on a server. The next reboot will boot normally.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-destructive, read-write, idempotent behavior. The description adds that the next reboot boots normally, but does not disclose error cases or required preconditions.
Agents need to know what a tool does to the 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 with zero wasted words, directly stating the action and effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with good annotations, the description is complete enough to convey the action and outcome, though missing return value info.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the parameter description 'Server ID'. The tool description adds no extra 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 clearly states the verb 'disable' and the resource 'rescue mode on a server', and distinguishes from the sibling `hetzner_enable_rescue` by specifying that the next reboot will boot normally.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidance is given; it is implied that the tool is used when rescue mode should be disabled, but no when-to-use or when-not-to-use instructions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_disable_storage_box_snapshot_planDisable Storage Box Snapshot PlanAIdempotent
Disable the automatic snapshot plan for a Storage Box. Existing snapshots are kept.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotent and non-destructive. The description adds 'Existing snapshots are kept,' clarifying behavior beyond annotations, though no side effects are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The description is front-loaded with the action and adds a key clarification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 disable action, but lacks mention of prerequisites (e.g., plan must be enabled) or return behavior. Without output schema, some guidance on response could help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter 'id' is described as 'Storage Box ID.' The description does not add extra context, but 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 clearly states the action: 'Disable the automatic snapshot plan for a Storage Box.' It adds a clarifying note that existing snapshots are kept, distinguishing it from deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to disable the plan) but does not explicitly state when not to use or suggest alternatives like enable_storage_box_snapshot_plan or delete_storage_box_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_enable_backupEnable Server BackupAIdempotent
Enable automatic daily backups for a server. Backups increase the server price by 20 percent. The backup window is chosen automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the tool is not read-only or destructive, and is idempotent. The description adds valuable behavioral details: backups increase price by 20% and the backup window is chosen automatically. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, relevant sentences deliver core action, cost implication, and scheduling info. No extraneous 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?
Given the simple one-parameter action and annotations (idempotentHint), the description adequately covers the purpose, cost, and automatic behavior. It does not describe the response, but no output schema exists, and the action is straightforward.
Complex tools with many parameters or behaviors need more documentation. 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 already fully describes the single parameter 'id' with 'Server ID'. The description does not add any additional meaning beyond what the schema provides, so 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 clearly states the action ('Enable automatic daily backups') and the resource ('for a server'), distinguishing it from the sibling tool 'hetzner_disable_backup'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context (daily backups, price increase, automatic window) but does not explicitly specify when to use this tool versus alternatives or 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.
hetzner_enable_lb_public_interfaceEnable Load Balancer Public InterfaceAIdempotent
Enable the public network interface of a load balancer so it can be reached over public IPs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Load Balancer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds little beyond the annotations. Annotations already indicate it's a non-destructive, idempotent mutation. The description only states the effect (enable public interface) without additional behavioral context such as prerequisites, side effects, 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 a single, efficient sentence that is front-loaded with the key action and resource. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple enable action with one parameter, clear annotations, and no output schema, the description is sufficient to guide a reasonable agent. It explains the purpose and the result, though it could optionally mention that this affects public IP reachability only.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the single parameter 'id' described as 'Load Balancer ID'. The description mentions 'load balancer' which reinforces the parameter's context, but does not add new 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 clearly states the action 'Enable', the resource 'public network interface of a load balancer', and the purpose 'so it can be reached over public IPs'. It distinguishes itself from the sibling tool 'hetzner_disable_lb_public_interface' which does the opposite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when needing a load balancer to be publicly accessible, but does not explicitly state when to use this tool versus alternatives or provide any exclusion criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_enable_rescueEnable Rescue ModeA
Enable rescue mode on a server. The server must be rebooted to enter rescue mode.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| type | No | Rescue system type | |
| ssh_keys | No | SSH key IDs to inject into rescue system |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide minimal behavioral info (readOnlyHint false, etc.). The description adds an important behavioral trait: the server must be rebooted to enter rescue mode. This is critical for the agent to understand post-invocation steps.
Agents need to know what a tool does to the 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 fluff. Front-loads the main action and adds a crucial follow-up step efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and the tool is a mutation, the description covers the essential action and a key consequence (reboot required). However, it could mention that rescue mode provides root access for recovery, but not a major 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?
Input schema has 100% description coverage for all parameters (id, type, ssh_keys). The description does not add extra meaning beyond the schema, so 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 clearly states the action ('Enable rescue mode') and the resource ('on a server'), using a specific verb+resource combination. It distinguishes from siblings like hetzner_disable_rescue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., hetzner_rebuild_server or hetzner_reset). No prerequisites or limitations mentioned beyond the reboot requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_enable_storage_box_snapshot_planEnable Storage Box Snapshot PlanAIdempotent
Enable or update the automatic snapshot plan for a Storage Box (schedule and retention).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| hour | Yes | Hour of the day to run the snapshot (0-23, UTC) | |
| minute | Yes | Minute of the hour to run the snapshot (0-59) | |
| day_of_week | No | Day of week to run weekly (1=Monday .. 7=Sunday), or null | |
| day_of_month | No | Day of month to run monthly (1-31), or null | |
| max_snapshots | Yes | Maximum number of automatic snapshots to retain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and readOnlyHint=false, so the description adds 'or update' which aligns with idempotency. However, it does not disclose additional behavioral traits beyond what annotations provide, such as whether existing snapshots are affected or if the plan triggers 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?
The description is a single sentence of 14 words, front-loaded with the verb, and contains no unnecessary words or information. It is highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool has 6 parameters and no output schema, the description is adequate but lacks elaboration. It could explain that the plan configures recurring automatic snapshots, and differentiate between enabling a new plan vs updating an existing one. However, it covers the essentials.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameters have descriptions. The description adds value by summarizing the parameters' collective purpose ('schedule and retention'), which helps the agent understand the intent behind the individual 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 clearly states the action ('Enable or update') and the resource ('automatic snapshot plan for a Storage Box'), including the scope (schedule and retention). It distinguishes this tool from siblings like 'disable_storage_box_snapshot_plan' and 'create_storage_box_snapshot'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used to enable or update the snapshot plan, but it does not provide explicit guidance on when to use this tool versus disabling the plan or creating individual snapshots. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_export_zonefileExport DNS ZonefileARead-onlyIdempotent
Export the current contents of a DNS zone as an RFC 1035 zonefile string.
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds little extra beyond 'export the current contents', which is consistent but not additive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 16 words, front-loaded with purpose. No verbose or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description adequately explains the input, action, and output format. Could hint at the string nature of the return value, but overall 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?
Schema covers 100% of the single parameter with description 'Zone ID or name'. The tool description does not add further meaning, 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?
Description clearly states verb 'Export', resource 'DNS zone', and format 'RFC 1035 zonefile string'. Among siblings, it contrasts with 'hetzner_import_zonefile', making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'hetzner_get_zone'. The description implies use for exporting raw zone data but does not provide context-dependent advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_certificateGet CertificateARead-onlyIdempotent
Get details of a specific certificate by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, indicating a safe read operation. The description adds no behavioral context beyond 'Get details', so it provides no added value over 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?
Single sentence, front-loaded, no unnecessary words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 good annotations, the description covers core purpose. However, no mention of return format or edge cases. Adequate for its simplicity.
Complex tools with many parameters or behaviors need more documentation. 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 'id' with schema description 'Resource ID' (100% coverage). The description does not add extra meaning beyond the schema, meeting baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get details of a specific certificate by its ID', specifying verb, resource, and retrieval method. It distinguishes from siblings like 'hetzner_list_certificates' (list all) and 'hetzner_create_certificate' (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives, such as 'hetzner_list_certificates'. The description implies retrieval of a single item, but lacks when-not-to-use or prerequisite info. Adequate but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_datacenterGet DatacenterARead-onlyIdempotent
Deprecated by Hetzner; /datacenters is removed after 2026-10-01 (HTTP 410). Use hetzner_list_server_types (locations[].available/recommended) and hetzner_list_locations instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Datacenter ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by noting deprecation and future HTTP 410 status. Annotations already indicate read-only and idempotent, so the description complements them well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that conveys deprecation, deadline, and alternatives. No wasted words, front-loaded with critical 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 deprecated tool with clear alternatives and full annotations, the description is adequate. It covers deprecation behavior and migration path, though it does not specify current return value, which is less critical given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id', and the description does not provide additional context or meaning beyond the schema's 'Datacenter ID'. 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 clearly states the tool is deprecated and will be removed, but does not explicitly state that it retrieves a datacenter by ID. The title and parameter imply the purpose, but the description focuses on deprecation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 advises against use due to deprecation and provides two alternative tools with specific references: hetzner_list_server_types and hetzner_list_locations. This is a model for when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_firewallGet FirewallBRead-onlyIdempotent
Get details of a specific firewall by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. Description merely repeats the action 'get details' without adding any behavioral context such as authentication needs, rate limits, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words. Could be slightly more informative but is acceptably 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?
With one required parameter, no output schema, and annotations covering safety, the description is functional but minimal. It does not mention what fields the response includes, though the tool is simple enough that this may be inferred.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the single parameter 'id' described as 'Resource ID'. The description does not add any additional meaning beyond the schema, so 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?
Clearly states verb 'Get', resource 'details of a specific firewall', and identifier 'by its ID'. Distinguishes from siblings like `hetzner_list_firewalls` which lists all firewalls.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description does not explicitly advise when to use this tool versus alternatives like `hetzner_list_firewalls`. The context of a single resource retrieval is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_floating_ipGet Floating IPARead-onlyIdempotent
Get details of a specific floating IP by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'Get details' which aligns with these hints but does not provide additional behavioral context such as authentication requirements, rate limits, or response structure. With annotations covering safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 9 words, front-loaded with the verb 'Get'. Every word is necessary and no redundancy. It is maximally concise for the information provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one required parameter, no output schema, comprehensive annotations, and distinct sibling tools, the description is complete for a simple read operation. It tells the agent exactly what it does and how, with no missing 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?
The input schema has 100% coverage with description 'Floating IP ID'. The tool description adds 'by ID', reinforcing that the parameter is an identifier. This adds minimal meaning beyond the schema, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details of a specific floating IP by ID' uses specific verb 'get' and resource 'floating IP', clearly distinguishing from sibling tools like 'hetzner_list_floating_ips' (list all) and 'hetzner_create_floating_ip' (create). It explicitly identifies how the resource is identified (by 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?
The description states the tool retrieves details for a specific floating IP by ID, implying the need for a known ID. It provides clear context for when to use this tool (reading details of a single IP) versus listing or modifying. No explicit 'when not to use' is stated, but the purpose is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_imageGet ImageBRead-onlyIdempotent
Get details of a specific image by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, etc. Description adds no additional behavioral context like rate limits or return details.
Agents need to know what a tool does to the 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 concise single sentence, but could be improved by adding minimal context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimally complete for a simple read-by-ID tool without output schema; would benefit from stating what details are returned.
Complex tools with many parameters or behaviors need more documentation. Simple 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 description adds no extra meaning beyond the schema's 'Image ID' for the id 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 clearly states the verb 'Get', the resource 'image', and the qualifier 'by ID', distinguishing it from list tools like hetzner_list_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives such as list_images; only implied context from 'by ID'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_isoGet ISOARead-onlyIdempotent
Get details of a specific ISO image by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ISO ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is clear. The description adds no behavioral traits beyond stating the action, but does not contradict annotations. With annotations present, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words with no redundancy. Every word earns its place, and the structure front-loads the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get operation with annotations, the description is nearly complete. It specifies the action and key parameter. While it does not explicitly mention that the full ISO object is returned, that is implied by 'details', and the openWorldHint covers output variability. A small gap but not critical.
Complex tools with many parameters or behaviors need more documentation. 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% coverage with its 'id' parameter described as 'ISO ID'. The description reinforces 'by ID' but adds no new semantics beyond the schema. According to guidelines, high coverage yields a baseline of 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?
The description clearly states the verb 'Get details' and the resource 'specific ISO image', distinguishing it from sibling tools like 'hetzner_list_isos' (listing) and other 'get_*' tools for different resources. The qualifier 'by ID' makes the target unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives such as 'hetzner_list_isos'. The requirement of an ID is implied but not elaborated, and there are no usage or exclusion statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_lb_metricsGet Load Balancer MetricsBRead-onlyIdempotent
Get metrics for a load balancer over a specified time range.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| end | Yes | End of the time range in ISO 8601 format | |
| type | Yes | Metric type, e.g. "open_connections", "connections_per_second", "requests_per_second", "bandwidth.in", "bandwidth.out" | |
| start | Yes | Start of the time range in ISO 8601 format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety and idempotence. Description adds no additional behavioral context (e.g., metric aggregation, potential delays). With annotations present, the description adds minimal value beyond 'over a time range'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise and front-loaded. However, it is slightly under-specified; could include a brief note about return format without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite rich annotations and full schema, the description lacks information about what the tool returns (e.g., list of data points, units). No output schema, so the description should compensate by explaining the 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% with clear parameter descriptions (id, type with examples, start/end in ISO 8601). Description does not add extra meaning beyond the schema, so 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?
Description clearly states the tool gets metrics for a load balancer over a time range. Verb and resource are specific. However, it does not explicitly distinguish from similar metrics tools like hetzner_get_server_metrics, though the resource difference is 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?
No guidance on when to use this tool vs alternatives, no prerequisites mentioned (e.g., load balancer must exist), and no context about when metrics are available. Lacks explicit when/not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_load_balancerGet Load BalancerARead-onlyIdempotent
Get details of a specific load balancer by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the agent knows this is a safe read. The description adds 'by its ID' which is already in the schema. It does not describe return format or additional behaviors beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one sentence front-loaded with the purpose. No redundant or unnecessary words. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (single parameter, no output schema, strong annotations), the description covers the essential: what it does and how. It could mention expected return (load balancer object) but lacking that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the parameter 'id' described as 'Resource ID'. The description merely says 'by its ID', adding minimal value beyond what the schema already provides. 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 clearly states 'Get details of a specific load balancer by its ID.' The verb 'Get details' and resource 'specific load balancer' are explicit. Among siblings like 'hetzner_list_load_balancers' (list all) and 'hetzner_get_lb_metrics' (metrics only), this distinguishes well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The context of sibling names implies use when needing details of one load balancer by ID, but the description does not explain how it differs from list or other get tools, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_locationGet LocationARead-onlyIdempotent
Get details of a specific location by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Location ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description does not add behavioral context beyond stating it gets details, which is consistent with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the key information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and comprehensive annotations, the description is complete enough. No output schema is needed for understanding usage.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameter described as 'Location ID'. The description adds no additional semantic value 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 clearly specifies the verb (Get), resource (location), and how to identify it (by ID). It distinguishes from sibling tools like hetzner_list_locations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when you have a location ID, but does not explicitly state alternatives or when not to use. However, given the simplicity, it is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_networkGet NetworkARead-onlyIdempotent
Get details of a specific network by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'Get' aligns. But it adds no extra behavioral context such as rate limits or error handling. The description is sufficient but not enhanced beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and resource. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with full parameter documentation and good annotations, the description is nearly complete. It does not specify that it returns network details, but the verb 'Get' implies a response object. Slight gap but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple 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' parameter. The description only repeats 'by its ID,' adding no new semantics 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 clearly states 'Get details of a specific network by its ID.' It uses a specific verb ('Get') and resource ('network'), and the 'by its ID' distinguishes it from listing tools like hetzner_list_networks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when you have a network ID, but does not explicitly exclude alternatives or mention when not to use it. No reference to sibling tools for listing or modification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_placement_groupGet Placement GroupBRead-onlyIdempotent
Get details of a specific placement group by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Placement group ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no extra behavioral context beyond the name, such as what 'details' include or any limitations, adding minimal 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?
The description is a single concise sentence, front-loaded with key information, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with good annotations and full schema coverage, the description is adequate but could be improved by specifying that it returns the full placement group object including associated servers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the 'id' parameter described as 'Placement group ID'. The description does not add additional meaning 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 clearly states the verb 'Get details' and the resource 'specific placement group by ID', effectively distinguishing from siblings like list_placement_groups (returns all) and create/update/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 naming convention and context of siblings, but there is no explicit guidance on when to use this tool vs alternatives like list_placement_groups or 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.
hetzner_get_pricingGet PricingARead-onlyIdempotent
Get current prices for all Hetzner Cloud resources (servers, volumes, traffic, floating IPs, load balancers, and more).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds context by listing specific resource types covered, which is useful beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action, no filler. Efficiently conveys scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no parameters, no output schema, and simple nature, the description adequately covers what the tool returns by listing resource categories. No 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?
No parameters; schema coverage is 100% (trivially). Description adds no parameter info, but baseline for zero params is 4.
Input schemas describe structure but not intent. Descriptions should explain 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 'Get' and identifies the resource 'current prices for all Hetzner Cloud resources', listing example resources. It clearly distinguishes from siblings as no other tool fetches pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternatives guidance. Since it's a simple getter, usage is implied, but the description does not address scenarios or contrast with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_primary_ipGet Primary IPBRead-onlyIdempotent
Get details of a specific primary IP by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description carries less burden. However, it adds no extra behavioral context (e.g., what 'details' include, rate limits, or any side effects).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence. It is concise and front-loaded but could be more informative without losing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 operation with thorough annotations, the description is adequate. It does not explain the return value, but the tool name and input schema imply a straightforward output. The lack of output schema is not a problem here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents the 'id' parameter. The description adds no new meaning beyond 'by ID', which is implicit 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?
The description clearly states the action ('Get details'), the resource ('specific primary IP'), and the method ('by ID'). It distinguishes itself from sibling tools like 'hetzner_list_primary_ips' and other get tools for different 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?
The description provides no guidance on when to use this tool versus alternatives (e.g., when to list vs. get). It does not mention when not to use it or any prerequisites, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_serverGet ServerARead-onlyIdempotent
Get details of a specific server by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so the description's additional value is minimal. It does not contradict annotations, but adds little beyond restating the 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?
Single sentence, front-loaded, no wasted words. Perfectly concise for a simple read operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 1-parameter get tool with good annotations, the description is minimally complete. However, it does not explain what 'details' means or hint at the return structure, which could be helpful without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with 'id' described as 'Server ID'. Description says 'by ID' which reaffirms schema but adds no new insight. 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?
Description clearly states 'Get details of a specific server by ID', using a specific verb and resource. It distinguishes from sibling get_* tools (e.g., get_certificate, get_firewall) by explicitly focusing on 'server'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like hetzner_list_servers or other get_* tools. The description is too terse to provide context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_server_metricsGet Server MetricsARead-onlyIdempotent
Retrieve time series metrics (CPU, disk, network) for a server over a time range.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| end | Yes | End of period, ISO 8601 timestamp (e.g. "2025-01-02T00:00:00Z") | |
| type | Yes | Comma-separated metric types: "cpu", "disk", "network" | |
| start | Yes | Start of period, ISO 8601 timestamp (e.g. "2025-01-01T00:00:00Z") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating a safe, read-only operation. The description adds no further behavioral details such as rate limits, auth requirements, or error handling, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of about 15 words, front-loading the core verb and resource. Every word is necessary and conveys the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description could provide more details about the return format (e.g., data points per metric). However, the parameter descriptions are clear, and annotations cover safety. The description is adequate but not fully complete for an agent to predict the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have detailed descriptions in the input schema (100% coverage), so the description adds minimal extra meaning. The phrase 'time series metrics (CPU, disk, network) over a time range' loosely references the 'type', 'start', and 'end' parameters but does not enhance understanding 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 clearly states the tool retrieves time series metrics (CPU, disk, network) for a server over a time range. It uses a specific verb ('Retrieve') and resource, effectively distinguishing it from sibling tools like hetzner_get_lb_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implicitly indicates usage for obtaining server metrics but lacks explicit guidance on when to use this tool versus alternatives (e.g., hetzner_get_server for static data or hetzner_get_lb_metrics for load balancers). No when-not or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_server_typeGet Server TypeARead-onlyIdempotent
Get details of a specific server type, including specs and pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about return content (specs and pricing) but does not disclose additional behavioral traits beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 10 words, front-loaded with verb and resource. No fluff or repetition. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter and rich annotations. Description covers purpose and return content (specs/pricing). It does not mention how the ID relates to the list tool or provide examples, but is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple 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% (parameter 'id' has description 'Server type ID'). The tool description adds no further meaning beyond that. 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 the tool retrieves details of a specific server type, including specs and pricing. The verb 'Get' and resource 'server type' are explicit. It naturally distinguishes from the sibling 'hetzner_list_server_types' which lists all types, while this fetches 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?
No guidance on when to use this tool versus alternatives like the list tool. The description does not mention prerequisites, use cases, or exclusion criteria. The agent must infer from the tool name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_ssh_keyGet SSH KeyARead-onlyIdempotent
Get details of a specific SSH key by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SSH key ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the tool's safety is clear. The description adds 'details' but no additional behavioral traits like rate limits or permissions. With annotations covering safety, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 one parameter and comprehensive annotations, the description provides adequate context. It could mention the return type or common usage, but it is sufficiently 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?
The input schema has 100% coverage with a description for 'id' as 'SSH key ID'. The description repeats 'by ID' but adds no further meaning. Baseline 3 is justified.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'Get', the resource 'SSH key', and the method 'by ID'. It distinguishes from siblings like 'hetzner_list_ssh_keys' which lists all keys, and 'hetzner_create_ssh_key' which creates a new key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when you need details of a specific SSH key, but does not explicitly mention when not to use it or reference alternatives. However, the sibling names make the distinction clear, so it is still effective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_storage_boxGet Storage BoxARead-onlyIdempotent
Get details of a specific Storage Box by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and idempotent; the description adds no extra behavioral context beyond 'Get details'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words; every part is essential and immediately conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, no-output-schema tool, the description is adequate but could be enhanced by listing typical return fields.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear description for 'id'; the description adds no additional meaning beyond restating 'by 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 description uses a specific verb ('Get') and resource ('Storage Box') with identifier ('by ID'), clearly distinguishing it from list operations like 'list_storage_boxes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you have an ID, but does not explicitly state when to use this tool vs. alternatives like listing, or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_storage_box_snapshotGet Storage Box SnapshotARead-onlyIdempotent
Get details of a specific Storage Box snapshot by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| snapshot_id | Yes | Snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds no behavioral context beyond 'Get details', which is a restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 strong annotations and no output schema, the description is adequate for a simple get-by-id tool, though 'details' is vague.
Complex tools with many parameters or behaviors need more documentation. Simple 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 'id' and 'snapshot_id' described. The description adds 'by ID' but no extra detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'Storage Box snapshot', and the method 'by ID'. This distinguishes it from siblings like list and create snapshot 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 description implies usage for retrieving a specific snapshot by ID, but does not explicitly differentiate from list snapshots or provide when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_storage_box_subaccountGet Storage Box SubaccountBRead-onlyIdempotent
Get details of a specific Storage Box subaccount by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| subaccount_id | Yes | Subaccount ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description merely restates 'Get details' without adding behavioral context beyond what annotations already convey. No 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?
Single sentence that is clear and directly conveys the purpose. No unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only get tool with comprehensive annotations, the description is minimally adequate. However, it lacks output hints or usage context. With no output schema, additional description of return structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already cover both parameters ('Storage Box ID', 'Subaccount ID') at 100% coverage. The tool description adds no extra meaning beyond confirming what parameters are needed. 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 clearly states the verb 'Get', the resource 'Storage Box subaccount', and the identifier 'by ID'. It distinguishes from sibling tools like `hetzner_get_storage_box` and `hetzner_list_storage_box_subaccounts`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as `hetzner_list_storage_box_subaccounts`. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_storage_box_typeGet Storage Box TypeARead-onlyIdempotent
Get details of a specific Storage Box type by ID, including capacity and pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box type ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that it includes capacity and pricing, providing some behavioral context beyond annotations, but no additional details on auth, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 12 words that is front-loaded with the tool's purpose. Every word is necessary and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's simplicity, one parameter, and strong annotations, the description is complete enough. It covers the purpose and return value details. Minor improvement could mention that the ID should come from the list of 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% with the parameter description 'Storage Box type ID'. The tool description mentions 'by ID' but adds no new semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'details of a specific Storage Box type', the identifier 'by ID', and what is included ('capacity and pricing'). It distinguishes itself from siblings like `hetzner_list_storage_box_types` which lists all types, and `hetzner_get_storage_box` which gets a storage box instance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide when or when not to use this tool versus alternatives, such as `hetzner_list_storage_box_types`. The usage is implied but not contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_volumeGet VolumeBRead-onlyIdempotent
Get details of a specific volume by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds no additional behavioral context (e.g., what data is returned, permissions needed, rate limits). It merely restates the purpose already covered 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?
The description is very concise (one sentence, 8 words), but it could be slightly expanded (e.g., mentioning return value format) without losing conciseness. Still well-structured and 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?
Given the simplicity (one parameter, no output schema), the description is adequate but vague. It does not specify what 'details' includes, and with no output schema, the agent may need more context. Sibling tools exist but no differentiation is explicitly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions; the 'id' parameter is clearly described in the schema. The tool description adds no extra meaning beyond 'by ID'. 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 clearly states the action ('Get details') and the resource ('a specific volume by ID'), distinguishing it from sibling tools like list_volumes, create_volume, etc. The verb and resource are explicit and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing details of a single volume, but lacks explicit guidance on when to use this versus alternatives like hetzner_list_volumes. No when-not or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_zoneGet DNS ZoneARead-onlyIdempotent
Get details of a specific DNS zone by its numeric ID or zone name (e.g. "example.com").
| Name | Required | Description | Default |
|---|---|---|---|
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. Description adds that it accepts ID or name, but does not disclose any other behavioral traits beyond schema and annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, front-loaded sentence with no wasted words. Efficient and direct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with one parameter and no output schema, the description fully covers the purpose and parameter semantics. No missing information given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers the parameter with anyOf and description. The description adds clarity by explicitly stating 'numeric ID or zone name' and providing an example, adding value beyond 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?
Clearly states it retrieves details of a DNS zone, specifies identification by numeric ID or zone name, and distinguishes from sibling tools like list or record-specific 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?
Explicitly describes when to use (to get zone details) and provides an example input, but does not mention when not to use or compare with alternative tools like list_zones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_get_zone_rrsetGet DNS Zone RRSetARead-onlyIdempotent
Get a specific RRSet by zone, name, and record type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name (e.g. "@", "www", "_acme-challenge") | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety behavior is covered. The description adds the useful scoping fact that the result is a single RRSet selected by zone/name/type, but does not disclose behavior such as missing-record handling or the content of the returned RRSet. No contradiction; moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and resource, with no filler. Every word contributes directly to understanding what the tool does and how it selects the target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 full schema coverage for all three required parameters and annotations that define the operation as read-only, idempotent, and non-destructive, the description is sufficient for correct invocation. It could briefly note that the response is the RRSet itself, but this is not an invocation-critical gap given the tool name and 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%, with meaningful per-parameter descriptions including examples, enum values, and id format constraints. The description adds no meaning beyond the schema's parameter documentation; it merely restates the three selection keys at a high 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 (Get), a specific resource (RRSet), and the exact keys used to identify it (zone, name, record type). The word 'specific' distinguishes it from listing all RRSets, and the tool name and title align cleanly with the 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 phrase 'a specific RRSet' implies this tool is for single-record-set lookups rather than listing all RRSets, but the description never explicitly says when to use this versus list_zone_rrsets or the RRSet mutation tools. Usage context is only implied, not clarified with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_import_zonefileImport DNS ZonefileADestructive
Replace the contents of a DNS zone with the given RFC 1035 zonefile. This overwrites all existing RRSets.
| Name | Required | Description | Default |
|---|---|---|---|
| zonefile | Yes | Full zone content in RFC 1035 zonefile format | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the tool overwrites all existing RRSets, which provides some behavioral context beyond the destructiveHint annotation. However, it does not clarify whether other zone settings (e.g., TTL, nameservers) are affected, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences are efficient and front-loaded: the first states the core action, the second adds a critical behavioral note. No extraneous 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 straightforward import operation, the description covers the essential action and effect. Annotations provide safety profile. Lacking return value explanation, but no output schema exists; overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters have descriptions in the input schema (100% coverage). The description adds no additional semantic information beyond what the schema already provides. 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 clearly states the tool replaces the contents of a DNS zone using a zonefile, explicitly mentioning it overwrites all existing RRSets. This distinguishes it from sibling tools like hetzner_export_zonefile or hetzner_create_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?
The description explains what the tool does but provides no explicit guidance on when to use it versus alternatives, nor does it mention prerequisites or when not to use it. The context is clear but lacks usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_certificate_actionsList Certificate ActionsARead-onlyIdempotent
List all actions performed on a specific certificate, such as issuance and renewal retries.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Certificate ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds context about the types of actions (issuance, renewal retries) but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose and includes an example of actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's simplicity, good annotations, and lack of output schema, the description is complete enough. It specifies the resource (certificate) and provides examples, making it sufficient for the agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple 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. The description does not add extra meaning to parameters beyond what is already in the schema (e.g., no examples of status values or sort format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: list all actions performed on a specific certificate, with concrete examples like 'issuance and renewal retries'. It distinguishes from sibling tools like hetzner_list_certificates, which list certificates themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that the tool requires a certificate ID, but does not explicitly state when to use this tool versus alternatives like hetzner_list_certificates, nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_certificatesList CertificatesARead-onlyIdempotent
List all SSL/TLS certificates in the project, with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| type | No | Filter by certificate type | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds little behavioral info beyond stating it lists certificates 'in the project' and supports optional filtering. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 10 words, front-loaded with the action and resource. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the return format (e.g., list of certificate summaries) or pagination behavior, though page/per_page parameters are in schema. It could mention that results are summary-only versus full details from hetzner_get_certificate. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for all 5 parameters. The description adds only generic 'optional filtering', no extra meaning beyond the schema. For the 'type' enum, it does not explain the difference between 'uploaded' and 'managed'.
Input schemas describe structure but not intent. Descriptions should explain 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 'List all SSL/TLS certificates' with a verb (List) and resource (certificates). It distinguishes from sibling tools like hetzner_list_certificate_actions which list actions, not certificates, and hetzner_get_certificate which retrieves a single 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 guidance on when to use this tool versus alternatives like hetzner_get_certificate or other list tools. The description only mentions optional filtering but does not provide context for usage or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_datacentersList DatacentersARead-onlyIdempotent
Deprecated by Hetzner; /datacenters is removed after 2026-10-01 (HTTP 410). Use hetzner_list_server_types (locations[].available/recommended) and hetzner_list_locations instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by datacenter name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds crucial lifecycle information about deprecation and future HTTP 410 status, which is beyond annotation scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loads the deprecation warning and deadline, then provides actionable alternatives. No redundant 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?
Given the tool is deprecated, the description fully addresses what the agent needs to know: avoid it, use the listed alternatives. 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 coverage is 100% (all three parameters have descriptions). The description does not add parameter-level detail beyond what the schema provides, so 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 clearly states the tool is deprecated and provides the specific deprecation date (2026-10-01). It directs to alternative tools (hetzner_list_server_types and hetzner_list_locations), distinguishing it from 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 indicates when not to use (after deprecation) and provides alternative tools. Gives clear context for appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_firewall_actionsList Firewall ActionsARead-onlyIdempotent
List all actions performed on a specific firewall, such as rule and resource attachment changes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Firewall ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds minimal behavioral context (mentions listing actions) but does not contradict annotations. No additional details like rate limits or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately conveys the tool's purpose. No redundant or extraneous 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?
The description is concise but lacks details about pagination, filtering, or output structure. Given the 5 parameters and no output schema, the description could be more helpful, but the schema and annotations compensate somewhat.
Complex tools with many parameters or behaviors need more documentation. Simple 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 description does not need to add parameter details. It provides examples of action types but does not enhance understanding of parameters beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'List' and the resource 'all actions performed on a specific firewall', with examples of action types. This distinguishes it from sibling tools like 'list_firewalls' (lists firewalls) and action lists 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?
The description implies usage for viewing action history on a firewall but does not explicitly state when to use this tool versus alternatives like 'get_firewall' or other action listers. No exclusions or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_firewallsList FirewallsARead-onlyIdempotent
List all firewalls in the project, with optional filtering by name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, idempotent, and open world. The description adds the key behavioral detail of optional filtering by name or labels, which complements annotations without contradiction. No hidden or additional behaviors are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the core functionality and filtering capability. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and filtering, but lacks information about the return format (e.g., list of firewall objects) since no output schema is provided. It is mostly complete given the simplicity, but could be slightly richer.
Complex tools with many parameters or behaviors need more documentation. 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 parameters with descriptions. The description only repeats the filtering aspect ('name or labels') without adding new meaning or format details beyond what the schema already provides (e.g., label_selector example). 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 clearly states the verb 'List', the resource 'all firewalls in the project', and mentions optional filtering. It distinguishes from sibling tools like 'hetzner_get_firewall' (single) and 'hetzner_list_firewall_actions' (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 implies the tool is for obtaining a list but does not explicitly state when to use it versus alternatives (e.g., 'get_firewall' for a single firewall). No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_floating_ip_actionsList Floating IP ActionsARead-onlyIdempotent
List all actions performed on a specific floating IP, such as assign, unassign, and rDNS changes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds minimal behavioral context beyond listing the types of actions, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently communicates purpose and examples with no unnecessary words. Front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 with fully documented parameters and no output schema, the description adequately covers what it does. Could be slightly more complete by mentioning pagination, but schema covers 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 description coverage is 100%, so the schema fully documents parameters. The description adds no additional parameter meaning beyond examples of action types, which is not essential for understanding the 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 the verb 'list' and the resource 'actions on a specific floating IP' with examples (assign, unassign, rDNS changes), distinguishing it from sibling tools for managing or listing 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 explicit guidance on when to use versus alternatives, but the purpose is clear enough from the name and context. For a simple list tool, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_floating_ipsList Floating IPsARead-onlyIdempotent
List all floating IPs in the project, with optional filtering by name or label.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by floating IP name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds the filtering capability (by name or label), which is valuable beyond default annotations. No 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?
A single, concise sentence (12 words) that communicates the core function and filtering option without fluff. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and comprehensive annotations, the description covers the essential behavior: listing floating IPs with optional filters. No gaps for the intended use.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear parameter descriptions. The description mentions 'optional filtering by name or label' which aligns with the name and label_selector parameters but adds no new semantics 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 clearly states 'List all floating IPs', specifying the verb (list) and resource (floating IPs). It distinguishes from sibling tools like hetzner_get_floating_ip or other list tools by resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates this is for listing all floating IPs, with filtering. It does not explicitly exclude alternatives, but the context of sibling tools (e.g., get_floating_ip for a single IP) makes the usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_image_actionsList Image ActionsARead-onlyIdempotent
List all actions performed on a specific image, such as snapshot creation and protection changes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds no extra behavioral context beyond 'List all actions', which is consistent but not illuminating. Agent is safe but lacks details like ordering or completeness of results.
Agents need to know what a tool does to the 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 concise single sentence with examples. Front-loaded with the verb 'List' and quickly conveys the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet description does not clarify what fields the returned actions contain. Mentions only two examples. Lacks guidance on pagination, filtering, or typical use-cases. 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 coverage is 100%, so parameters are described in the schema. Description does not add meaning beyond what the schema already provides, nor does it explain usage of sort, status, page, 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?
Description clearly states it lists actions for a specific image, with examples like snapshot creation and protection changes. Differentiates from related tools like hetzner_get_image or hetzner_list_images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies use when actions need to be retrieved for a specific image, but does not explicitly contrast with other list actions tools (e.g., list_server_actions) or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_imagesList ImagesARead-onlyIdempotent
List all available images, including system, snapshot, and backup images.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by image name | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| type | No | Filter by image type | |
| status | No | Filter by image status | |
| per_page | No | Results per page (max 50) | |
| architecture | No | Filter by CPU architecture | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds 'all available images' context but doesn't cover pagination or return behavior beyond what schema provides. Adequate but not enriching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with the essential action. Highly concise while conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's simplicity, strong annotations, and full schema, the description is minimally adequate. However, it lacks mention of typical use cases (e.g., browsing images before creating a server) and does not highlight the absence of required 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 coverage is 100%, so each parameter is fully described there. Description adds no additional parameter meaning beyond the schema, earning 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?
Description clearly states it lists all available images, including types (system, snapshot, backup). Specific verb 'list' and resource 'images' distinguish it from sibling tools like hetzner_get_image or hetzner_create_image.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., hetzner_get_image). No mention of prerequisites, context, or 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.
hetzner_list_isosList ISOsBRead-onlyIdempotent
List all available ISO images for mounting on servers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by ISO name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| architecture | No | Filter by CPU architecture |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover the tool's safety profile. The description adds that it lists 'all' ISOs, implying no default filters, but does not discuss pagination behavior (though schema has page/per_page). This adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no fluff, efficiently stating the purpose. It is front-loaded and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema fully documents parameters and annotations cover safety, the description is minimally adequate. However, it does not explain the return format or response structure (no output schema), which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a description. The tool description 'List all available ISO images' adds no additional meaning to the parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all available ISO images', specifying the verb (list) and resource (ISO images). It also adds context 'for mounting on servers', but does not explicitly distinguish from sibling 'hetzner_get_iso' which gets a single ISO.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'for mounting on servers' hinting at use case but provides no explicit guidance on when to use this tool versus alternatives, nor any when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_lb_typesList Load Balancer TypesARead-onlyIdempotent
List all available load balancer types with pricing and limits.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by type name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds that the tool returns 'pricing and limits,' which is useful context beyond the schema. However, it does not disclose pagination behavior or response structure, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently states the purpose and key data returned. No unnecessary words, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description mentions 'pricing and limits' which partially compensates. However, it could more completely describe the response structure (e.g., included fields like id, name, etc.). Still, it is adequate for a simple list tool with well-annotated 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% with clear descriptions for 'name', 'page', and 'per_page'. The description adds no additional meaning to these parameters beyond what the schema provides, so baseline score 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 'List all available load balancer types with pricing and limits,' which clearly identifies the action (list), resource (load balancer types), and added value (pricing and limits). This distinguishes it from sibling tools like hetzner_list_load_balancers that list actual load balancers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide when to use this tool versus alternatives like hetzner_list_load_balancers or hetzner_get_load_balancer. It implies a read-only exploratory purpose but lacks explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_load_balancer_actionsList Load Balancer ActionsARead-onlyIdempotent
List all actions performed on a specific load balancer, such as service changes and target attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Load Balancer ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds that actions include 'service changes and target attachments', but does not disclose additional behaviors like pagination or rate limits. Credit is given for context, but the burden is low due to comprehensive annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential purpose without any fluff. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no output schema, no enums), the description is sufficient but not comprehensive. It does not mention return fields or pagination behavior, which would be helpful. Annotations cover safety, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 5 parameters described. The description provides no additional meaning beyond the schema; it only gives examples of action types, not parameter usage or syntax. 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 clearly states the verb 'List' and the resource 'actions performed on a specific load balancer', with examples like service changes and target attachments, distinguishing it from sibling tools like hetzner_get_load_balancer or hetzner_list_load_balancers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use the tool (to list actions) but provides no explicit guidance on when not to use it or how it compares to alternatives like hetzner_get_lb_metrics or other list-actions tools. No exclusionary context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_load_balancersList Load BalancersARead-onlyIdempotent
List all load balancers in the project, with optional filtering by name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnly, non-destructive, idempotent hints. The description adds 'list all' which could conflict with openWorldHint (pagination), but not contradictory. No mention of pagination behavior or rate limits beyond 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?
Single sentence, 13 words, front-loaded with verb and scope. No unnecessary words. 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?
Given simple tool with complete schema and annotations, description is adequate. Could mention pagination default or result ordering, but not required. Slight gap in clarifying 'list all' vs. paginated 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 descriptions cover 100% of parameters. Description restates 'optional filtering by name or labels', adding no new meaning. 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?
Description clearly states verb (list), resource (load balancers), scope (project), and optional filters. Distinguishes from sibling list tools by resource type and from get_load_balancer (single vs. many).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use when needing multiple load balancers or filtering by name/labels, and implicitly differentiates from get_load_balancer for single retrieval. No explicit when-not or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_locationsList LocationsARead-onlyIdempotent
List all available Hetzner Cloud locations (regions).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by location name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Description adds 'all available' aligning with openWorldHint. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with essential 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?
Given annotations and complete schema, the description is sufficient for this simple list operation. No output schema 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 covers all three parameters with descriptions (100% coverage). Description does not add further semantic 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?
Clearly states 'list all available Hetzner Cloud locations (regions)', using specific verb and resource. Distinguishes from sibling `hetzner_get_location` which retrieves a single location.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Purpose is clear but lacks explicit guidance on when to use this tool vs alternatives like `get_location`. No exclusions or when-not-to-use advice provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_network_actionsList Network ActionsARead-onlyIdempotent
List all actions performed on a specific network, such as subnet and route changes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Network ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. Description adds examples of action types but does not elaborate on pagination, response structure, or other behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently conveys the tool's purpose without extraneous information, front-loaded with key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list tool given annotations and schema; however, lacks mention of response format or that actions are paginated. Still sufficient for selection and basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for all 5 parameters. Description adds no new 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?
Description clearly identifies verb 'List' and resource 'actions performed on a specific network', including examples like subnet and route changes that distinguish it from sibling list action 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?
Implicitly indicates when to use (for network actions) by naming network-specific content, but lacks explicit when-not or alternative tool names. The context is clear given distinct siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_networksList NetworksARead-onlyIdempotent
List all networks in the project, with optional filtering by name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so agent knows it's a safe read operation. The description adds no additional behavioral context like pagination behavior or output format beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words, no fluff. Front-loaded with the key action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 list operation with no output schema. However, it lacks mention of pagination behavior despite having page/per_page parameters. With annotations present, it meets the minimum but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for all four parameters. The description adds a summary ('optional filtering by name or labels') but does not elaborate on pagination parameters or label filter syntax 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 clearly states the verb 'List', the resource 'all networks in the project', and the scope with optional filtering by name or labels. It distinguishes from siblings like 'get_network' (single network) and 'create_network' (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives such as 'get_network' for a specific network or other list tools. The description does not mention prerequisites or 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.
hetzner_list_placement_groupsList Placement GroupsBRead-onlyIdempotent
List all placement groups in the project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by placement group name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. The description adds no behavioral context beyond what annotations provide, so it meets the baseline but does not exceed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words. Purpose is immediately clear and 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?
Lacks mention of pagination behavior, sorting, or response format even though parameters include page/per_page. For a list tool, this is a significant 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 covers all 4 parameters with descriptions (100% coverage). The description adds no additional meaning; 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 clearly states the action (list) and the resource (placement groups) with scope (in the project). It distinguishes from sibling tools that operate on different resources or perform different 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 tool versus alternatives like hetzner_get_placement_group for a single group or advanced filtering. Does not mention pagination or label selector usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_primary_ip_actionsList Primary IP ActionsARead-onlyIdempotent
List all actions performed on a specific primary IP, such as assign, unassign, and rDNS changes.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows it's safe. The description adds no additional behavioral traits (e.g., pagination behavior, rate limits). Since annotations cover the safety profile, the description is adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb 'List', and efficiently covers purpose and examples. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain the output structure (list of action objects), which is useful given no output schema. It mentions example actions but lacks details like pagination or result format. Adequate for a simple list tool but could be more 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% with clear parameter descriptions. The tool description mentions example actions (assign, unassign, rDNS), which provides context for the output but does not enhance parameter meaning. 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 clearly states the tool lists actions on a specific primary IP, providing examples like assign, unassign, and rDNS changes. The verb 'list' and resource 'primary IP' are specific and distinguish it from sibling tools such as hetzner_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 description offers no guidance on when to use this tool versus alternatives like hetzner_list_floating_ip_actions or hetzner_list_server_actions. It does not mention prerequisites, exclusions, or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_primary_ipsList Primary IPsARead-onlyIdempotent
List all primary IPs in the project, with optional filtering by name, label, or IP address.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Filter by IP address | |
| name | No | Filter by primary IP name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, covering the safety profile. The description adds filtering capabilities but does not disclose pagination behavior, rate limits, or other behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with action ('List all primary IPs'), no wasted words. Perfectly 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?
Given no output schema and 5 optional parameters, the description covers the filtering intent but omits pagination details (page, per_page). However, for a straightforward list operation, this is nearly complete. Loss of 1 for missing pagination context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented. The description iterates 'name, label, or IP address' corresponding to three parameters, adding no new meaning. Pagination parameters are omitted from description but covered in 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 clearly states the verb 'List' and the resource 'primary IPs', and specifies optional filtering criteria (name, label, IP address), distinguishing it from sibling tools like 'get_primary_ip' or 'create_primary_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?
No explicit guidance on when to use this tool versus alternatives (e.g., 'hetzner_get_primary_ip'). No mention of when not to use it or prerequisites. The description merely states what it does without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_server_actionsList Server ActionsARead-onlyIdempotent
List all actions for a specific server, such as power changes and rebuilds.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds useful context about the kinds of actions returned ('power changes and rebuilds'). However, 'all actions' sits in mild tension with the pagination parameters (page, per_page), which could mislead an agent into expecting one complete unfiltered response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. The core action and scope come first, followed by a compact clarifying example. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with fully documented parameters and strong safety annotations, this is nearly complete. The main gaps are the ambiguity between 'all actions' and the paginated nature of the response, and the absence of any description of the returned action objects since no output schema exists. Minor, but worth a small deduction.
Complex tools with many parameters or behaviors need more documentation. Simple 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, sort, status, and per_page are all already documented with clear descriptions. The description adds only marginal value by illustrating what kinds of actions exist (power changes, rebuilds), which indirectly informs what the status filter means. Baseline 3 is appropriate since 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 ('List'), a precise resource ('actions for a specific server'), and concrete examples ('power changes and rebuilds'). The 'for a specific server' qualifier clearly distinguishes it from hetzner_list_servers, hetzner_get_server, and the family of other list_X_actions tools by scoping it to server action history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 alternatives named, and no exclusions provided. An agent must infer from the name that this is the right tool among the many list_X_actions siblings (firewall, volume, network, zone, etc.) and must figure out on its own that this returns action history rather than current server state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_serversList ServersARead-onlyIdempotent
List all servers in the project, with optional filtering by name, label, or status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by server name | |
| page | No | Page number | |
| status | No | Filter by server status | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds that the tool lists all servers with optional filtering, which is consistent. No contradictory 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?
Single sentence of 12 words, extremely concise. Front-loads the main action ('List all servers') with optional filters. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with complete schema and rich annotations, the description is sufficient. It omits mention of pagination or return format, but the schema includes page/per_page parameters. No output schema needed for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description mentions three parameters (name, label, status) but adds little beyond what the schema descriptions already provide. Pagination parameters (page, per_page) are not mentioned in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all servers in the project', clearly specifying the verb (list) and resource (servers). It distinguishes this tool from sibling list tools for other Hetzner resources (e.g., firewalls, networks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like hetzner_get_server for a single server. Usage is implied via the resource name and readOnlyHint annotation, but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_server_typesList Server TypesARead-onlyIdempotent
List all available server types with their specs and pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by server type name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's mention of 'specs and pricing' adds useful context about the output content without contradicting annotations. It does not disclose pagination behavior, but schema parameters cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that is front-loaded with the key action and result. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and 3 optional parameters, the description covers the core purpose. It could mention pagination or filtering, but the annotation and schema cover safety and parameters, making it fairly 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% with descriptions for all three parameters. The description does not add additional meaning beyond the schema, so 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 clearly states 'List all available server types with their specs and pricing.' It uses a specific verb (List) and resource (server types), and distinguishes itself from siblings like 'hetzner_get_server_type' which retrieves a single type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like 'hetzner_get_server_type' for a specific type. It only states what it does, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_ssh_keysList SSH KeysARead-onlyIdempotent
List all SSH keys in the project, with optional filtering by name, label, or fingerprint.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by SSH key name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) | |
| fingerprint | No | Filter by SSH key fingerprint | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context about filtering but does not disclose any behavioral traits beyond what annotations already provide. No 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?
A single, clear sentence that is front-loaded with the primary action and resource. No extraneous words; every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and filters. It lacks explicit mention of pagination or return format, but given the pagination parameters in the schema and the typical behavior of list tools, it is mostly adequate. A bit more detail on response structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear parameter descriptions. The description merely repeats the filters in natural language ('by name, label, or fingerprint'), adding no new semantics beyond grouping 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 clearly states the action ('List all SSH keys') and the resource ('in the project'), with optional filters specified. This distinguishes it from single-key retrieval (get_ssh_key) and other list 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 description implies usage (when you need to list SSH keys with optional filters) but does not explicitly state when to use this tool versus alternatives like hetzner_get_ssh_key. No exclusion or when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_box_actionsList Storage Box ActionsARead-onlyIdempotent
List all actions performed on a specific Storage Box, such as type changes and password resets.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the description does not need to repeat safety traits. It adds context by listing example actions but does not disclose pagination behavior or response format. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and provides illustrative examples. Every word contributes value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the primary purpose and gives useful examples, it omits critical information for a list tool such as pagination, sorting, and the structure of the returned actions. Given the lack of an output schema, more detail would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameters. The description adds no additional meaning beyond what the schema provides, maintaining the baseline score of 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?
The description clearly states the verb 'List' and the resource 'actions performed on a specific Storage Box', with examples (type changes, password resets). It effectively distinguishes the tool from sibling 'list' tools that target other resources like storage boxes themselves or snapshots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 via examples but lacks explicit guidance on when to use this tool versus alternatives such as hetzner_get_storage_box or other action list tools. No when-not-to-use or comparative context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_boxesList Storage BoxesARead-onlyIdempotent
List all Storage Boxes in the project, with optional filtering by name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, providing safety profile. Description adds mention of optional filtering but no additional behavioral details (e.g., pagination behavior, default sorting). No 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?
Single sentence that efficiently communicates purpose and optional filtering. No wasted words, front-loaded key 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?
Given rich annotations and full schema coverage, the description is sufficient for a simple list tool. It could mention pagination or default behavior but is adequate as is. No output schema needed for list 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 coverage is 100% with clear descriptions for all 5 parameters. Description only mentions filtering by name or labels, not adding meaning beyond schema. 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?
Description clearly states the verb 'list', resource 'Storage Boxes', scope 'in the project', and optional filtering. It distinguishes from sibling tools like 'hetzner_list_storage_box_snapshots' by specifying the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when listing storage boxes) but does not explicitly state when to use versus alternatives like 'get_storage_box' or other list tools. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_box_foldersList Storage Box FoldersARead-onlyIdempotent
List the folders inside a Storage Box, optionally under a given path.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| path | No | Directory path to list folders under (defaults to the root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, which cover behavioral safety. The description simply states the action without adding new behavioral context (e.g., no pagination details or path validation behavior). Annotations carry the transparency burden sufficiently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 11-word sentence that is perfectly concise and front-loaded with the core action. No redundant or extraneous 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?
Given the low complexity (2 parameters, 100% schema coverage, good annotations, no output schema), the description adequately covers the tool's purpose and optional path filtering. No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the schema (100% coverage). The description adds no additional semantic information beyond what the schema already provides, so 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?
Description clearly states verb 'list', resource 'folders inside a Storage Box', and optional scope 'under a given path'. It distinguishes from siblings like 'hetzner_list_storage_boxes' (which lists boxes, not folders) and 'hetzner_get_storage_box' (details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for listing folders, but does not explicitly state when to use this tool versus alternatives like 'hetzner_list_storage_boxes' or 'hetzner_get_storage_box'. No exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_box_snapshotsList Storage Box SnapshotsARead-onlyIdempotent
List the snapshots of a Storage Box, with optional filtering by name, labels, or automatic-vs-manual.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| name | No | Filter by name | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| is_automatic | No | Filter by whether the snapshot was created by the snapshot plan | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description does not add any behavioral context beyond the annotation, but it also does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the tool's purpose and key features. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and full schema, the description is sufficient. It does not detail the return format, but for a list operation, the return structure is typically obvious from the resource type.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameters are well-documented. The description adds value by grouping filters into a concise summary, but this is not significant additional meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb 'list' and the resource 'snapshots of a Storage Box', and mentions optional filtering. It clearly distinguishes from sibling tools like 'get_storage_box_snapshot' and 'create_storage_box_snapshot'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does and lists available filters, but it does not explicitly state when to use this tool versus alternatives. However, the context of sibling tools implies that this is for listing multiple snapshots with filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_box_subaccountsList Storage Box SubaccountsARead-onlyIdempotent
List the subaccounts of a Storage Box, with optional filtering by name, username, or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| name | No | Filter by name | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| username | No | Filter by subaccount username | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds filtering context. No contradictions. Slightly less than 5 because pagination or error handling are not 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?
Single sentence that efficiently communicates purpose and key parameters. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with high schema coverage and annotations, the description is adequate. It covers the main filters but omits mention of sorting or pagination, which are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds value by summarizing filter options (name, username, labels) and grouping them, going beyond the schema's individual 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?
The description clearly states action (list), resource (subaccounts of a Storage Box), and mentions optional filtering. It distinguishes from single-get and create tools but does not explicitly differentiate from other list tools, though the resource is unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 lists parameters but does not provide explicit guidance on when to use this tool over alternatives, nor does it mention prerequisites or when not to use. The required 'id' parameter is implied but not emphasized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_storage_box_typesList Storage Box TypesARead-onlyIdempotent
List all available Storage Box types with their capacity, limits, and pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, and idempotentHint, so the safety profile is clear. The description adds the scope of 'all available' types but does not detail pagination behavior or other operational context beyond the schema. 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 a single, well-structured sentence that front-loads the main action and key returned content. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, strong annotations, and complete schema descriptions, the description provides sufficient context. It mentions the output content (capacity, limits, pricing) and the scope (all available), which is adequate for a listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters described. The description adds no additional parameter-specific meaning beyond the schema, so 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 clearly states the verb 'List', the resource 'Storage Box types', and specifies the returned fields (capacity, limits, pricing). This distinguishes it from sibling tools like 'get_storage_box_type' and 'list_storage_boxes'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implicitly differentiates this from 'hetzner_get_storage_box_type' by indicating it lists all types, while alternatives are not explicitly mentioned. Clear context for when to use, but lacks explicit exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_volume_actionsList Volume ActionsARead-onlyIdempotent
List all actions performed on a specific volume, such as attach, detach, and resize operations.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, destructiveHint, idempotentHint. Description adds examples of actions but no additional behavioral context beyond what annotations signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, and description doesn't mention pagination or response structure. However, annotations cover safety traits, and the tool is simple. Adequate but could hint at return 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 is 3. Description does not add meaning for parameters beyond what the schema provides (e.g., id, sort, status).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all actions on a specific volume, with examples (attach, detach, resize). This distinguishes it from sibling list action 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 guidance on when to use this tool versus alternatives like hetzner_list_server_actions or hetzner_list_floating_ip_actions. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_volumesList VolumesARead-onlyIdempotent
List all volumes in the project, with optional filtering by name, label, or status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by volume name | |
| page | No | Page number | |
| status | No | Filter by volume status | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds that it lists all volumes with optional filters, but does not disclose return format, pagination behavior, or other traits beyond what annotations and schema imply. This is adequate but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence front-loading the main action and then specifying optional filters. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple list operation, complete annotations, and fully described schema, the description is sufficiently complete. It covers the core functionality and filter options, and does not need to explain return values 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?
Schema description coverage is 100% for all 5 parameters, so the schema already documents their meanings. The description only summarizes filter options without adding new details. 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 the tool lists all volumes in the project with optional filtering by name, label, or status. It uses a specific verb (List) and resource (volumes), and the mention of project scope and filter options effectively distinguishes it from sibling list 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?
The description implies usage for listing volumes but does not explicitly guide when to use this tool versus alternatives like hetzner_get_volume (single volume) or hetzner_list_volume_actions (volume actions). No when-not-to-use or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_zone_actionsList DNS Zone ActionsARead-onlyIdempotent
List all actions performed on a specific DNS zone, such as imports, TTL changes, and protection toggles.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| status | No | Filter by action status: comma-separated list of "running", "success", "error" | |
| per_page | No | Results per page (max 50) | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, indicating a safe, read-only operation. The description adds context about the types of actions (imports, TTL changes, protection toggles) but does not disclose additional behavioral traits such as pagination behavior, rate limits, or that it requires a valid zone ID/name. Since annotations cover the core safety profile, the description provides moderate 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?
The description is a single sentence of 17 words, perfectly concise and front-loaded with the verb 'List'. Every word adds value, with specific examples but no fluff. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description could explain the structure of the returned data (e.g., 'returns a list of action objects with details like id, status, started_at, finished_at'). It only says 'list all actions', leaving the agent to infer the return format from context or other tools. While not severely incomplete, it is a moderate gap for a tool with five parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond the schema's parameter descriptions; it only mentions 'specific DNS zone' which maps to the 'id_or_name' parameter already described in the schema. No additional clarification or context for using the parameters is provided.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'List' and the resource 'actions performed on a specific DNS zone', with concrete examples like imports, TTL changes, and protection toggles. It distinguishes from sibling tools such as hetzner_list_zones (which lists zones) and hetzner_list_certificate_actions (which lists actions on certificates), making the purpose 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 does not explicitly state when to use this tool over alternatives like other list_*_actions tools or when not to use it. The usage context is implied by the resource 'DNS zone' and the readOnlyHint annotation, but no explicit guidance is provided. It neither gives criteria nor exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_zone_rrsetsList DNS Zone RRSetsBRead-onlyIdempotent
List all RRSets in a DNS zone, with optional filtering by name, type, or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by name | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| type | No | Filter by one or more record types | |
| per_page | No | Results per page (max 50) | |
| id_or_name | Yes | Zone ID or name | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds the filtering capability but does not disclose pagination behavior or rate limits. It is consistent with annotations but adds little beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action and resource, no redundant words. Highly concise and structured effectively for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 7 parameters, 1 required, and no output schema. The description is too brief; it does not explain the concept of RRSets, the zone context, pagination behavior, or return value expectations. For a tool of this complexity, more context is needed for an agent to use 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 coverage is 100%, so the schema already documents all parameters. The description mentions filtering by name, type, or labels, which aligns with parameters. However, it does not explain the required id_or_name parameter or pagination parameters. Baseline 3 is appropriate given high 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?
The description clearly states the verb 'List' and the resource 'all RRSets in a DNS zone', distinguishing it from mutation and single-get siblings. It also mentions optional filtering, which adds specificity. However, it could explicitly separate from other list tools (e.g., hetzner_list_zones) but the resource is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for use (listing/filtering RRSets) but does not provide explicit when-to-use vs. alternatives (e.g., use get for a single RRSet) or mention prerequisites (e.g., need zone id). Lacks exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_list_zonesList DNS ZonesARead-onlyIdempotent
List all DNS zones in the project, with optional filtering by name, mode (primary/secondary), or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Filter by zone mode | |
| name | No | Filter by name | |
| page | No | Page number | |
| sort | No | Sort field, e.g. "id:asc" or "name:desc" | |
| per_page | No | Results per page (max 50) | |
| label_selector | No | Label filter, e.g. "env=prod,tier=web" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description confirms read-only nature but adds nothing beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, front-loaded with action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 read-only list tool with well-documented schema and annotations. Missing output schema but not critical for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description adds marginal value. Mentions name, mode, and label filters but does not elaborate beyond 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?
Clearly states verb 'list' and resource 'DNS zones', includes filtering options. Distinguishes from sibling list tools by targeting zones specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for listing zones with filters, but no explicit guidance on when to use this tool versus alternatives like hetzner_get_zone or other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_power_offPower Off ServerADestructive
Force power off a server immediately. This is like pulling the power cord.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so the description's 'force power off' adds only the 'pulling the power cord' analogy. No additional behavioral context (e.g., data safety, prerequisites) is disclosed beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, direct sentences with no wasted words. The purpose is front-loaded and the analogy adds clarity efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, destructive tool with one parameter and no output schema, the description is nearly complete. Minor gap: it does not mention prerequisites (e.g., server must be running) or the resulting state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'id', which is described as 'Server ID' in the schema. The description does not add any extra meaning or context for this 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 clearly states the action ('force power off') and the resource ('a server'), with an analogy ('like pulling the power cord') that distinguishes it from graceful shutdown or reboot siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies immediate forceful shutdown but does not explicitly compare to alternatives like hetzner_shutdown or hetzner_reboot. No guidance on when to use this tool vs others is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_power_onPower On ServerBDestructive
Start a stopped server by powering it on.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutating (readOnlyHint=false) and potentially destructive (destructiveHint=true). The description adds no extra behavioral context, such as prerequisites, side effects, or behavior if server is already running. No contradiction with annotations, but insufficient transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It is front-loaded and efficient, though slightly lacking in detail for full clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description is adequate for a simple single-parameter tool, but lacks context on idempotency (idempotentHint=false), preconditions, and error handling. With sibling tools like hetzner_reboot and hetzner_reset, more distinction would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple 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 the parameter 'id' described as 'Server ID'. The description does not add additional meaning or clarification beyond the schema, so 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 'Start a stopped server by powering it on' clearly states the action (power on) and the target resource (stopped server). It distinguishes itself from siblings like hetzner_power_off, but doesn't explicitly differentiate from hetzner_reboot or hetzner_shutdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a server is stopped, but does not provide explicit guidance on when to use this tool vs alternatives like hetzner_reboot or hetzner_reset. No when-not-to-use or context hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_rebootReboot ServerADestructive
Send an ACPI reboot signal to the server for a soft reboot.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description's mention of 'soft reboot' adds mild context about the nature of the reboot. However, it does not disclose side effects like connection loss or that the server must be powered 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 description is a single sentence (11 words) that is front-loaded with the action. No redundant information; every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool with one parameter and no output schema, the description is nearly complete. It covers the action and method. Minor gap: no mention of required server state (e.g., must be running), but the sibling tools list provides context for alternatives.
Complex tools with many parameters or behaviors need more documentation. 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 with 'Server ID' for the single parameter. The description only reinforces that the param identifies the server, adding no new semantic 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 uses specific verb 'send' and resource 'server' with explicit method 'ACPI reboot signal for a soft reboot'. This clearly states the action and distinguishes it from hard reset (hetzner_reset) and power operations (hetzner_power_off, hetzner_power_on).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for soft rebooting a server but does not explicitly state when to use this tool versus alternatives like hetzner_reset (hard reset) or hetzner_shutdown (graceful shutdown). No guidance on prerequisites or context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_rebuild_serverRebuild ServerBDestructive
Rebuild a server from an image, wiping all data on the server.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| image | Yes | Image name or ID to rebuild from | |
| user_data | No | Cloud-init user data to apply to the rebuilt server. Overrides the value set at creation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reinforces the annotation's destructiveHint with 'wiping all data' and specifies the image source. However, it does not disclose other potential side effects (e.g., network changes, asynchronicity).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, concise and front-loaded. No wasted words. Could be slightly more structured but 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?
No output schema, but the tool's destructive nature is clear. Lacks mention of return values or asynchronous behavior, but acceptable for a simple rebuild 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?
The input schema already covers all parameters with descriptions (100% coverage). The description adds no additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (rebuild), resource (server), and effect (wiping all data). It distinguishes from siblings like 'reset' by specifying 'from an image' and the destructive nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives (e.g., 'reset', 'resize'). The description implies destructive use but does not compare or exclude other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_remove_firewallRemove Firewall from ResourcesADestructiveIdempotent
Remove a firewall from one or more servers or label selectors.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| remove_from | Yes | Resources to remove the firewall from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true, which align with removal. The description adds that it removes from 'servers or label selectors' and can handle multiple resources (array input), but does not disclose other behavioral traits like whether the removal is immediate or requires confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that conveys the core purpose without any extraneous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description could mention the expected response (e.g., an action object). However, for a simple removal operation with well-documented parameters, the description is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple 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 both parameters. The description adds no additional meaning beyond the schema; it does not explain the structure of 'remove_from' or the relationship between type and the nested objects.
Input schemas describe structure but not intent. Descriptions should explain 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 that the tool removes a firewall from servers or label selectors, using a specific verb and resource. It distinguishes from siblings like 'hetzner_apply_firewall' (opposite) and 'hetzner_delete_firewall' (deletes the firewall 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 tool versus alternatives. For example, it does not explain when to remove a firewall from resources vs deleting the firewall entirely, or when to use it vs other removal tools like 'hetzner_remove_lb_target'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_remove_lb_targetRemove Load Balancer TargetCDestructiveIdempotent
Remove a target from a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| ip | No | IP target | |
| type | Yes | Target type | |
| server | No | Server target | |
| label_selector | No | Label selector target |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint: true and idempotentHint: true. The description adds no extra behavioral context, such as reversibility or side effects. It only repeats the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but overly brief for a tool with 5 parameters and nested objects. It lacks structure and front-loads only the action, not the key contextual details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complexity (destructive action, nested parameters, no output schema), the description is incomplete. It fails to explain parameter relationships, required fields based on type, or what happens after removal.
Complex tools with many parameters or behaviors need more documentation. 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 coverage, the baseline is 3. The description does not add any parameter-specific guidance beyond what the schema provides, such as explaining the role of 'id' or how 'type' interacts with nested objects.
Input schemas describe structure but not intent. Descriptions should explain 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 'Remove a target from a load balancer,' which clearly identifies the action and resource. It distinguishes from the sibling 'hetzner_add_lb_target'. However, it does not clarify what the required 'id' parameter represents (e.g., target ID or load balancer ID), slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives like 'hetzner_add_lb_target' or other remove tools. There is no mention of prerequisites, when-not to use, or context about target existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_remove_server_from_placement_groupRemove Server from Placement GroupADestructiveIdempotent
Remove a server from its placement group.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, idempotentHint=true, and openWorldHint=true. The description adds no further behavioral context such as side effects, permissions, or reversibility beyond stating the removal.
Agents need to know what a tool does to the 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 extremely concise (one sentence) with no unnecessary words. It effectively communicates the tool's purpose without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's simplicity (single required parameter, no output schema) and rich annotations, the description is nearly complete. It could mention that the server must be in a placement group, but the current description is still adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the parameter 'id' described as 'Server ID'. The description does not add additional meaning or context about the parameter beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Remove) and the resource (server from its placement group). It distinguishes from sibling tools like hetzner_add_server_to_placement_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context. Usage is only implied by the operation name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_remove_zone_rrset_recordsRemove Records from DNS Zone RRSetADestructiveIdempotent
Remove specific records from an RRSet (matched by value) without deleting the RRSet itself.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| records | Yes | Records to remove (matched by value) | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate destructive intent, idempotency, and open-world behavior. The description adds useful behavioral nuance: record matching is by value, and the RRSet itself survives the operation. This goes beyond the structured annotation hints without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence conveys the core operation, the matching criterion, and the critical non-destructive caveat about the RRSet itself. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with fully described schema fields and annotations covering destructive, idempotent, and open-world traits, the description is complete. An agent knows what to remove, how records are matched, and what will not be deleted. No clarifyng gaps are evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already documents all four parameters. The description adds only minimal semantic value by mentioning value-based matching, which is also present in the records parameter description. This meets the baseline for high schema coverage but does not enrich parameter understanding further.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Remove'), identifies the exact resource ('records from an RRSet'), and explains the matching mechanism ('matched by value'). It clearly differentiates this operation from deleting the entire RRSet, which is the main ambiguity among sibling 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 description implies the intended use case: remove a subset of records while preserving the RRSet itself. It implicitly distinguishes from delete_zone_rrset and from set/add/update record operations, though it does not explicitly name alternatives or provide exclusion criteria. That is still clear enough for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_request_consoleRequest Server ConsoleA
Request a noVNC WebSocket URL and credentials to access the server console. The URL is valid for a limited time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-readonly and non-destructive behavior. The description adds important context: the URL is valid for a limited time. This goes beyond annotations, though it does not fully disclose potential side effects or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the action and result, the second adds a key detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 param, no output schema), the description adequately explains what the tool returns (URL and credentials) and its time-limited nature. Slight gap: missing mention of server state requirements (e.g., powered on).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers the only parameter 'id' with full description 'Server ID'. The description adds no additional meaning beyond the schema, so 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 clearly states the tool requests a noVNC WebSocket URL and credentials for server console access, with a specific verb 'request' and resource 'console'. It distinguishes from sibling tools like 'hetzner_get_server' or 'hetzner_attach_iso' by specifying console access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for accessing server console but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives or prerequisites (e.g., server must be running) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_resetReset ServerADestructive
Perform a hard reset on the server, equivalent to pressing the reset button.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true, so the description's mention of 'hard reset' adds minimal extra behavioral context beyond confirming hardware-level impact. It does not disclose side effects or additional consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and directly communicates the tool's action. No unnecessary words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and clear annotations, the description adequately covers the necessary context. The lack of output schema is acceptable as the action is straightforward.
Complex tools with many parameters or behaviors need more documentation. 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 the single parameter 'id', which is already well-documented. The description does not add any new meaning or usage 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 uses a specific verb ('perform a hard reset') and resource ('the server'), making the purpose clear. The phrase 'equivalent to pressing the reset button' further clarifies the action and distinguishes it from other server operations like reboot or power off.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives (e.g., reboot, shutdown, power_off). It lacks explicit context about prerequisites or scenarios where a hard reset is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_reset_server_passwordReset Server Root PasswordADestructive
Reset the root password of a server. The server is rebooted and a new root password is returned in the result.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds that the server is rebooted and a new password is returned. This provides additional behavioral context beyond the annotations, such as the reboot side effect and the return 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?
The description is extremely concise, consisting of only two sentences. It contains no redundant information and every word contributes to understanding the tool's purpose and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential aspects: what it does, that it reboots the server, and what is returned. It could mention that the old password is invalidated, but overall it is complete enough.
Complex tools with many parameters or behaviors need more documentation. 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 only parameter, 'id', is fully described in the schema as 'Server ID' (100% coverage). The description does not add any extra meaning or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: reset the root password of a server. It also mentions the side effect (server reboot) and what is returned (new root password). This uniquely identifies the tool among siblings, as no other tool resets passwords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is used when a root password reset is needed, but it does not explicitly state when to use this tool versus alternatives like 'reboot' or 'power_off'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_reset_storage_box_passwordReset Storage Box PasswordAIdempotent
Reset the password of a Storage Box main account to the supplied value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| password | Yes | New password for the Storage Box main account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly, non-destructive, idempotent. Description adds minimal behavioral context beyond the operation itself, no extra details on side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 14 words, front-loaded with key information. No filler or redundant 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 2-param tool with no output schema, description covers the operation adequately. Could mention how to obtain the Storage Box ID or password constraints, but still functional.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear descriptions for both parameters. Description does not add meaning beyond provided schema, so 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 clearly states the action (reset), resource (Storage Box main account), and the supplied value. It distinguishes from sibling tools like hetzner_reset_storage_box_subaccount_password and hetzner_reset_server_password.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites or context on when not to use. Lacks explicit when/when-not or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_reset_storage_box_subaccount_passwordReset Storage Box Subaccount PasswordAIdempotent
Reset the password of a Storage Box subaccount to the supplied value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| password | Yes | New password for the subaccount | |
| subaccount_id | Yes | Subaccount ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true, destructiveHint=false, and readOnlyHint=false. The description adds no further behavioral context (e.g., side effects, permission requirements, or return value). It does not contradict annotations, but it does not enhance transparency beyond what is already known.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 13 words, front-loading the verb 'Reset'. Every word is necessary, and there is no redundancy or wasted 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?
Given the low complexity (3 required params, no output schema), the description is adequate but not complete. It explains what the tool does but omits information about the result (e.g., no mention of success response) or any constraints on the password format. For a password reset, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. The description merely echoes 'supplied value' without adding format constraints or additional meaning. Baseline 3 is appropriate since 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 the action (reset), the resource (password of a Storage Box subaccount), and specifies 'to the supplied value', indicating the password parameter. This distinguishes it from siblings like hetzner_reset_storage_box_password (different resource) and hetzner_update_storage_box_subaccount (general 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?
The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or conditions. It is a minimal description without contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_resize_serverResize ServerAIdempotent
Change the server type. The server will be stopped and migrated if needed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| server_type | Yes | Target server type name (e.g. "cx22") | |
| upgrade_disk | Yes | Whether to upgrade the disk size (cannot be downgraded later) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability and idempotency. The description adds key behavioral insight: the server may be stopped and migrated. This goes beyond annotations and helps the agent anticipate side effects.
Agents need to know what a tool does to the 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 purpose, followed by the key behavioral note. No wasted words; 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 mutation with three required parameters and good annotations, the description covers the essential action and side effect. It could mention the resulting server state, but overall it is sufficiently complete for an agent to use 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?
The input schema has 100% coverage with descriptive parameter explanations. The tool description adds no additional parameter information, so per guidelines with high schema coverage, a 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 'Change the server type' uses a specific verb and resource, making the tool's purpose unmistakable. It distinguishes itself from siblings like 'rebuild' or 'reset' by focusing solely on type change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that the server will be stopped and migrated if needed, providing some context on when it's appropriate. However, it lacks explicit guidance on when not to use this tool or alternatives, such as if no downtime is desired.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_resize_volumeResize VolumeAIdempotent
Increase the size of a volume. Volumes can only be made larger, not smaller.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID | |
| size | Yes | New size of the volume in GB (must be larger than current size) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotentHint=true), the description adds the irreversible increase-only behavior, which is valuable for an agent to understand side effects.
Agents need to know what a tool does to the 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, immediately states the action and key constraint. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema, the description fully explains the operation and its unidirectional nature. No gaps for an agent to use 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 already provides full descriptions for both parameters. The description reinforces the size constraint but adds no new details 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?
The description clearly states the tool increases volume size and explicitly notes the non-reversible nature, distinguishing it from creation, deletion, or other volume modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'hetzner_create_volume' or 'hetzner_update_volume'. The constraint 'only larger, not smaller' is stated but not framed as a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_retry_certificateRetry Certificate IssuanceA
Retry issuance or renewal of a managed certificate that has failed.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation with side effects (openWorldHint=true). Description adds that it retries issuance/renewal but does not disclose potential outcomes or async nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clear and direct, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Minimal description for a simple tool. No output schema, but could mention return value or post-conditions. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers parameter 'id' with basic description 'Resource ID'. Tool description adds no further meaning, so 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?
Description clearly states the verb 'Retry' and resource 'managed certificate', specifying the context of failure for issuance or renewal. Distinguishes from create and update 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?
Description implies use when a certificate has failed, but does not explicitly state when not to use, prerequisites, or alternatives like checking status first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_rollback_storage_box_snapshotRollback Storage Box SnapshotADestructive
Roll a Storage Box back to a snapshot. This overwrites current data with the snapshot contents.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| snapshot | Yes | Name of the snapshot to roll back to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that it overwrites current data, which is consistent with the destructiveHint: true annotation. No contradiction, but could mention irreversible nature more 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?
The description is two sentences with no wasted words. It is front-loaded with the action and immediately explains the consequence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rollback tool with two parameters and no output schema, the description fully conveys the purpose and effect. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are fully described in the input schema with clear descriptions. The tool description does not add extra meaning beyond what the schema provides, so 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 clearly states the verb 'Roll a Storage Box back to a snapshot' and the resource, distinguishing it from siblings like create or delete snapshot. It provides specific action and object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when rollback is needed but provides no explicit guidance on when not to use or alternatives among the many sibling snapshot tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_set_firewall_rulesSet Firewall RulesAIdempotent
Replace all rules of a firewall with a new set of rules.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| rules | Yes | New set of firewall rules (replaces all existing) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=false and idempotentHint=true. The description adds the key insight that the operation replaces all existing rules (not appends), which is consistent with the name. However, it does not elaborate on side effects, permissions required, or the fate of old rules beyond replacement. Given annotation coverage, the description provides minimal additional 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?
The description is a single, clear sentence with no extraneous words. It is front-loaded with the key action ('Replace all rules') and is optimally concise for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description is complete enough given the tool's simplicity and the rich schema/annotations. It conveys the core operation. However, it could briefly mention that this is a full replacement (overwrite) to avoid ambiguity with append-like operations. Despite that, it 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%; both 'id' and 'rules' have detailed schema descriptions. The tool description adds no further parameter context. Since schema already documents parameters adequately, a 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 clearly states the action: 'Replace all rules of a firewall with a new set of rules.' It specifies the verb (replace) and resource (firewall rules), and distinguishes from sibling tools like 'hetzner_apply_firewall' (which applies to servers) and 'hetzner_update_firewall' (likely for other attributes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives. It does not state when not to use it, nor does it mention the relationship to other firewall-related tools like 'hetzner_get_firewall' or 'hetzner_update_firewall'. Users must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_set_zone_rrset_recordsSet DNS Zone RRSet RecordsADestructiveIdempotent
Replace the full list of records in an RRSet. Existing records not in the payload are removed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| records | Yes | Full replacement list of records for this RRSet | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description earns credit by adding the specific destructive detail — exactly what gets removed (existing records not in the payload) — which explains the idempotent full-sync semantics. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The primary action is front-loaded, and the destructive consequence is stated immediately in the second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, all-required mutation with no output schema, the description captures the essential semantics: full replacement and destructive removal. Minor gaps exist — no mention of response behavior, prerequisites like zone existence, or how TTL/protection interact — but the schema and annotations carry the remaining burden 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 100%, so the schema already documents all four parameters, including 'records' as a 'Full replacement list'. The description reinforces this by stating the consequence of the records payload (removal of omitted entries), adding marginal meaning beyond the schema but not compensating for anything missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Replace' is specific, the resource is clearly identified ('the full list of records in an RRSet'), and the second sentence ('Existing records not in the payload are removed') sharply differentiates this from siblings like hetzner_add_zone_rrset_records and hetzner_remove_zone_rrset_records. An agent can distinguish this tool without inspecting other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'full list' and 'removed' phrasing implies this is for wholesale replacement rather than incremental changes, but the description never names alternatives or states when not to use it. Given siblings add_zone_rrset_records, remove_zone_rrset_records, and update_zone_rrset_records exist, explicit routing guidance would be valuable; the tool leaves it to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_shutdownShutdown ServerADestructive
Send an ACPI shutdown signal for a graceful OS shutdown.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context that the shutdown is graceful and via ACPI, beyond the destructiveHint annotation. However, it does not mention potential outcomes (e.g., if server is already off, or OS ignores ACPI).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with action and resource, no redundant words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no return value description, the description is adequate for a simple action but could mention the response (e.g., action object) for completeness.
Complex tools with many parameters or behaviors need more documentation. 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 described in the schema as 'Server ID'. The description adds no extra meaning about how to obtain or format the ID, and schema coverage is 100%, so 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?
The description clearly states a specific verb ('Send an ACPI shutdown signal') and resource ('graceful OS shutdown'), distinguishing it from sibling power tools like power_off (hard power off) and reboot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for a graceful shutdown via ACPI but does not explicitly compare to alternatives like power_off or reset, nor state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_unassign_floating_ipUnassign Floating IPADestructiveIdempotent
Unassign a floating IP from the server it is currently assigned to.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds little beyond stating the action, but is consistent and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It is concise and front-loaded with the key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately explains the action. It could mention that the floating IP must be currently assigned, but it is implied.
Complex tools with many parameters or behaviors need more documentation. 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 coverage and a single parameter 'id', the schema already documents it. The description adds no additional meaning to the 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 clearly states the verb 'unassign', the resource 'floating IP', and the context 'from the server it is currently assigned to', distinguishing it from sibling tools like 'assign_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?
The description implies when to use (when a floating IP is assigned to a server), but lacks explicit guidance on when not to use or mention of alternatives like 'assign_floating_ip' for reassignment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_unassign_primary_ipUnassign Primary IPBDestructiveIdempotent
Unassign a primary IP from the server it is currently assigned to.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=true. Description adds no further behavioral context beyond 'unassign', which is already implied by the 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?
Single efficient sentence with no wasted words. Perfectly 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 simple unassign action with one parameter and no output schema, the description is adequate. Could mention that the IP becomes available, but not necessary.
Complex tools with many parameters or behaviors need more documentation. 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 with schema coverage 100%. Description does not add meaning beyond the schema's 'Primary IP 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?
Description clearly states the action (unassign) and resource (primary IP from server). However, it does not distinguish between primary IP and floating IP assignments, especially given sibling tools like unassign_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?
No guidance on when to use this tool versus alternatives like unassign_floating_ip, nor any prerequisites or consequences beyond the base action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_certificateUpdate CertificateBIdempotent
Update a certificate name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| name | No | New name for the certificate | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false), non-destructiveness (destructiveHint=false), and idempotency (idempotentHint=true). The description adds no behavioral context beyond the annotations, such as permission requirements, side effects, or response 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 a single sentence of 5 words, extremely concise. While it efficiently conveys the core purpose, it could include more context without becoming verbose. It is front-loaded but lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 simplicity of the tool (3 parameters, no output schema) and existing annotations, the description is minimally adequate. However, it omits details about return values, validation constraints, or typical usage patterns that would aid an agent in understanding the tool's full 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 100%, so the description's mention of 'name or labels' aligns with the schema parameters. However, the description does not add new semantic information beyond what the schema provides, meriting a baseline score of 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?
The description 'Update a certificate name or labels' clearly states the verb (Update) and the resource (certificate), and specifies the updatable fields (name or labels). This is distinct from siblings like create_certificate or delete_certificate, providing clear purpose 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?
No guidance is provided on when to use this tool versus alternatives, such as hetzner_get_certificate for inspection or hetzner_create_certificate for new ones. There is no mention of prerequisites, exclusions, or context, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_firewallUpdate FirewallAIdempotent
Update a firewall name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| name | No | New name for the firewall | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-readonly, non-destructive, idempotent, open world. The description adds nothing beyond stating the updatable fields. No behavioral details like whether labels merge or replace.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, zero waste. Efficiently conveys the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 update with 3 parameters and no output schema, the description is minimally adequate. However, it omits details like whether labels are appended or replaced, which could affect usage.
Complex tools with many parameters or behaviors need more documentation. Simple 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 clear descriptions for each parameter. The description 'Update a firewall name or labels' adds no new 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 clearly states 'Update a firewall name or labels,' specifying the exact fields affected. It distinguishes from sibling tools like set_firewall_rules, which updates rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 vs. alternatives (e.g., set_firewall_rules for rules). The agent must infer context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_floating_ipUpdate Floating IPAIdempotent
Update a floating IP's name, description, or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Floating IP ID | |
| name | No | New name | |
| labels | No | Labels as key-value pairs | |
| description | No | New description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (write), destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds no further context beyond 'update', such as whether it merges or replaces labels or if partial updates are allowed. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is succinct, front-loaded with the core action, and contains no unnecessary words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description does not clarify return values (e.g., updated floating IP object). Given the tool's simplicity and full parameter coverage, the description is adequate but leaves out behavioral details like idempotency implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% coverage with descriptions for all four parameters (id, name, description, labels). The description merely restates these fields without adding new semantics, meeting the baseline expectation but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain 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 'Update a floating IP's name, description, or labels' clearly specifies the verb (update) and resource (floating IP), and explicitly lists the modifiable fields, distinguishing it from sibling tools like hetzner_change_floating_ip_protection and hetzner_change_floating_ip_rdns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives (e.g., for changing protection or RDNS), nor does it mention prerequisites or constraints. Usage is only implied by the tool's name and fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_imageUpdate ImageAIdempotent
Update an image's description, type, or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Image ID | |
| type | No | Image type (only snapshot allowed for conversion) | |
| labels | No | Labels as key-value pairs | |
| description | No | New image description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond the annotations. Annotations already indicate the operation is idempotent and non-destructive. The description lacks details such as whether updates are partial or how labels are merged, which would provide further transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (one sentence, 8 words) and front-loaded with the action and resource. It could be slightly more informative (e.g., 'Partially update an image's metadata fields'), but it is efficient and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 description is adequate for a simple update operation with good annotations and schema coverage. However, it does not explain that updating the type parameter converts the image to a snapshot, or that labels are replaced entirely, leaving some gaps for an agent to understand full 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?
The input schema already provides full descriptions for all parameters (100% coverage). The description merely lists the fields without adding new meaning or clarifying nuances 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 clearly states the action (update) and the resource (image) along with the specific attributes that can be modified (description, type, labels). It effectively distinguishes from sibling tools like get_image, delete_image, and change_image_protection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 implicitly guides usage by listing the modifiable fields, but it does not explicitly state when to use this tool versus alternatives (e.g., change_image_protection). However, the specificity of the resource and attributes makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_lb_serviceUpdate Load Balancer ServiceBIdempotent
Update an existing service on a load balancer.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| http | No | HTTP-specific service settings | |
| protocol | Yes | Service protocol: tcp, http, or https | |
| listen_port | Yes | Port the load balancer listens on | |
| health_check | No | Health check configuration | |
| proxyprotocol | No | Enable PROXY protocol | |
| destination_port | Yes | Port traffic is forwarded to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds 'Update', which implies mutation, consistent with readOnlyHint=false. However, it does not elaborate on behavioral traits like partial update semantics or the effect of calling with minimal parameters. The description adds minimal value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: 'Update an existing service on a load balancer.' Every word is necessary and no filler. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects for health_check and http) and lack of output schema, the description is too minimal. It does not explain that it performs a partial update, that required parameters (id, protocol, listen_port, destination_port) must always be provided, or how nested fields are handled. A more detailed description is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. 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 all parameters. The description does not provide additional parameter-level meaning beyond what the schema already offers. The baseline of 3 is appropriate as the schema carries 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?
The description clearly states the action ('Update') and the resource ('an existing service on a load balancer'), which precisely matches the tool name. It effectively distinguishes from sibling tools like 'hetzner_add_lb_service' (add) and 'hetzner_delete_lb_service' (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus other alternatives. It does not mention prerequisites (e.g., load balancer must exist), nor does it clarify that this modifies an existing service, not creates one. No explicit when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_load_balancerUpdate Load BalancerBIdempotent
Update a load balancer name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| name | No | New name for the load balancer | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true, readOnlyHint=false, and destructiveHint=false, so the description need not repeat those. The description adds minimal behavioral context (it updates mutable fields). It does not mention side effects, prerequisite existence of the load balancer, or any behavioral constraints beyond what annotations convey. Acceptable but not enhanced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. It is concise and free of superfluous information. However, it could be slightly more informative without losing conciseness, such as noting that only these two fields are modifiable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 large number of sibling tools (many with 'update' or 'change' in names), the description should clarify how this tool fits into the workflow. It does not mention that other aspects require separate change tools, nor does it describe the return value (no output schema). The description is insufficient for an agent to fully understand the tool's place among alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% description coverage for all 3 parameters. The description reiterates that the tool updates 'name or labels', which is already evident from parameter names and descriptions. It adds no new semantic meaning beyond summarizing the intent. Baseline for full schema coverage is 3; no extra credit given.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'Update' and resource 'load balancer', and specifies 'name or labels'. This distinguishes it from other update-like tools such as 'hetzner_change_load_balancer_protection' which focus on other attributes. However, it does not explicitly exclude updating other aspects, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives. It does not mention that other changes (e.g., protection, algorithm) require different tools like 'hetzner_change_load_balancer_protection' or 'hetzner_change_lb_type'. The agent receives no when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_networkUpdate NetworkAIdempotent
Update properties of a network such as name, labels, or vSwitch route exposure.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Resource ID | |
| name | No | New name for the network | |
| labels | No | Labels as key-value pairs | |
| expose_routes_to_vswitch | No | Whether to expose routes to the vSwitch |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and non-destructive behavior. The description adds context by naming the updatable fields (name, labels, expose_routes_to_vswitch), which informs the agent about what modifications are possible. It does not mention preconditions or side effects, but given the annotations, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, listing key properties. No unnecessary words; every part contributes to 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?
For a simple update tool with four parameters (one required), the description adequately states what can be updated. No output schema exists, but the return value is not critical for an idempotent update. Could mention that changes are applied immediately, but overall 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?
Schema coverage is 100%, so the schema already documents all parameters. The description mentions three of the four parameters (name, labels, expose_routes_to_vswitch) by purpose but does not add additional meaning beyond what the schema descriptions 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 clearly states 'Update properties of a network such as name, labels, or vSwitch route exposure.' It specifies the verb 'update' and the resource 'network', and lists the specific modifiable properties, distinguishing it from create/delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 when to use this tool (to modify existing network properties) but does not explicitly state when not to use it or suggest alternatives. Sibling tools like change_network_protection exist, but no guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_placement_groupUpdate Placement GroupBIdempotent
Update a placement group's name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Placement group ID | |
| name | No | New placement group name | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and readOnlyHint=false, so the mutation behavior is understood. Description adds no additional behavioral context beyond what annotations provide, so a baseline score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no unnecessary words. Extremely concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 the description does not mention return values. However, for a simple update operation, the description is adequate though not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple 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 descriptions for all parameters. The description reiterates 'name or labels' but adds no new meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool updates a placement group's name or labels, with a specific verb and resource. It distinguishes from create/delete placement group tools but not from other update tools, though the resource is 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?
No guidance on when to use this vs other tools like create_placement_group or delete_placement_group. No context on prerequisites, when the tool is appropriate, or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_primary_ipUpdate Primary IPAIdempotent
Update a primary IP's name, auto_delete setting, or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Primary IP ID | |
| name | No | New name | |
| labels | No | Labels as key-value pairs | |
| auto_delete | No | Delete the primary IP when the assignee is deleted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as not read-only, not destructive, idempotent, and open world. The description does not add behavioral context beyond the annotation traits; it focuses on the fields rather than side effects or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and modifiable fields. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple update tool with 4 parameters (1 required) and no output schema, the description covers the purpose and fields. It lacks mention of return values or permissions, but annotations compensate for safety traits.
Complex tools with many parameters or behaviors need more documentation. Simple 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 per-parameter descriptions. The description lists the same fields (name, auto_delete, labels) but does not add new meaning beyond the schema. It essentially restates existing information.
Input schemas describe structure but not intent. Descriptions should explain 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 the verb 'Update' and the resource 'primary IP', and lists the specific modifiable fields (name, auto_delete, labels). This distinguishes it from sibling update tools and change 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 description implies usage for updating name, auto_delete, or labels, but does not explicitly state when to use this tool versus alternative change tools (e.g., hetzner_change_primary_ip_protection). No exclusions or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_serverUpdate ServerAIdempotent
Update a server's name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Server ID | |
| name | No | New server name | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not read-only (readOnlyHint=false) and not destructive (destructiveHint=false), and the description adds 'update' which aligns. However, it does not disclose additional behavioral traits such as whether the update triggers side effects (e.g., reboot) or requires specific 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 description is a single, efficient sentence with no wasted words. It is front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata update tool, the description is adequate but not complete. It does not mention that updating labels is optional, that the id is required, or any potential effects. It relies on the schema for parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter. The description reiterates that 'name or labels' can be updated, but does not add new 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 the tool updates a server's name or labels, which is a specific verb and resource. It clearly distinguishes from sibling tools like hetzner_resize_server or hetzner_rebuild_server by specifying the exact fields that can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives. It does not mention prerequisites, exclusions, or compare with other update operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_ssh_keyUpdate SSH KeyAIdempotent
Update an SSH key's name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SSH key ID | |
| name | No | New SSH key name | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false) and idempotency. The description adds no additional behavioral context (e.g., return value, error states) beyond the annotations, meeting the baseline for adequate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the essential purpose without any superfluous 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?
Given the schema and annotations, the description is mostly complete for an update tool. However, it does not mention idempotency or what happens if the key does not exist, though annotations cover idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple 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 each parameter having a description. The tool description ('name or labels') aligns with these but adds no extra meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and the resource ('SSH key'), and specifies the editable fields ('name or labels'). This distinguishes it from sibling tools like create, delete, get, and list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 for modifying existing keys but does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_storage_boxUpdate Storage BoxAIdempotent
Update the name and/or labels of a Storage Box.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| name | No | New name for the Storage Box | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true (idempotent) and destructiveHint=false. The description adds that only name/labels are updated, which is consistent but does not elaborate on behavior like partial updates or response. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 9 words, highly concise and front-loaded. Every word is necessary and adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations and full schema coverage, the description is adequate but minimal. It does not mention return values or idempotency, though annotations cover some behavioral context. For a simple update tool, it is sufficient but not enriched.
Complex tools with many parameters or behaviors need more documentation. Simple 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%; each parameter already has a clear description. The tool description adds no further semantic meaning beyond the schema, so 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 clearly specifies the verb 'Update' and the resource 'Storage Box', and explicitly lists the modifiable fields 'name and/or labels'. This distinguishes it from sibling tools like 'hetzner_update_storage_box_access_settings', which update different properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the tool is for updating name and labels, but there is no explicit guidance on when to use it versus alternatives (e.g., 'hetzner_update_storage_box_access_settings' for access properties), nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_storage_box_access_settingsUpdate Storage Box Access SettingsAIdempotent
Update which access protocols (SSH, Samba, WebDAV, ZFS, external reachability) are enabled on a Storage Box.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| ssh_enabled | No | Whether SSH/SFTP/SCP access is enabled | |
| zfs_enabled | No | Whether the ZFS snapshot directory is exposed | |
| samba_enabled | No | Whether Samba/CIFS access is enabled | |
| webdav_enabled | No | Whether WebDAV access is enabled | |
| reachable_externally | No | Whether the Storage Box is reachable from outside the Hetzner network |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate idempotentHint=true and destructiveHint=false, but the description does not add context beyond 'update'. It does not mention side effects (e.g., whether disabling a protocol closes active connections), authorization needs, or that changes are applied immediately. However, it does not contradict annotations and provides minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action, and efficiently lists the relevant protocols. No redundant words or unnecessary explanations. Every part of the description is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's moderate complexity (6 parameters, all booleans plus ID), the description is sufficient for an agent to understand the purpose. The schema handles parameter details. No output schema exists, but update tools typically return confirmation. The description does not mention return values, but annotations (idempotentHint) imply predictable behavior. Completness is slightly reduced by lacking mention of the required 'id' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented with clear semantics (e.g., boolean for each protocol). The description reaffirms the protocols but adds no additional meaning beyond the schema. Baseline score of 3 is appropriate as the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain 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 the action (update) and the resource (storage box access settings). It enumerates the specific protocols (SSH, Samba, WebDAV, ZFS, external reachability) that can be toggled, making the tool's purpose unambiguous. While sibling tools like hetzner_update_storage_box or hetzner_update_storage_box_subaccount_access_settings exist, this description differentiates by focusing on access protocols.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 is provided on when to use this tool versus alternatives. For example, there is no mention of when to use hetzner_update_storage_box (which updates other box settings) or hetzner_change_storage_box_protection. The description does not specify prerequisites, not-to-use conditions, or recommended contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_storage_box_snapshotUpdate Storage Box SnapshotAIdempotent
Update the description and/or labels of a Storage Box snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| labels | No | Labels as key-value pairs | |
| description | No | New description for the snapshot | |
| snapshot_id | Yes | Snapshot ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotent and open world hints. Description states 'update', consistent with non-destructive mutation. No additional behavioral details like effect on existing labels.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 11 words, directly states purpose. No redundant 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?
Minimal but sufficient given schema and annotations. Lacks mention of response or required permissions, which are not critical for a simple update.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions. The description only names 'description and/or labels', adding no extra 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 clearly states the tool updates snapshot metadata (description and/or labels). It distinguishes from sibling tools like create and delete snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use, prerequisites, or when not to use. Missing context such as 'only use if snapshot exists' or alternative for content changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_storage_box_subaccountUpdate Storage Box SubaccountBIdempotent
Update the name, description, and/or labels of a Storage Box subaccount.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| name | No | New display name for the subaccount | |
| labels | No | Labels as key-value pairs | |
| description | No | New description for the subaccount | |
| subaccount_id | Yes | Subaccount ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not contradict annotations (readOnlyHint: false, destructiveHint: false, idempotentHint: true). It adds minimal value beyond the annotations, merely stating the action without detailing idempotency or partial update behavior. The annotations already cover safety and idempotency, so the description's lack of elaboration is acceptable but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose. Every word is informative, with no unnecessary repetition or filler. It efficiently communicates the tool's action and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool's 5 parameters (2 required), lack of output schema, and no return value description, the description is incomplete. It does not explain that it performs a partial update (only provided fields are changed), any prerequisites, or what the response indicates (e.g., success or updated object). More context is needed for an agent to use 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%, with each parameter having a description. The tool description lists the fields but adds no extra information beyond the schema, such as constraints or formatting rules. Baseline score of 3 is appropriate given 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 clearly states the verb 'Update' and the resource 'Storage Box subaccount', listing the specific fields affected (name, description, labels). This distinguishes it from sibling tools like hetzner_change_storage_box_subaccount_home_directory and hetzner_update_storage_box_subaccount_access_settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention that it is for updating basic metadata only, nor does it exclude other operations like home directory changes or access settings, leaving the agent to infer 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.
hetzner_update_storage_box_subaccount_access_settingsUpdate Storage Box Subaccount Access SettingsAIdempotent
Update the access settings (read-only, SSH, Samba, WebDAV, external reachability) of a Storage Box subaccount.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Storage Box ID | |
| readonly | No | Whether the subaccount has read-only access | |
| ssh_enabled | No | Whether SSH/SFTP/SCP access is enabled for the subaccount | |
| samba_enabled | No | Whether Samba/CIFS access is enabled for the subaccount | |
| subaccount_id | Yes | Subaccount ID | |
| webdav_enabled | No | Whether WebDAV access is enabled for the subaccount | |
| reachable_externally | No | Whether the subaccount is reachable from outside the Hetzner network |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is a write operation (readOnlyHint=false), not destructive, idempotent, and open-world. The description adds context by listing the settings, but it does not disclose additional behavioral traits such as whether partial updates are supported, whether subaccount must exist, or any side effects. With annotations present, the description provides adequate but not enhanced transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 17 words, front-loaded with action and resource. It efficiently enumerates the adjustable settings without redundancy or unnecessary 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?
The tool has 7 parameters, no output schema, and annotations. The description explains the purpose and lists settings, but it does not clarify that optional parameters retain their values if not provided, nor does it hint at the response format. While schema coverage is full, the brief description leaves some contextual gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The tool description merely lists the same settings without adding new meaning. Baseline 3 applies as the description adds no additional value 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 clearly specifies the verb 'update' and the resource 'access settings of a Storage Box subaccount', listing the exact settings (read-only, SSH, Samba, WebDAV, external reachability). It effectively distinguishes this tool from siblings like 'hetzner_update_storage_box_access_settings' and 'hetzner_update_storage_box_subaccount' by targeting subaccount access settings specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 explicit guidance on when to use this tool versus alternatives, no prerequisites, and no exclusion criteria. Given the large sibling list, scenarios where this tool is appropriate are implied but not stated, leaving the agent without clear decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_volumeUpdate VolumeAIdempotent
Update a volume's name or labels.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Volume ID | |
| name | No | New volume name | |
| labels | No | Labels as key-value pairs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is not destructive (destructiveHint=false) and idempotent. The description adds no further 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 description is a single, clear sentence that gets straight to the point with no extraneous 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?
Given annotations and simple operation, the description is fairly complete. However, it could note that updating labels is non-destructive and reversible, but annotations already cover 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?
The description mentions 'name or labels', but the schema already covers all parameters with descriptions (100% coverage). The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Update' and the resource 'volume's name or labels', distinguishing it from sibling tools like resize, attach, or delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description does not differentiate from alternatives like deleting and recreating a volume with new labels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_zoneUpdate DNS ZoneAIdempotent
Update a DNS zone's labels. Other zone properties are managed via dedicated change_* action tools.
| Name | Required | Description | Default |
|---|---|---|---|
| labels | No | Labels as key-value pairs | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, which align with the description. However, the description does not add any behavioral details beyond what annotations provide, e.g., whether labels are merged or replaced.
Agents need to know what a tool does to the 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 consists of only two sentences, each serving a clear purpose: first stating the action, second providing usage boundaries. It is succinct and well-structured with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (only updating labels) and the presence of clear annotations and schema, the description is complete. It effectively tells the agent what the tool does and what it doesn't do, avoiding the need for additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters adequately. The description mentions 'labels' but adds no extra meaning beyond the schema. Thus, 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 explicitly states 'Update a DNS zone's labels.' It uses a specific verb ('Update') and resource ('DNS zone') with a clear scope ('labels'). It also distinguishes from siblings by noting that other properties are managed via dedicated change_* 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 description provides explicit guidance: 'Other zone properties are managed via dedicated change_* action tools.' This tells the agent when not to use this tool and directs it to alternatives, which is excellent for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_zone_rrsetUpdate DNS Zone RRSetAIdempotent
Update an RRSet's labels. Records and TTL are managed via dedicated action tools.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| labels | No | Labels as key-value pairs | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true. The description adds that only labels are updated and that records/TTL are not touched, which is useful but limited. It doesn't describe side effects like whether the RRSet must exist, permission requirements, or response behavior. The description adds some context beyond annotations but not rich behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action and immediately clarifies scope. It contains no filler and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (update labels) and the completeness of the schema, the description adequately covers what an agent needs to decide to use it and what it does. It explains that records and TTL are managed separately, preventing misuse. There's no output schema, but the description doesn't need to explain return values. It could mention that labels are optional in the schema, but that's not essential 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 fully documents each parameter: name, type, labels, and id_or_name. The description does not add any additional meaning about the parameters themselves. Per the rubric, baseline 3 is appropriate when schema coverage is high and the description contributes no extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Update an RRSet's labels.' It specifies the resource (RRSet) and the specific aspect (labels), which distinguishes it from other RRSet-related tools like record management or TTL changes. The phrase 'Records and TTL are managed via dedicated action tools' further clarifies its narrow 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?
The description implicitly indicates when to use this tool: when you need to update labels only, and points out that records and TTL are handled elsewhere. It doesn't name the specific alternative tools, but the context is clear. This provides adequate usage guidance, though naming the tools would make it more explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hetzner_update_zone_rrset_recordsUpdate DNS Zone RRSet Record CommentsAIdempotent
Update the comment on existing records in an RRSet (matched by value). The comment field is always sent — use an empty string to clear.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | RRSet name | |
| type | Yes | DNS record type (A, AAAA, CNAME, MX, NS, TXT, etc.) | |
| records | Yes | Records to update | |
| id_or_name | Yes | Zone ID or name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, idempotent, non-destructive mutation. The description adds behavior beyond that: records are matched by existing value, only the comment field is affected, and an empty string clears the comment. This gives the agent useful expectations about what the operation 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?
Two short, information-dense sentences. The core behavior is stated first, and the important always-sent/clearing nuance is included without redundancy or 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 focused comment-update operation with fully documented schema parameters, the description is complete enough for an agent to understand the operation, matching semantics, and clearing behavior. It does not describe response/return values, but no output schema exists and the operation is narrow enough that this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters and their semantics. The description reinforces the value-matching behavior and the empty-string-to-clear rule, but does not add substantial meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') and resource ('comment on existing records in an RRSet'), and critically adds the matching criterion 'matched by value', which distinguishes it from related siblings like set_zone_rrset_records, add_zone_rrset_records, and remove_zone_rrset_records. An agent can tell exactly what this tool does and what it does not do.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 usage context: it targets existing records matched by value, and it explains that the comment field is always sent, with an empty string to clear. It does not explicitly name when-not-to-use alternatives, but the 'existing records' and 'comment only' framing makes the intended scope clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action, with clear descriptions. Despite the large number, there is no ambiguity due to the consistent resource-specific naming (e.g., change_server_protection vs change_volume_protection).
All tools follow the pattern `hetzner_<verb>_<resource>` with predictable verbs like create, delete, get, list, update, change, set, etc. The minor variation between 'add' and 'remove' vs 'create' and 'delete' is contextually appropriate and consistent.
With 156 tools, the server far exceeds the typical well-scoped range of 3-15 tools. The extreme number makes it overwhelming for agents to navigate and select the correct tool, even with good naming.
The tool set covers all major Hetzner Cloud and DNS resources comprehensively, including full CRUD, actions, metrics, protection toggles, and special operations. There are no obvious gaps for the advertised domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for DNSimple — domains, DNS zone records, availability, pricing and contacts.
MCP server for Superserve sandboxes: create, exec, and manage Firecracker microVMs
Related MCP Servers
- AlicenseAqualityDmaintenanceA Model Context Protocol server that allows language models to manage Hetzner Cloud resources through structured functions, including servers, volumes, firewalls, and SSH keys.30135MIT
- AlicenseCqualityDmaintenanceA Model Context Protocol server for the Hetzner Cloud API that enables natural language management of cloud infrastructure. Users can list, create, and modify servers, networks, volumes, and load balancers through MCP-compatible clients.6717MIT
- AlicenseNot gradedqualityCmaintenanceOpen-source MCP server for managing Hetzner Cloud infrastructure with two management layers: * Layer 1 — Hetzner Cloud API (35 tools): Server power control, metrics, snapshots, backups, firewalls, DNS zones and records, rescue mode, server rebuild and rescale. Works even when the server OS is unresponsive. * Layer 2 — SSH (25 tools): Service management (systemd), Nginx config and reload,MIT
- 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lazyants/hetzner-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server