Skip to main content
Glama
ionos-cloud

IONOS CLOUD MCP Server

Official
by ionos-cloud

Official IONOS Cloud Apache 2.0 Go reference

Alt text

IONOS CLOUD MCP Server

A read-only-by-default Model Context Protocol (MCP) server that connects your IONOS CLOUD account to any MCP-compatible AI assistant or autonomous AI agent: Claude Desktop, Cursor, VS Code (GitHub Copilot), Windsurf, Cline, Continue, OpenCode, and 5+ others. 118 read-only tools across 7 IONOS CLOUD products — list, inspect, and audit your infrastructure through natural-language prompts or programmatic agentic loops. Write operations across Compute (servers, volumes, networking, load balancing), Managed Kubernetes (clusters, node pools, nodes), DNS (zones, records, reverse records, DNSSEC) and Certificate Manager (certificates, auto-certificates, providers) are strictly opt-in and create real, billable resources — see Write operations.

Built and maintained by the IONOS Cloud team. The server runs as a local binary on your workstation, a CI runner, or inside a container. IONOS CLOUD API calls go directly to IONOS over HTTPS; no third-party AI provider sits in the data path.

Compatibility: MCP spec 2024-11-05 · Go 1.25+ for builds · OCI images for linux/amd64 and linux/arm64.

📚 Full product documentation, per-client setup guides, FAQ, and tutorials: docs.ionos.com/cloud/ai/mcp-server

Get started in 60 seconds (macOS or Linux, via Homebrew):

brew install ionos-cloud/ionos-cloud/ionoscloud-mcp

For other install paths (Docker, pre-built binary, go install, source), see Installation.

Why

  • Read-only by default, writes strictly opt-in — out of the box every tool is an inspection operation (list_*, get_*, head_*), so it's safe to connect to production accounts and to deploy inside unattended agent loops on CI runners. Write tools (create_*, update_*, delete_*) register only when you set IONOS_MCP_TOOL_SCOPE, and even then every create and delete requires a two-phase confirmation (preview → one-time token → execute). See Write operations.

  • Local binary, no proxy — IONOS CLOUD API calls go directly from your machine to IONOS Cloud. No third-party AI vendor in the data path.

  • EU-sovereign option — pair the server with the IONOS CLOUD AI Model Hub and both the API calls and the LLM inference terminate inside IONOS's German data centres. See the Fully Sovereign AI Workflow guide.

  • Open source — Apache 2.0. Read the source, audit the behaviour, contribute, or fork.

Related MCP server: incus-mcp

Registries & Directories

This server is published across multiple MCP registries and IDE marketplaces:

Registry

Link

Official MCP Registry

io.github.ionos-cloud/ionoscloud-mcp

Smithery

ionos-cloud/ionoscloud-mcp

mcp.so

ionos-cloud-mcp-server

Glama

ionoscloud-mcp

Cursor

ionoscloud-mcp

mcpservers.org

ionoscloud-mcp

PulseMCP

ionoscloud

MCPMarket

ionos-cloud

punkpeye/awesome-mcp-servers

ionos-cloud/ionoscloud-mcp

Supported products

Read tools are named list_*, get_* and head_*; the opt-in write tools are create_*, update_*, delete_* plus domain verbs such as start_* and attach_*. In the default eager mode all tools register at startup; lazy mode defers Compute and Object Storage behind loader tools; dynamic mode exposes only three search/describe/call meta-tools for clients with hard tool caps. See Tool loading mode.

Product

Tools

Capabilities

Compute Engine

50 + 69 write

Data centers, servers, volumes, NICs, LANs, firewall rules, IP blocks, load balancers (basic / network / application), NAT gateways, security groups, private cross-connects, snapshots, images, templates, locations, requests, contract

Kubernetes

8 + 8 write

Clusters, node pools, nodes, available versions

Object Storage

23

Buckets, bucket configuration (CORS, encryption, lifecycle, policy, public access block, replication, tagging, versioning, Object Lock), objects, access keys, regions

DNS

14 + 16 write

Zones, zone files (+ BIND import), records, reverse records, secondary zones (+ zone transfer), DNSSEC, quota

Billing

15

Profile, invoices, EVN (provisioning intervals), traffic, usage, utilization, product pricing catalog, FOCUS v1.3 spec

Certificate Manager

6 + 8 write

Certificates, auto-certificates, providers

Activity Log

2

Contracts, events

118 read-only tools, plus 101 opt-in write tools on Compute Engine, Kubernetes, DNS and Certificate Manager — see Write operations. For per-tool input/output schemas, see the per-product docs or the full Tool Reference at docs.ionos.com.

Installation

Pick whichever fits your workflow.

brew install ionos-cloud/ionos-cloud/ionoscloud-mcp

Docker (linux/amd64, linux/arm64)

docker pull ghcr.io/ionos-cloud/ionoscloud-mcp:latest

Run with the MCP stdio transport (default):

docker run -i --rm \
  -e IONOS_TOKEN="$IONOS_TOKEN" \
  ghcr.io/ionos-cloud/ionoscloud-mcp

Or over HTTP (see Wire transport):

docker run --rm -p 8080:8080 \
  -e IONOS_TOKEN="$IONOS_TOKEN" \
  ghcr.io/ionos-cloud/ionoscloud-mcp --transport http --http-addr :8080

Smithery

npx -y @smithery/cli install @ionos-cloud/ionoscloud-mcp --client claude-desktop

Supported --client values: claude-desktop, claude-code, cursor, vscode, windsurf, cline, continue, gemini-cli, kiro, and others. See the Smithery listing for the current list.

Pre-built binary

Download the archive for your OS/arch from the latest release. Available for Linux, macOS, and Windows on both amd64 and arm64.

go install

go install github.com/ionos-cloud/ionoscloud-mcp@latest

From source

git clone https://github.com/ionos-cloud/ionoscloud-mcp.git
cd ionoscloud-mcp
make build

Configuration

You need an IONOS CLOUD account with API credentials.

# Required: API token for control-plane APIs (Compute, DNS, Billing, Certificate Manager, Object Storage management)
export IONOS_TOKEN="your-api-token"

# Optional: only required if you use Object Storage data-plane tools
# (listing objects, reading bucket configuration, checking access keys).
export IONOS_S3_ACCESS_KEY="your-s3-access-key"
export IONOS_S3_SECRET_KEY="your-s3-secret-key"

# Optional: opt in to write operations (default: read-only). Values are hierarchical,
# so a single level suffices: "write" allows create/update; "destructive" also allows
# delete (it implies "write"). See "Write operations".
# export IONOS_MCP_TOOL_SCOPE="write"

Generate a token in the IONOS CLOUD DCD under Management → Token Management. Object Storage credentials are created under Storage & Backup → IONOS CLOUD Object Storage → Key management.

For least-privilege token scoping, see Authentication at docs.ionos.com.

Integrating with an MCP client (manual)

Add the server to your AI client's MCP config:

{
  "mcpServers": {
    "ionoscloud": {
      "command": "/path/to/ionoscloud-mcp",
      "env": {
        "IONOS_TOKEN": "your-api-token",
        "IONOS_S3_ACCESS_KEY": "your-s3-access-key",
        "IONOS_S3_SECRET_KEY": "your-s3-secret-key"
      }
    }
  }
}

The Object Storage credentials are only needed if you plan to use Object Storage tools.

Per-client setup guides for the 12 supported AI clients: Connect to an AI Client at docs.ionos.com.

Tool loading mode

The load mode selects how tools are exposed. Set it with either the --load-mode flag or the IONOS_MCP_LOAD_MODE environment variable; the flag wins if both are set, and otherwise the default is eager. Parsing is case-insensitive.

  • eager (default): all tools register at startup. Recommended for Claude Code (which defers full schemas client-side via ToolSearch, paying ~1–3k tokens for names only) and the only working mode for clients that ignore notifications/tools/list_changed (Claude Desktop, claude.ai connectors, Claude in Chrome, Smithery scanner).

  • lazy: Compute and Object Storage register only on demand. Two sentinel tools (ionos_load_compute_tools, ionos_load_objectstorage_tools) appear at startup; calling either registers the full product set and emits notifications/tools/list_changed. Use only if your MCP client honours that notification AND lacks client-side schema deferral — otherwise eager mode is cheaper.

  • dynamic (alias: search): the server exposes only three meta-tools — ionos_search_tools, ionos_describe_tools and ionos_call_tool — and the model discovers and invokes the full catalogue through them at runtime. The real tool list never changes, so unlike lazy this needs no notifications/tools/list_changed support. Intended for clients with hard tool caps and no tool search of their own (e.g. Cursor's ~40-tool cap, Windsurf's 100). Trade-off: the model must searchdescribecall rather than seeing tools directly, costing extra round-trips, so prefer eager on Claude Code.

The server logs the effective mode and its source (flag / env / default) to stderr at startup, e.g. load mode: dynamic (source: --load-mode flag).

{
  "mcpServers": {
    "ionoscloud": {
      "command": "/path/to/ionoscloud-mcp",
      "args": ["--load-mode", "dynamic"],
      "env": {
        "IONOS_TOKEN": "your-api-token"
      }
    }
  }
}

Tool-count limits: Windsurf caps connected MCP servers at 100 tools combined; Cursor caps at ~40 across all servers. With the default eager mode the server exceeds both. On Windsurf, lazy keeps the startup surface small enough; on Cursor (or any cap-limited client without its own tool search), use dynamic to present just three tools. For more information, see Selective Tool Loading.

Wire transport

The server speaks stdio by default — the mode every subprocess-spawning MCP client expects (Claude Desktop, Claude Code, Cursor, Windsurf, etc.). For remote or networked deployments (e.g. running the server centrally and pointing multiple clients at it), switch to the Streamable HTTP transport with --transport http or IONOS_MCP_TRANSPORT=http; the flag wins if both are set.

./ionoscloud-mcp --transport http --http-addr :8080
  • --transport <stdio|http> (or IONOS_MCP_TRANSPORT) — selects the transport. Unrecognised values fall back to stdio with a warning.

  • --http-addr <addr> (or IONOS_MCP_HTTP_ADDR) — listen address for the HTTP transport. Default 127.0.0.1:8080 (local-only); use :8080 to listen on all interfaces. Ignored for stdio.

The server logs the effective transport and its source to stderr at startup, e.g. transport: http (source: --transport flag).

In HTTP mode, point your MCP client at http://<host>:<port>/ as a Streamable HTTP server. There is no built-in TLS or authentication for the HTTP endpoint itself — put it behind a reverse proxy (e.g. nginx, Caddy) if it needs to be reachable outside a trusted network. IONOS_TOKEN and the other IONOS CLOUD credentials still authenticate the server's own calls to the IONOS API regardless of transport.

Write operations

The server is read-only until you opt in. Write tools are never registered and never appear in tools/list unless you set the IONOS_MCP_TOOL_SCOPE environment variable. The gate applies in every load mode, including the dynamic dispatcher — there is no bypass.

Scope is a comma-separated, hierarchical set of capabilities (read is always on):

IONOS_MCP_TOOL_SCOPE

Enables

unset / read (default)

read-only (list_*, get_*, head_*)

write

the above + create_*, update_*, and the non-disruptive actions start_, resume_, attach_, assign_

destructive

the above + delete_* and the disruptive actions stop_, reboot_, suspend_, upgrade_, restore_, detach_, recreate_, import_ (implies write)

Unrecognised values fall back to read-only, and the effective scope is logged to stderr at startup. Because the levels are hierarchical, a single value is enough — destructive alone already grants write and read; you don't need to list them all (though a comma-separated list like read,write is also accepted).

What can be written

Area

Resources

Compute

data centers, servers (+ start/stop/reboot/suspend/resume/upgrade), volumes (+ snapshot & restore, attach/detach), NICs, LANs

Networking

IP blocks (reserve and release only), security groups + rules, firewall rules, private cross connects

Load balancing

classic, network and application load balancers + forwarding rules, target groups, NAT gateways + rules

Images

snapshot and image update/delete

Kubernetes

clusters, node pools (scale, upgrade, autoscaling, LANs, labels, annotations, taints), single nodes (recreate, delete)

DNS

primary zones (+ BIND zone-file import), records, secondary zones (+ zone transfer), reverse records, DNSSEC enable/disable

Certificate Manager

auto-certificates, ACME providers, certificate rename/delete — renames only change the name, the rest is immutable. Uploading certificate material is deliberately not offered: it would require passing a private key as a tool argument.

101 tools in total. The server exposes 118 at the default read-only scope, 180 with write, and 219 with destructive. Reads are unaffected and always available.

Two-phase confirmation. Every create_* and delete_*, plus the disruptive actions (stop_, reboot_, suspend_, upgrade_, restore_, detach_, recreate_), is confirmation-gated, along with the DNS zone-file import. The first call performs no mutation: it returns a preview — for a delete, a blast-radius summary of what will be destroyed — plus a single-use confirmation_token (5-minute TTL, bound to that exact target and operation). Only a second call carrying that token executes. This keeps a human in the loop and limits the agent to one resource per call. Reversible single-field changes (update_*, start_, attach_, assign_) are a single call.

Annotations. Write tools carry MCP annotations (readOnlyHint, destructiveHint, idempotentHint) so clients can build their own approval UX — but enforcement is always server-side. Note that the class comes from the operation, not the HTTP verb: stop_server is a POST that is destructive, and import_dns_zone_file is a PUT that replaces every record in a zone.


⚠️ Write operations create real resources and real charges

Enabling IONOS_MCP_TOOL_SCOPE lets an AI model provision billable infrastructure in your live IONOS CLOUD account. Every create is a real resource on a real invoice, effective immediately.

Some resources cost money even when nothing is using them — a reserved IP block, a snapshot, or a volume left behind after its server was deleted. Deletions are equally real: destroyed data is not recoverable without a snapshot, and a released IP address cannot be asked for again.

An AI model decides when and how often to call these tools. It can misread your intent, retry more than you expected, or pick a larger resource than you had in mind. The two-phase confirmation exists to put a human in that loop, but it cannot stop a client configured to approve tool calls automatically — in that setup the model can complete both phases on its own.

You are responsible for everything created, modified or deleted in your account through these tools, and for the resulting charges. IONOS does not control and is not responsible for how a model chooses to call them, or for any cost, data loss or outage arising from those calls.

Reduce the risk: leave the server read-only unless you need writes; grant write rather than destructive when deletion isn't required; require manual approval of tool calls in your client; read the preview before returning a confirmation token; and prefer a non-production account when experimenting.


Enable writes in your MCP client config, for example:

{
  "mcpServers": {
    "ionoscloud": {
      "command": "/path/to/ionoscloud-mcp",
      "env": {
        "IONOS_TOKEN": "your-api-token",
        "IONOS_MCP_TOOL_SCOPE": "destructive"
      }
    }
  }
}

Demo

In Claude Desktop or any other supported client, after configuring the server, try one of these prompts. They cover the kinds of multi-step inspection workflows that are tedious to write as scripts but easy in natural language:

  • Cost audit: "Audit my IONOS CLOUD account, find the top 5 cost-inducing resources this month, and suggest cost-efficiency tips."

  • Security sweep: "List every bucket whose public access block is off or whose policy is public — flag anything that looks unintentional."

  • Audit trail: "Show me every failed API request on my contract in the last 30 days, grouped by user."

  • Forgotten resources: "Find unattached volumes, unused IP blocks, and stopped servers across all my data centers."

  • DNS sanity check: "List all zones on my account and flag any without DNSSEC enabled or with records pointing to IPs I no longer own."

  • Certificate expiry: "Which certificates on my account expire in the next 60 days?"

  • Traffic spike investigation: "My last invoice was higher than usual — show me daily traffic and utilization for the previous billing period and tell me what changed."

  • Onboarding tour: "Walk me through what I have running on IONOS CLOUD — datacenters, servers, storage, DNS — like you're explaining it to a new teammate."

Each prompt chains multiple list_* and get_* calls and produces a summary you can paste into a ticket, dashboard, or doc. For end-to-end walkthroughs:

Development

Testing the MCP protocol locally

You can test the server's MCP protocol implementation using stdin/stdout:

# Initialize and list tools
{
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}}}'
  echo '{"jsonrpc":"2.0","method":"notifications/initialized"}'
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
  sleep 1
} | ./ionoscloud-mcp

# Call a tool (requires a valid IONOS_TOKEN)
{
  echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}}}'
  echo '{"jsonrpc":"2.0","method":"notifications/initialized"}'
  echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_datacenters","arguments":{}}}'
  sleep 1
} | ./ionoscloud-mcp

Building from source

make build
# or
go build -o ionoscloud-mcp .

Run make with no arguments to see the available targets.

Contributing

Issues and pull requests are welcome. For development setup, code style, and testing instructions, see CONTRIBUTING.md. For questions and discussion, use GitHub Discussions.

Security

If you believe you have found a security vulnerability, please do not open a public issue. Report it privately via GitHub's private vulnerability reporting or by email to sdk-tooling@ionos.com. Full policy: SECURITY.md.

Changelog

Notable changes per release are tracked in CHANGELOG.md. For the artefacts published with each tag (Linux/macOS/Windows binaries, multi-arch OCI images), see the GitHub Releases page.

API documentation

For more information about the IONOS CLOUD API:

License

Apache License 2.0 — see LICENSE.

Available Tools

118 tools
get_application_loadbalancerA
Read-only

Get details of a specific application load balancer (ALB)

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center
application_loadbalancer_idYesthe ID of the application load balancer

TDQS

A4/5.0
Behavior3/5

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

The annotation already declares readOnlyHint=true, so the description's 'Get details' is consistent and adds no extra behavioral context (e.g., no mention of what is returned, pagination, or error behavior). It adds minimal value beyond the annotation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero filler. It states exactly what the tool does without unnecessary detail.

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

Completeness4/5

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

For a simple get-by-ID operation with good schema coverage and read-only annotation, the description is adequate. It omits return format but this is typically expected from a get operation and is not critical given the simplicity and no output schema.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for all three parameters (datacenter_id, application_loadbalancer_id, depth). The description adds no parameter-specific information, so it meets the baseline but does not enhance understanding.

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

Purpose5/5

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

The description clearly states the tool retrieves details of a specific application load balancer, distinguishing it from list_application_loadbalancers (which lists all) and get_loadbalancer (different resource). The verb 'Get details' plus resource specificity is unambiguous.

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

Usage Guidelines4/5

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

It's implicit that you use this tool when you have the ALB ID and need a single resource's details. While it doesn't explicitly name alternatives or state when not to use it, the context is clear given the sibling list_application_loadbalancers and the narrow scope of a 'specific' ALB.

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

get_billing_focus_specA

Returns the FOCUS v1.3 column specification and IONOS tool → FOCUS field mappings. Call before mapping IONOS invoice/usage/traffic data to FOCUS format, or when user asks for FOCUS-compliant cost output.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states the tool returns specifications without side effects, but does not detail auth requirements, rate limits, or response size. However, for a read-only specification retrieval, the information 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.

Conciseness5/5

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

Two sentences, zero wasted words. First sentence states what is returned, second sentence gives usage guidance. Front-loaded with key information.

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

Completeness4/5

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

Given no parameters and no output schema, the description is nearly complete. It explains the tool's purpose and when to use it. Could optionally mention the format of the returned spec, but not essential for agent invocation.

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

Parameters4/5

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

With zero parameters, baseline is 4 per rubric. The description adds no parameter information since none exist, and the schema already covers all. No need for additional semantics.

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

Purpose5/5

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

The description clearly states it returns the FOCUS v1.3 column specification and IONOS-to-FOCUS field mappings, distinguishing it from sibling tools that retrieve billing data or resources. The verb 'returns' with specific resource makes 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.

Usage Guidelines4/5

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

The description explicitly says when to call the tool ('before mapping IONOS invoice/usage/traffic data to FOCUS format' or 'when user asks for FOCUS-compliant cost output'). It does not mention when not to use or alternatives, but the context is clear and no sibling tool serves the same purpose.

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

get_billing_invoiceA

Get the detailed line-item breakdown for a specific invoice by ID. Use list_billing_invoices first to find available invoice IDs. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile
invoice_idYesthe invoice ID (e.g. GY00111111)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose permissions, rate limits, output format details, or any side effects. Only states it gives a line-item breakdown.

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

Conciseness5/5

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

Two concise sentences are front-loaded with the core purpose, include a usage hint, and a format option. No redundant information.

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

Completeness3/5

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

No output schema exists, so description should explain return values more. It mentions 'detailed line-item breakdown' but omits structure, error handling, or pagination. Adequate for a simple read tool.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The description adds no additional parameter-specific meaning beyond restating that it gets invoice details. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it retrieves a detailed line-item breakdown for a specific invoice by ID, and distinguishes it from the sibling list tool by advising to use list_billing_invoices first to find IDs.

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

Usage Guidelines4/5

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

Explicitly guides to use list_billing_invoices first to find invoice IDs, and mentions FOCUS v1.3 output. Lacks explicit when-not-to-use or alternative tool comparisons.

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

get_billing_profileA

Get the billing profile for your IONOS CLOUD account. Call this first before any other billing tool — the contract number in the response is required by all other billing tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'Get the billing profile' without mentioning side effects, authentication needs, rate limits, or response structure beyond a hint about a contract number. This is insufficient for a tool with no annotations.

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

Conciseness5/5

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

The description is two concise sentences, front-loading the purpose and key usage guidance. Every sentence contributes meaningful information without redundancy.

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

Completeness3/5

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

Given no output schema and no annotations, the description should explain the return value minimally. It mentions the contract number but doesn't describe the full billing profile structure or other possible fields. This is a moderate gap for a simple tool.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds value by revealing that the response contains a 'contract number' required by other billing tools, providing semantic context beyond the empty schema.

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

Purpose5/5

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

The description explicitly states 'Get the billing profile for your IONOS CLOUD account.' It uses a specific verb ('Get') and resource ('billing profile'), clearly distinguishing it from sibling tools like 'get_contract' or other billing-related tools.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Call this first before any other billing tool — the contract number in the response is required by all other billing tools.' This tells the agent when to use this tool and why it's a prerequisite.

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

get_billing_usage_by_datacenterA

Get aggregated resource usage for a specific datacenter (VDC UUID) in the current billing period. Use list_billing_usage first to find datacenter IDs. Defaults exclude zero-quantity meters (set include_zero=true to keep them). For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile
include_zeroNoinclude meters with quantity 0 (default false)
datacenter_idYesthe VDC UUID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries full burden. Mentions default exclusion of zero-quantity meters and how to override. Also references FOCUS v1.3 compliant output. However, does not discuss permissions, error cases, 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.

Conciseness5/5

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

Two sentences plus a note on FOCUS. Efficient, no redundant information. Every sentence adds value.

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

Completeness2/5

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

No output schema provided, but description does not explain return value structure or fields. For a tool that returns usage data, this is a notable gap. Otherwise, the description covers usage context adequately.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds context for contract (from get_billing_profile) and include_zero (default false, FOCUS reference), but adds little beyond schema descriptions.

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

Purpose5/5

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

Clearly states 'Get aggregated resource usage for a specific datacenter (VDC UUID) in the current billing period.' Identifies verb, resource, and scope. Distinguishes from siblings by mentioning datacenter ID and referencing list_billing_usage.

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

Usage Guidelines4/5

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

Explicitly advises 'Use list_billing_usage first to find datacenter IDs.' Also explains default behavior for include_zero. Provides clear context for when to use, though lacks explicit 'when not to use' alternatives.

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

get_billing_utilization_dailyA

Get per-resource utilization for a specific date (YYYY-MM-DD). Use this for day-level analysis within a month. Same compaction flags as list_billing_utilization. For contracts with many datacenters, scope with regions, datacenter_id, or meter_types — or set top_n=10 for a flat global top-N list — before group_by=datacenter to keep the response under 25 KB. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesdate in YYYY-MM-DD format (e.g. 2026-04-15)
top_nNoreturn only the N largest meters globally, sorted by quantity desc (flat list, datacenters[] omitted). When combined with group_by='datacenter', top_meters[] rows have no meter_id
regionsNofilter to these regions only (client-side); e.g. ['de/fra']
contractYescontract number from get_billing_profile
group_byNoaggregation level: omitted or '' = per-resource (default), 'meter' = sum per SKU per datacenter, 'datacenter' = sum per type per datacenter
meter_typesNofilter to these meter type categories only (client-side); e.g. ['DBAAS']
include_zeroNoinclude meters with quantity 0 (default false)
datacenter_idNoscope to a single datacenter (VDC UUID)

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description must disclose all behavioral traits. It mentions a response size constraint (25 KB) and refers to 'compaction flags', but does not discuss idempotency, data freshness, rate limits, or side effects. The description is insufficient for full transparency.

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

Conciseness4/5

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

The description is concise, consisting of three sentences that sequentially cover purpose, usage, and parameter advice. It is front-loaded with the core purpose. Every sentence adds value, though it could be slightly more streamlined.

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

Completeness3/5

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

Given the complexity of 8 parameters and no output schema or annotations, the description provides essential usage context and size constraints but does not explain return format, pagination, or error conditions. It relies on the schema for parameter details, making it minimally adequate.

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

Parameters4/5

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

The input schema already provides complete descriptions for all 8 parameters (100% coverage). The description adds value by explaining how to combine parameters (e.g., using top_n with group_by) to control output size, which goes beyond the schema's individual definitions.

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

Purpose4/5

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

The description clearly states the tool retrieves per-resource utilization for a specific date, indicating its purpose and day-level granularity. It references sibling list_billing_utilization for compaction flags, which provides context, but does not explicitly differentiate from all sibling billing tools.

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

Usage Guidelines4/5

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

The description provides explicit guidance on using parameters like regions, datacenter_id, meter_types, and top_n to manage response size, including a concrete size limit. It also gives a FOCUS compliance reference. However, it lacks explicit when-not-to-use advice or comparisons to alternatives beyond mentioning the sibling.

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

get_cert_auto_certificateA
Read-only

Get details of a specific auto-certificate by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
auto_certificate_idYesthe ID of the auto-certificate

TDQS

A3.6/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint=true annotation and does not contradict it. It also does not add meaningful behavioral detail beyond the annotation, such as error behavior or response format, although nothing obviously harmful is hidden.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It states the verb, the resource, and the identifying parameter in the most efficient form possible.

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

Completeness4/5

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

For a simple get-by-ID tool with one well-documented required parameter and a read-only annotation, the description is nearly complete. It could be slightly stronger by pointing to list_cert_auto_certificates as the way to discover IDs, or by noting what 'details' includes, but the core calling information is present.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents auto_certificate_id as 'the ID of the auto-certificate'. The description only repeats 'by ID' and adds no extra semantics about value format, source, or constraints.

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

Purpose5/5

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

The description uses a specific verb ('Get') and a specific resource ('auto-certificate'), and 'specific ... by ID' clearly distinguishes this from sibling list_cert_auto_certificates, which would return multiple records. The resource term also separates it from get_cert_certificate.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as list_cert_auto_certificates or get_cert_certificate. It provides no conditions, prerequisites, or exclusion criteria.

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

get_cert_certificateA
Read-only

Get details of a specific SSL/TLS certificate by ID. Returns certificate metadata and public key material but not the private key.

ParametersJSON Schema
NameRequiredDescriptionDefault
certificate_idYesthe ID of the certificate

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the safety profile is already known. The description adds the useful detail that the private key is not returned, which is a behavioral boundary beyond the annotation. However, it doesn't disclose other potential behaviors like error conditions or whether the certificate must be active.

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

Conciseness5/5

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

Two sentences with no wasted words. The core purpose is front-loaded, and the important exclusion (no private key) is stated concisely. Every sentence earns its place.

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

Completeness4/5

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

For a simple single-parameter read tool with annotations covering safety, the description is nearly complete. It tells the agent what is returned (metadata and public key) and what is not (private key). The only minor gap is not describing the exact response structure, but no output schema exists and the tool is simple enough that this is a small omission.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter certificate_id is already fully documented in the schema. The description adds no additional meaning about the parameter beyond what the schema provides, so the baseline 3 applies.

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

Purpose4/5

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 certificate by ID, distinguishing it from list operations like list_cert_certificates. It doesn't explicitly name sibling alternatives, but the verb 'get' plus 'specific' and 'by ID' 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.

Usage Guidelines3/5

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

The description implies this is for fetching a single certificate's details, contrasting with list tools, but it doesn't explicitly state when to use this vs alternatives or mention any exclusions. The context is clear enough for an agent to infer usage, but no explicit guidance is provided.

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

get_cert_providerA
Read-only

Get details of a specific certificate provider by ID. Returns provider configuration but not the external account binding secret.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYesthe ID of the certificate provider

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description reveals that the returned provider configuration deliberately excludes the external account binding secret. This is a critical behavioral detail that prevents agents from expecting a secret field and adds genuine value.

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

Conciseness5/5

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

The description is two tightly written sentences with no filler. The primary purpose is front-loaded, and the second sentence adds an important caveat without redundancy.

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

Completeness4/5

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

With no output schema, the description provides essential output context by noting what is included and, more importantly, what is excluded. For a one-parameter read-only getter, this is sufficient, though an example or field enumeration could push it to 5.

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

Parameters3/5

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

The input schema already fully documents the single provider_id parameter with a clear description. The tool description adds no additional parameter-level detail beyond restating 'by ID', so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get'), a clear resource ('certificate provider'), and a precise scope ('by ID'). This unambiguously distinguishes it from the sibling list_cert_providers, so an agent can immediately understand what it does.

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

Usage Guidelines4/5

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

The phrase 'by ID' clearly signals that this tool is for fetching a single known provider rather than listing providers. It does not explicitly name the alternative list_cert_providers, but the context is clear enough that an agent can infer when to use it.

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

get_contractA
Read-only

Get contract and resource limit information for your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)

TDQS

A3.7/5.0
Behavior3/5

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

The annotation readOnlyHint=true already signals a safe read operation. The description adds no extra behavioral context beyond restating the purpose. It does not disclose what resource limits are included, any authentication requirements, or other effects. Since annotations carry the burden, 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.

Conciseness5/5

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

The description is a single sentence with no filler or repetition. It conveys the essential information efficiently, adhering to strong conciseness.

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

Completeness3/5

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

For a simple one-parameter read-only tool, the description is adequate but leaves ambiguity about what 'resource limit information' entails. Without an output schema, the agent might not know the exact structure. Given low complexity, it's reasonably complete but not outstanding.

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

Parameters3/5

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

The schema fully describes the only parameter 'depth' with a clear description, so schema coverage is 100%. The description adds no additional meaning about parameters, which is acceptable given the schema's clarity. Baseline 3 is justified.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'contract and resource limit information' for an IONOS cloud account. This is specific and distinguishes it from sibling tools like 'list_activitylog_contracts' or 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.

Usage Guidelines3/5

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

The description indicates what the tool does but provides no guidance on when to use it versus alternatives. Since there is no direct sibling for fetching contract info, the implied usage is clear, but explicit context is lacking. No mention of when not to use it or which alternative to choose.

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

get_datacenterA
Read-only

Get details of a specific virtual data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already mark readOnlyHint=true, so the description adds no behavioral transparency beyond that. It does not mention any additional side effects, return format, or depth behavior beyond what the schema's 'depth' field describes. No contradiction with annotations, but no added value either.

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

Conciseness5/5

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

The description is a single, tightly worded sentence that states the purpose without fluff. All words contribute value. Length is appropriate for the tool's simplicity.

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

Completeness4/5

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

For a simple read operation with a readOnlyHint annotation and fully documented parameters, the description sufficiently conveys the tool's purpose. It does not specify what 'details' includes, but the tool name and schema (datacenter_id, depth) provide enough context for an agent. Slight gap: no mention of the depth parameter's effect on output, though the schema description does cover it.

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

Parameters3/5

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

Schema description coverage is 100% (both 'datacenter_id' and 'depth' are described). The description itself adds no extra meaning to the parameters; it only rephrases 'specific' which aligns with the ID parameter. Baseline score of 3 is appropriate since the schema carries the parameter semantics.

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

Purpose4/5

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

The description states a clear verb (Get) and resource ('details of a specific virtual data center'). The word 'specific' implicitly distinguishes this from the sibling list_datacenters, though it does not name the alternative explicitly. Strong purpose clarity, but not maximally differentiated.

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

Usage Guidelines3/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It implies use when you have a specific datacenter ID (via 'specific'), but does not mention prerequisites, typical scenarios, or contrast with list_datacenters. The context is reasonable for a get_* tool, but exclusions or selection criteria are absent.

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

get_dns_quotaA
Read-only

Get DNS quota usage and limits for your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

The readOnlyHint annotation already signals a safe read operation, and the description is consistent with that. It adds context that the tool returns usage and limit values, but provides no further behavioral detail such as auth requirements, rate limits, or whether the quota applies to the whole account only.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loads the action verb, and conveys the full purpose efficiently. Every word contributes meaning.

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

Completeness4/5

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

For a no-input, read-only quota tool, the description is nearly complete: it identifies the exact resource, scope, and general return content ('usage and limits'). It would benefit from naming the actual quota fields or return structure since there is no output schema, but the tool is simple enough that an agent can correctly select and invoke it.

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

Parameters4/5

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

With zero parameters, the empty input schema is sufficient and the baseline is 4. The description does not need to explain parameter meaning, and it adds no unnecessary parameter confusion.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the resource ('DNS quota usage and limits'), and scopes it to the IONOS CLOUD account. This clearly distinguishes it from DNS zone/resource/list siblings like get_dns_zone or list_dns_zones, even without reading their schemas.

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

Usage Guidelines3/5

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

The description implies usage for checking account-wide DNS quota/limits, and the zero-parameter schema makes invocation straightforward. However, there is no explicit guidance about when to prefer this tool over alternative account or DNS tools, nor any exclusions when it should not be used.

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

get_dns_recordA
Read-only

Get details of a specific DNS record in a zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesthe ID of the DNS zone
record_idYesthe ID of the DNS record

TDQS

A3.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is structured data. The description merely restates the operation and adds no behavioral context such as error behavior, permissions, response shape, or side effects. It provides no value beyond what the annotation already communicates.

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

Conciseness5/5

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

The description is a single, short sentence that directly states the operation. Every word is meaningful, and the core action and resource are front-loaded without any redundancy.

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

Completeness3/5

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

The simple two-parameter schema and readOnlyHint annotation cover the essential invocation requirements. However, with no output schema, 'details' is vague and the agent cannot know what fields the response will contain. This is adequate but leaves a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, with both zone_id and record_id clearly documented. The description adds no parameter-level meaning beyond restating the zone context, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb and resource: get details of a specific DNS record in a zone. The singular 'specific' distinguishes it from sibling list tools like list_dns_records and list_dns_zone_records without any ambiguity.

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

Usage Guidelines3/5

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

The verb and resource imply this tool is for fetching a single DNS record once its IDs are known, but the description gives no explicit when-to-use guidance or exclusions. It does not mention that list_dns_records or list_dns_zone_records should be used to discover record IDs first.

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

get_dns_reverse_recordA
Read-only

Get details of a specific reverse DNS record

ParametersJSON Schema
NameRequiredDescriptionDefault
reverse_record_idYesthe ID of the reverse DNS record

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint: true, so the safety profile is covered. The description is consistent with that and adds no contradictory behavioral claims, but it also does not add context about error behavior, pagination, or response contents beyond the annotation.

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

Conciseness5/5

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

A single, direct sentence that immediately conveys the operation and scope. There is no filler or redundant content.

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

Completeness4/5

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

For a simple get-by-ID tool with one well-documented parameter and a readOnly annotation, the description is mostly complete. It could mention what kind of details are returned or not-found behavior, but the lack of an output schema and the simplicity of the operation keep the gap small.

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

Parameters3/5

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

Schema description coverage is 100%: the only parameter, reverse_record_id, is already described as 'the ID of the reverse DNS record'. The description adds no additional semantic detail, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('specific reverse DNS record'), and explicitly scopes it to a single record rather than a list. This differentiates it from sibling list_dns_reverse_records and similar DNS getters.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving one specific record by ID, especially given sibling list_dns_reverse_records exists. However, it does not explicitly say when to prefer this over alternatives or mention that listing should be done with the sibling tool.

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

get_dns_secondary_zoneB
Read-only

Get details of a specific secondary DNS zone

ParametersJSON Schema
NameRequiredDescriptionDefault
secondary_zone_idYesthe ID of the secondary DNS zone

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds no behavioral context beyond the basic get operation, which is acceptable for a simple read. It does not contradict annotations and doesn't need to repeat them. However, it offers no additional nuance like authentication or response format, which would be nice but not essential here.

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

Conciseness5/5

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

One sentence with no filler. The description is front-loaded and wastes no words. It effectively communicates the core action without redundancy.

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

Completeness4/5

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

For a simple read tool with a single parameter and no output schema, the description is largely complete. It clearly identifies the resource and action. The absence of output format details is minor since no output schema exists and the tool is straightforward. An agent can call it correctly with the given information.

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

Parameters3/5

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

The schema covers 100% of the single parameter with a clear description ('the ID of the secondary DNS zone'). The tool description adds no extra meaning beyond what the schema already provides. 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.

Purpose4/5

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

The description states a clear verb ('Get') and resource ('details of a specific secondary DNS zone'). It distinguishes from list_dns_secondary_zones (listing all) and get_dns_secondary_zone_axfr (fetching AXFR records) through the specific phrasing, though it doesn't explicitly name the siblings. The purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. While the sibling names hint at distinctions (list vs. get, axfr vs. general details), the description does not state when to choose this over get_dns_secondary_zone_axfr or list_dns_secondary_zones. An agent must infer from naming conventions.

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

get_dns_secondary_zone_axfrA
Read-only

Get the zone transfer (AXFR) status of a specific secondary DNS zone

ParametersJSON Schema
NameRequiredDescriptionDefault
secondary_zone_idYesthe ID of the secondary DNS zone

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only safety profile is known. The description adds that it retrieves 'status' (not triggering a transfer), which is useful clarification. However, it does not describe what the status values look like, response format, or any other behavioral context. Given annotation coverage, a mid 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.

Conciseness5/5

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

A single, well-structured sentence that front-loads the key action and resource. No filler or redundancy; every word earns its place.

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

Completeness4/5

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

For a simple, read-only getter with one well-documented parameter, the description is nearly complete. It clearly states the operation and the object. The only gap is that 'zone transfer status' is not elaborated (e.g., possible values), but this is acceptable given the domain context and annotations.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter secondary_zone_id. The description only restates the parameter conceptually ('specific secondary DNS zone'), adding no additional meaning beyond the schema. Per the baseline rule for high schema coverage, a score of 3 is correct.

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

Purpose5/5

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

The description states a specific verb ('Get') and resource ('zone transfer (AXFR) status of a specific secondary DNS zone'). It is clearly distinguished from siblings like get_dns_secondary_zone (which gets the zone itself) and list_dns_secondary_zone_records (which lists records). The scope is unambiguous.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention related tools like get_dns_secondary_zone or list_dns_secondary_zone_records, nor does it state prerequisites or exclusions. The usage is only implied by the name and the single parameter.

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

get_dns_zoneA
Read-only

Get details of a specific DNS zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesthe ID of the DNS zone

TDQS

A3.6/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint annotation, stating a read operation. It adds minimal behavioral context beyond the annotation, such as that it targets a specific zone, but does not disclose return format or any additional behaviors. Since annotations already cover the read-only nature, this is acceptable 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.

Conciseness5/5

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

The description is a single, clear sentence with no filler. It front-loads the action and resource and earns its place.

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

Completeness4/5

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

Given the low complexity (one required parameter, no output schema, read-only annotation), the description is mostly complete. However, 'details' is somewhat vague and could specify what kind of details are returned, though this is a minor gap for such a simple get-by-ID tool.

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

Parameters3/5

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

Schema coverage is 100% for the single zone_id parameter, and the schema describes it as 'the ID of the DNS zone'. The description only implies the parameter via 'specific DNS zone', adding no new semantic information. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a clear verb ('Get') and resource ('DNS zone') with the qualifier 'specific' to indicate retrieval by ID. This distinguishes it from sibling list operations like list_dns_zones and from other get_* tools for different resources (e.g., get_dns_record).

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. It does not mention that a zone_id must first be obtained, nor does it reference sibling tools like list_dns_zones for discovery. The agent must infer usage from the schema and tool name.

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

get_dns_zone_fileA
Read-only

Get the zone file (BIND format) for a specific DNS zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesthe ID of the DNS zone

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds value by disclosing that the output is a BIND-format zone file, which is a useful behavioral trait. However, it does not mention potential size concerns, response format specifics, or any other side effects, so it adds only modest context beyond the annotation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that names the action, resource, format, and scope with zero fluff. Every word contributes to usability, making it an exemplar of concise structure.

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

Completeness4/5

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

For a simple one-parameter, read-only tool with no output schema, the description covers what is returned (BIND-format zone file) and the required input (specific zone). It is sufficient for correct invocation, though it could mention whether the zone file is returned as a raw string or with any special encoding.

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

Parameters3/5

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

The schema has 100% description coverage for the single parameter zone_id ('the ID of the DNS zone'). The description adds no additional meaning for the parameter, so the baseline of 3 applies per the scoring rubric.

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

Purpose5/5

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

The description clearly states a specific verb ('Get') and resource ('zone file') with an explicit format qualifier ('BIND format'), and scopes it to a specific DNS zone via zone_id. This distinguishes it from sibling tools like get_dns_zone (metadata) and list_dns_zone_records (individual records), so an agent can identify the right tool.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives such as get_dns_zone or list_dns_zone_records. It only implies the tool is used for the full BIND-format zone file, but there is no when/when-not or alternative routing, leaving the selection entirely to the agent's inference.

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

get_firewall_ruleB
Read-only

Get details of a specific firewall rule

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
nic_idYesthe ID of the network interface
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center
firewallrule_idYesthe ID of the firewall rule

TDQS

B3.4/5.0
Behavior3/5

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

The annotation already declares readOnlyHint: true, so the description adds no extra behavioral context beyond what's implicitly known. It doesn't mention anything about the response format, pagination, or error behaviors. Since the annotation covers the safety profile, a 3 is appropriate—the description doesn't contradict but also doesn't enrich 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.

Conciseness5/5

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

The description is a single, concise sentence ('Get details of a specific firewall rule') with zero waste. It's front-loaded and easy to parse. For a simple getter, this is appropriately minimal.

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

Completeness4/5

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

Given the simplicity of the operation (a single getter), the readOnlyHint annotation, and complete schema documentation, the description is sufficient. The only minor gap is not explaining that firewall rules are nested resources requiring datacenter/server/NIC IDs, but this is inferable from the required parameters. Overall, it's complete for its complexity level.

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

Parameters3/5

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

The schema provides 100% coverage for all 5 parameters, each with a description. The tool description adds no additional meaning about the parameters—it doesn't explain the hierarchy (e.g., that a firewall rule belongs to a NIC, which belongs to a server) or any special constraints. Baseline 3 is correct when the schema carries the full burden.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('details of a specific firewall rule'), which distinguishes it from list operations like list_firewall_rules. However, it doesn't explicitly differentiate from other getters like get_security_group_rule, though the name itself is unambiguous enough. This meets the bar for clear but not exceptional.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as list_firewall_rules or get_nic. There's no mention of prerequisites (e.g., needing datacenter/server/NIC IDs) or any context for why one would retrieve a single rule. The usage context is only implied by the name and parameters.

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

get_ip_blockA
Read-only

Get details of a specific reserved IP block

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
ipblock_idYesthe ID of the IP block

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already indicates that this operation is read-only. The description does not add any additional behavioral context, such as potential rate limits, data format, or side effects, but it does not contradict the annotation. With annotation present, a neutral 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.

Conciseness5/5

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

The description is a single, concise sentence with no redundancy. It directly communicates the purpose without extraneous detail.

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

Completeness4/5

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

For a simple read operation with no output schema, the description adequately covers the core functionality. It does not elaborate on the returned details, but this is implied by the nature of a get operation. The lack of output schema reduces the need for further explanation.

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

Parameters3/5

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

Both parameters (ipblock_id and depth) are already fully described in the schema. The description does not add any extra semantic information beyond what the schema provides, so the baseline score for high coverage is used.

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

Purpose5/5

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

The description clearly states the action ('Get details') and the resource ('specific reserved IP block'). It distinguishes from list_ip_blocks by indicating specificity, and the verb-resource combination leaves no ambiguity.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., listing all IP blocks). It does not mention that it should be used when the caller already knows the IP block ID or any context that would trigger its use.

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

get_k8s_clusterA
Read-only

Get details of a specific Kubernetes cluster: state, version, maintenance window, API server allow list and whether it is public or private. Read this before an upgrade — availableUpgradeVersions lists the versions update_k8s_cluster accepts, and viableNodePoolVersions the ones its node pools may run.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
k8s_cluster_idYesthe ID of the Kubernetes cluster

TDQS

A4.4/5.0
Behavior5/5

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

The description adds meaningful behavioral context beyond the readOnlyHint annotation by specifying exactly what information is returned and how it supports upgrade planning. Since there is no output schema, this detail is valuable and gives the agent a strong sense of the tool's behavior without contradicting annotations.

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

Conciseness5/5

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

The description is two sentences long and every clause earns its place: the first defines scope and output, the second provides actionable upgrade context. It is front-loaded and contains no filler.

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

Completeness4/5

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

Given the tool's moderate complexity, no output schema, and readOnly annotation, the description covers the main return values and a key use case (pre-upgrade checks). It could be slightly more complete by explicitly noting that this is for a single cluster and that list_k8s_clusters serves the multi-cluster case, but the core context is present.

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

Parameters3/5

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

The input schema already has 100% description coverage for both parameters, so the description does not need to explain them. It adds no additional parameter-level semantics beyond reinforcing that k8s_cluster_id identifies a specific cluster, which is already implied by the schema.

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

Purpose5/5

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

The description clearly states the operation: 'Get details of a specific Kubernetes cluster' and enumerates the returned attributes (state, version, maintenance window, allow list, public/private). This distinguishes it from list_k8s_clusters and other get_* siblings by targeting a single cluster with a specific ID.

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

Usage Guidelines4/5

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

The description gives explicit guidance: 'Read this before an upgrade' and explains how the returned fields (availableUpgradeVersions, viableNodePoolVersions) relate to update_k8s_cluster. It lacks an explicit 'when not to use' or a direct comparison with list_k8s_clusters, but the intended context is clear.

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

get_k8s_default_versionA
Read-only

Get the current default Kubernetes version used by new clusters and node pools in IONOS CLOUD. This is the version create_k8s_cluster picks when k8s_version is omitted.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description adds context beyond the readOnlyHint annotation by explaining the tool's behavioral link to create_k8s_cluster and the k8s_version parameter omission case. It consistently supports the read-only nature indicated by the annotation 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.

Conciseness5/5

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

Two sentences with zero waste. The first front-loads the primary action, and the second provides essential relational context about the create flow.

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

Completeness5/5

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

For a zero-parameter read-only lookup with no output schema, the description is complete: it defines what it returns, its relevance to new clusters and node pools, and how it fits into the cluster creation workflow. There is nothing more an agent would need to know.

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

Parameters4/5

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

The tool has zero parameters, so the description has no parameter semantics to clarify. The baseline of 4 applies as there's nothing for the description to compensate for, and it appropriately focuses on what the tool returns.

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

Purpose5/5

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

The description clearly states the tool retrieves 'the current default Kubernetes version used by new clusters and node pools in I IONOS CLOUD', which is specific about verb, resource, and scope. It also differentiates from sibling tools by noting the version is what create_k8s_cluster uses when k8s_version is omitted.

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

Usage Guidelines4/5

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

The description implies when to use this tool by explaining its role in the cluster creation flow, letting agents understand it's for querying the default rather than specific versions. It doesn't explicitly contrast with list_k8s_versions, but the practical context given is nearly complete.

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

get_k8s_nodeA
Read-only

Get details of a specific worker node in a Kubernetes node pool: its name, state, Kubernetes version and IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
node_idYesthe ID of the Kubernetes node
nodepool_idYesthe ID of the Kubernetes node pool
k8s_cluster_idYesthe ID of the Kubernetes cluster

TDQS

A3.8/5.0
Behavior3/5

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

Annotations include readOnlyHint: true, and the description adds that the tool returns specific fields (name, state, version, IPs), which is useful. However, it does not disclose additional behavioral aspects like response pagination or error conditions, but given the read-only nature, this suffices.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the primary purpose and key output details. No filler or redundant information, earning full marks.

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

Completeness4/5

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

Despite having no output schema, the description explicitly lists return fields, covering the main expected data. It also implies required parameters via the resource hierarchy, though it could mention the three identifiers. Adequate for a simple read operation.

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

Parameters3/5

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

Schema coverage is 100%, with all parameters clearly described. The description adds no extra parameter detail beyond the schema but mentions output fields, which helps interpret the return, though not parameter semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: getting details of a specific worker node in a Kubernetes node pool, including name, state, version, and IPs. It distinguishes from sibling tools by specifying 'worker node' rather than cluster or nodepool.

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

Usage Guidelines3/5

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

The description implies its use case (fetching node details) but does not explicitly contrast it with sibling tools like get_k8s_cluster or list_k8s_nodepool_nodes. It provides no instructions on when not to use it, leaving the agent to infer based on resource type.

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

get_k8s_nodepoolA
Read-only

Get details of a specific Kubernetes node pool: node count, node hardware, autoscaling bounds, attached LANs, labels and annotations. Read this before calling update_k8s_nodepool with lans, labels, annotations or public_ips, since each of those replaces the whole list. availableUpgradeVersions lists the versions the pool can move to.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
nodepool_idYesthe ID of the Kubernetes node pool
k8s_cluster_idYesthe ID of the Kubernetes cluster

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, so no contradiction. The description adds valuable context about how the returned data relates to update operations (list replacement) and availableUpgradeVersions, which is beyond the annotation and helps the agent understand the data's implications.

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

Conciseness5/5

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

Three concise sentences, each with purpose: listing details, providing crucial usage warning, and noting a specific output field. No redundant text; perfectly front-loaded.

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

Completeness5/5

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

For a read-only get operation with full schema coverage and no output schema, the description is highly complete. It covers what the tool returns, why it's useful (pre-update check), and mentions upgrade paths, leaving no major gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented. The description does not add extra parameter-level meaning beyond what's in the schema, but it does mention a returned field (availableUpgradeVersions) that clarifies the output. Baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states it gets details of a specific Kubernetes node pool and enumerates the specific fields (node count, hardware, autoscaling bounds, LANs, labels, annotations). Distinguishes from the many sibling get_* tools by naming the resource and its scope.

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

Usage Guidelines5/5

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

Explicitly instructs to read this before calling update_k8s_nodepool for certain fields, and explains that those fields replace entire lists. Also mentions availableUpgradeVersions for version migration context, giving clear when-to-use guidance.

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

get_lanC
Read-only

Get details of a specific LAN

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
lan_idYesthe ID of the LAN
datacenter_idYesthe ID of the data center

TDQS

C2.9/5.0
Behavior2/5

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

The readOnlyHint annotation already indicates this is a read operation, and the description merely restates that it 'gets details.' No additional behavioral context (e.g., authentication requirements, rate limits, or scoping constraints) is provided beyond the annotation.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no unnecessary words. While it is very brief, it is not padded and clearly states the core purpose.

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

Completeness3/5

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

For a simple read operation with well-documented parameters, the description is minimally adequate. However, it lacks context about the relationship to datacenter_id and does not clarify what 'details' includes, which could be important given no output schema. The presence of sibling tools adds ambiguity that the description does not resolve.

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

Parameters3/5

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

Schema description coverage is 100% (all three parameters have descriptions), so the schema already documents the parameters. The description adds no extra parameter semantics beyond what the schema provides, which aligns with the baseline for high coverage.

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

Purpose4/5

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

The description 'Get details of a specific LAN' uses a clear verb and resource, and distinguishes itself from list_lans by indicating a single item ('a specific LAN'). However, it does not explicitly mention that the LAN is scoped by datacenter_id, which is a required parameter.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like list_lans or list_lan_nics. The description does not offer any context for selection, but it is not misleading either.

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

get_loadbalancerB
Read-only

Get details of a specific load balancer

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center
loadbalancer_idYesthe ID of the load balancer

TDQS

B3.3/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint=true annotation and adds no conflicting information. It provides minimal contextual value beyond the annotation, as 'Get details' is essentially restating the operation name without additional behavioral insights.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded and immediately understandable. Every word earns its place, and there is zero redundant information.

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

Completeness3/5

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

For a simple getter with no output schema, the description is adequate but does not add extra context like the purpose of the depth parameter or any constraints on usage. Given the presence of similar sibling tools, a brief note on resource scope would have enhanced completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning about the parameters (depth, datacenter_id, loadbalancer_id) beyond what the schema already documents, but it is not required to do so given the thorough schema.

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

Purpose4/5

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

The description clearly states the tool retrieves details of a specific load balancer, using a specific verb and resource. However, it does not distinguish this 'loadbalancer' tool from closely named siblings like get_network_loadbalancer and get_application_loadbalancer, missing an opportunity for explicit differentiation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the numerous sibling get/list load balancer tools. There is no mention of prerequisites, alternatives, or exclusions, leaving the agent to infer usage solely from the name.

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

get_nat_gatewayB
Read-only

Get details of a specific NAT gateway

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center
nat_gateway_idYesthe ID of the NAT gateway

TDQS

B3.3/5.0
Behavior2/5

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

The annotation declares readOnlyHint: true, which already covers the safety profile. The description adds minimal behavioral context beyond that, just the purpose. It doesn't disclose anything about the response structure, potential errors, or pagination. With annotation coverage, the bar is lower, but the description still doesn't add meaningful behavioral details beyond what annotations imply, so a 2 is appropriate.

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

Conciseness5/5

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

The description is a single, concise sentence that directly conveys the purpose. No filler or unnecessary words, and the structure is clear. It's appropriately sized for a simple getter tool.

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

Completeness3/5

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

For a simple getter tool with full schema coverage and a read-only annotation, the description is sufficient to understand the tool's basic functionality. However, it doesn't mention any return value details (e.g., what fields are included) or edge cases (e.g., if the NAT gateway doesn't exist). Given the tool's simplicity(i.e., 3 params, no output schema), a 3 is fair as it meets minimum requirements but leaves some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the description doesn't need to add much. The parameters are all documented in the schema, and the description confirms the tool takes a datacenter and NAT gateway ID. It adds little beyond the schema, so baseline 3 is appropriate because the schema handles the parameter semantics.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'a specific NAT gateway', which matches the name and title. It distinguishes from siblings like list_nat_gateways (list all vs get specific) and get_nat_gateway_rules (rules vs gateway itself), though not explicitly. A score of 4 is fair because it lacks explicit differentiation from similar get_* tools.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving a single NAT gateway when you know its ID, but it does not explicitly state when to use it over list_nat_gateways or other alternatives. The context is clear enough for a simple getter, but there are no exclusions or alternative mentions, so it's decent but not thorough.

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

get_network_loadbalancerA
Read-only

Get details of a specific network load balancer (NLB)

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center
network_loadbalancer_idYesthe ID of the network load balancer

TDQS

A3.8/5.0
Behavior3/5

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

The description is consistent with the annotation readOnlyHint=true, indicating a read-only operation. It adds no extra behavioral context such as auth requirements, rate limits, or response format. The annotation already covers the key safety profile, so a score of 3 reflects the adequate but minimal extra info.

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

Conciseness5/5

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

The description is a single, concise sentence with no redundancy or filler. It front-loads the action ('Get') and the target, making it immediately scannable.

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

Completeness4/5

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

For a simple get-by-ID tool, the description is adequately complete. It names the resource type and includes the NLB abbreviation. Combined with schema and annotations, an agent has enough to invoke it correctly. A small gap is not specifying what 'details' includes, but this is a minor omission for such a straightforward operation.

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

Parameters3/5

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

Schema coverage is 100%, with all three parameters (datacenter_id, network_loadbalancer_id, depth) described in the schema. The description adds no parameter-specific meaning beyond what the schema already 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.

Purpose5/5

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

The description uses the specific verb 'Get' and identifies the exact resource, 'details of a specific network load balancer (NLB)'. It clearly distinguishes from sibling tools like list_network_loadbalancers (which lists) and get_application_loadbalancer (which targets a different balancer type).

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

Usage Guidelines3/5

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

Usage context is implied: to retrieve details of a single NLB when you have its ID and the data center ID. However, there is no explicit guidance on when to choose this over alternatives like get_loadbalancer or get_application_loadbalancer, and no mention of prerequisites such as needing to list NLBs first.

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

get_nicB
Read-only

Get details of a specific network interface (NIC)

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
nic_idYesthe ID of the network interface
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

B3.1/5.0
Behavior2/5

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

The annotation readOnlyHint=true already signals read-only behavior, and the description merely confirms this with 'Get details' without adding new behavioral context. It does not contradict the annotation, but it also doesn't disclose anything about errors, depth parameter effects, or parent resource requirements. Minimal added value beyond the structured annotation.

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

Conciseness5/5

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

Nine words, front-loaded with the action and resource, and zero redundancy. Every word earns its place, and the parenthetical '(NIC)' removes any ambiguity. Perfectly proportioned for a simple getter tool.

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

Completeness3/5

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

For a simple read-only getter with a 100%-covered schema and annotations, this is adequate. The term 'details' is vague, but since there is no output schema, the agent must infer what is returned. Could be improved by listing example NIC properties (IP, MAC, status), but not required for basic use.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for all four parameters (depth, nic_id, server_id, datacenter_id), so the baseline of 3 applies. The description adds no additional parameter context, but the schema already does the heavy lifting, making this acceptable.

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

Purpose4/5

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

Clear 'Get details of a specific network interface (NIC)' with verb, resource, and scope, distinguishing it from list operations like list_nics. The word 'specific' signals singular resource retrieval by ID. Slightly generic in that 'details' could be more descriptive, but unambiguous in context.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With numerous sibling getters (get_server, get_datacenter, etc.) and list_nics as a complementary operation, an explicit mention of 'use when you have a NIC ID' would help. No exclusions or cross-references are provided.

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

get_object_storage_access_keyA

Get details of a specific Object Storage access key by its ID. Returns key metadata but not the secret key.

ParametersJSON Schema
NameRequiredDescriptionDefault
access_key_idYesthe ID of the object storage access key

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses that the secret key is not returned, which is a critical behavioral detail beyond the input schema. With no annotations, this adds value by setting expectations for the response.

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

Conciseness5/5

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

The description is a single, well-structured sentence that conveys purpose and a key behavioral constraint with no waste.

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

Completeness3/5

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

While the description covers the basic purpose and a critical behavioral aspect, it does not specify what 'metadata' includes (e.g., creation date, status). Without an output schema, the agent may need to infer the response structure, leaving some uncertainty.

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

Parameters3/5

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

The schema provides a description for the only parameter (access_key_id), and the description does not add additional semantic detail beyond identifying the key by ID. Baseline 3 as schema coverage is 100%.

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

Purpose5/5

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

The description clearly states the action (Get details), the resource (specific Object Storage access key), and the method (by ID). It also distinguishes from the sibling 'list_object_storage_access_keys' by focusing on a single key.

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

Usage Guidelines4/5

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

The description implies that this tool is for retrieving a single key when the ID is known, contrasting with the list tool. However, it does not explicitly state when to use this vs. alternatives or provide exclusions.

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

get_object_storage_bucket_corsA

Get the CORS configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. 'Get' implies read-only, but no mention of permissions, rate limits, or side effects. Adequate for a simple get operation but lacks detail.

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

Conciseness5/5

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

One concise sentence with no fluff. Every word earns its place.

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

Completeness3/5

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

Minimally complete for a simple get tool with one parameter. No output schema, but return value is implied. Could mention response format or error cases.

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

Parameters3/5

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

Single parameter 'bucket' already has description in schema ('the name of the object storage bucket'). Description adds no new meaning beyond schema.

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

Purpose5/5

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

Clearly states verb 'Get', resource 'CORS configuration', and scope 'for an Object Storage bucket'. Differentiates from sibling tools like get_object_storage_bucket_encryption.

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

Usage Guidelines2/5

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

No guidance on when to use or when not to use. Many similar get_object_storage_bucket_* tools exist, but no context about CORS-specific scenarios.

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

get_object_storage_bucket_encryptionA

Get the server-side encryption configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

A3.8/5.0
Behavior4/5

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

The verb 'Get' clearly indicates a read-only, idempotent operation. No annotations are present, but the description's simplicity accurately portrays the tool's behavior. No contradictions or hidden 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.

Conciseness5/5

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

A single sentence that is front-loaded with the purpose. No extraneous words; every word contributes meaning.

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

Completeness4/5

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

For a simple read operation with one parameter and no output schema, the description adequately conveys the tool's function. It implies the return value (the encryption configuration). Slightly more detail about what is returned would raise the score.

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

Parameters3/5

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

Schema description coverage is 100% (parameter 'bucket' described in schema). The description does not add new parameter details beyond the schema, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states the tool retrieves the server-side encryption configuration for an Object Storage bucket. The specific resource ('encryption configuration') distinguishes it from sibling tools like get_object_storage_bucket_cors or get_object_storage_bucket_lifecycle.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it. It simply states what it does.

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

get_object_storage_bucket_lifecycleB

Get the lifecycle configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It only states 'Get the lifecycle configuration' without mentioning read-only nature, permissions, error conditions, or return behavior. This is insufficient for an agent to understand the tool's complete behavior.

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

Conciseness4/5

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

The description is a single concise sentence without extraneous information. It is well-structured but could benefit from additional details without becoming verbose.

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

Completeness2/5

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

No output schema exists, so the description should explain the return value (the lifecycle configuration). It does not mention the format, structure, or any success/error conditions. For a simple tool with one parameter, the description is incomplete for agent comprehension.

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

Parameters3/5

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

The input schema has 100% coverage with a description for the 'bucket' parameter. The description adds no additional meaning 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.

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'lifecycle configuration for an Object Storage bucket'. This distinguishes it from sibling tools like get_object_storage_bucket_cors or get_object_storage_bucket_encryption.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, prerequisites (e.g., bucket must exist), or what happens when there is no lifecycle configuration. The description offers no context for selecting among many get_* siblings.

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

get_object_storage_bucket_locationB

Get the region/location of an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states 'Get the region/location' but does not mention whether this operation is read-only, requires authentication, has rate limits, or what happens on error. The description is insufficient for an agent to understand the tool's behavioral traits.

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

Conciseness4/5

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

The description is a single sentence of 10 words, which is concise and front-loaded. However, it may be too terse, omitting important details. It is not verbose but could be slightly expanded without losing conciseness.

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

Completeness2/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is lacking. It does not describe the return value format (e.g., a string region code or a location object). For a complete invocation, the agent needs to know what the response looks like. The description leaves this gap.

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

Parameters3/5

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

Schema description coverage is 100% (the single parameter 'bucket' is described as 'the name of the object storage bucket'). The description adds no additional meaning beyond the schema. According to the rubric, baseline is 3 when coverage is high, and the description does not improve parameter understanding.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get the region/location of an Object Storage bucket.' The verb 'Get' and resource 'region/location' are specific and unambiguous. It distinguishes itself from sibling tools like 'list_object_storage_buckets' (which lists buckets) and 'get_object_storage_region' (which likely returns region metadata).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., bucket must exist), when to prefer this over other bucket info tools, or what to do if the bucket is not found. The agent is left without context for appropriate invocation.

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

get_object_storage_bucket_lock_configurationB

Get the Object Lock configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not mention that the operation is read-only, whether special permissions are needed, or what happens if the bucket lacks a lock configuration.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no 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.

Completeness3/5

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

Given the low complexity (one parameter, no output schema), the description provides adequate but minimal context. It lacks expected return information or error conditions, which would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds minimal value beyond stating 'Object Storage bucket'. The schema already describes the parameter similarly, so the description does not significantly enhance understanding of the parameter.

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

Purpose5/5

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

The description clearly states the specific action (Get) and resource (Object Lock configuration for an Object Storage bucket). It directly distinguishes itself from sibling tools that retrieve other bucket configurations like CORS or encryption.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or scenarios where it should not be used. Given many similar sibling tools, this omission hampers correct selection.

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

get_object_storage_bucket_policyB

Get the bucket policy for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, required permissions, or rate limits. It simply restates the operation.

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

Conciseness5/5

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

A single, concise sentence that is directly to the point with no unnecessary words. Ideal structure for quick understanding.

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

Completeness3/5

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

For a simple one-parameter get operation without an output schema, the description is adequate but minimal. It does not explain the policy format or response structure, leaving some ambiguity.

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

Parameters3/5

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

Schema description coverage is 100% (the one parameter 'bucket' is described as 'the name of the object storage bucket'). The tool 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.

Purpose5/5

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

The description clearly states the verb ('Get'), resource ('bucket policy'), and scope ('for an Object Storage bucket'). It is specific and distinguishable from sibling tools like get_object_storage_bucket_policy_status.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_object_storage_bucket_policy_status). The description does not mention exclusions or prerequisites.

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

get_object_storage_bucket_policy_statusB

Get the policy status for an Object Storage bucket, indicating whether the bucket is public.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, required permissions, or side effects. It only states the basic purpose.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the core function. No extraneous words or information.

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

Completeness2/5

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

Given the single parameter, no output schema, and lack of annotations, the description is insufficient. It does not explain return values or behavioral nuances needed for complete understanding.

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

Parameters3/5

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

The input schema provides a description for the 'bucket' parameter, achieving 100% coverage. The tool's description does not add additional 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.

Purpose5/5

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

The description clearly states the tool retrieves the policy status for an Object Storage bucket, specifically to indicate whether the bucket is public. This distinguishes it from sibling tools like get_object_storage_bucket_policy (full policy) and get_object_storage_bucket_public_access_block (access block settings).

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

Usage Guidelines2/5

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

The description lacks any guidance on when to use this tool versus alternatives. No context about prerequisites, when-not-to-use, or comparisons with sibling tools is provided.

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

get_object_storage_bucket_public_access_blockB

Get the public access block configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states it gets the configuration but does not mention auth requirements, side effects, or rate limits. The operation is read-only, but that is implicit.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded. No unnecessary words.

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

Completeness4/5

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

For a simple GET operation with one parameter, the description is mostly complete. However, no output schema exists and the description does not indicate what is returned (e.g., configuration structure), but the tool's purpose is clear enough.

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

Parameters3/5

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

The input schema already describes the 'bucket' parameter succinctly. The description does not add extra meaning beyond referencing the bucket. With 100% schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the specific resource 'public access block configuration for an Object Storage bucket'. It distinguishes itself from sibling tools like get_object_storage_bucket_policy or get_object_storage_bucket_cors.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other get_* tools for the same bucket (e.g., get_object_storage_bucket_policy). There are no when-not conditions or alternative suggestions.

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

get_object_storage_bucket_replicationB

Get the replication configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states 'Get', implying a read-only operation, but does not disclose any behavioral traits such as error handling (e.g., returns 404 if bucket doesn't exist), prerequisites, or the format of the returned configuration. This is minimal transparency for a tool with no annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded with the key action and object, with no extraneous words. Every word earns its place.

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

Completeness3/5

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

The tool is a simple getter with one parameter and no output schema. The description covers the basic purpose, but given the presence of many sibling tools for different bucket configurations, it could be more complete by specifying what the replication configuration includes or how it differs from other configurations. It is adequate but not thorough.

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

Parameters3/5

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

Schema description coverage is 100% (one parameter 'bucket' with a clear description). The tool description does not add any meaning beyond the schema; it simply restates 'the name of the object storage bucket'. According to the guideline, baseline is 3, and no extra value is provided, so score remains 3.

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

Purpose4/5

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

The description clearly states it gets the replication configuration for an Object Storage bucket. The verb 'Get' and resource 'replication configuration' are specific, distinguishing it from siblings like get_object_storage_bucket_encryption or get_object_storage_bucket_versioning. However, it lacks additional context that would make it a 5, such as scope or constraints.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There are many similar getters for different bucket configurations (e.g., CORS, lifecycle, policy), and the description does not help the agent decide which one to invoke. It does not mention when not to use it or provide any selection criteria.

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

get_object_storage_bucket_taggingB

Get the tags for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits such as whether the bucket must exist, what happens if no tags are set, 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.

Conciseness5/5

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

A single, clear sentence with no unnecessary words or fluff. Efficiently communicates the tool's core action.

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

Completeness3/5

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

The description lacks details about the return format (e.g., key-value pairs of tags) and error handling, which would be helpful given the absence of an output schema. Adequate but incomplete for a simple tool.

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

Parameters3/5

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

The input schema has 100% description coverage for the only parameter 'bucket'. The description adds no additional meaning beyond the schema, meeting the baseline expectation.

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

Purpose5/5

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

The description states the verb 'Get' and the resource 'tags for an Object Storage bucket', clearly distinguishing it from sibling get_object_storage_bucket_* tools that target other bucket properties.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., other get_object_storage_bucket_* tools). No prerequisites or when-not-to-use conditions are mentioned.

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

get_object_storage_bucket_versioningB

Get the versioning configuration for an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It does not state that the operation is read-only, describe side effects, indicate permissions required, or specify error conditions (e.g., if the bucket does not exist).

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

Conciseness5/5

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

The description is a single sentence, 9 words, front-loaded with the key action and resource. Every word earns its place; no wasted text.

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

Completeness2/5

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

Given no output schema and minimal description, the agent lacks information about what the response contains (e.g., versioning status values), preconditions, or how to interpret results. This is insufficient for a complete understanding.

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

Parameters3/5

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

Schema description coverage is 100% (the only parameter 'bucket' has a description). The tool 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.

Purpose5/5

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

The description 'Get the versioning configuration for an Object Storage bucket' clearly states the verb (get), resource (versioning configuration), and object (bucket). It distinguishes itself from sibling 'get_object_storage_bucket_*' tools by specifying which configuration it retrieves.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'list_object_storage_buckets' or other bucket configuration getters. There is 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.

get_object_storage_object_retentionA

Get the Object Lock retention configuration for an object in an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesthe object key (path within the bucket)
bucketYesthe name of the object storage bucket

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, the description does not explicitly state that it is non-destructive or whether it requires specific permissions. It also does not disclose any side effects or error conditions. The description adds minimal transparency beyond the schema.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the purpose. There is no verbosity; every word is necessary and informative. It is optimally sized for a simple retrieval operation.

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

Completeness3/5

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

Given the tool's low complexity, two well-described parameters, and no output schema, the description is adequate but not comprehensive. It does not explain what the retention configuration includes (e.g., mode, retain until date) or how the response will look. For a tool with no output schema and no annotations, a bit more detail would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters (bucket and key) having descriptions in the schema. The description does not add any additional meaning or context beyond what the schema already provides. Therefore, the description does not compensate for or enhance the parameter semantics. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get') and the specific resource ('Object Lock retention configuration') and scope ('for an object in an Object Storage bucket'). It effectively distinguishes from sibling tools like get_object_storage_bucket_lock_configuration (bucket-level) and get_object_storage_object_legal_hold (legal hold vs retention) by specifying 'retention configuration'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as whether the bucket must have Object Lock enabled, nor does it indicate when not to use this tool (e.g., for bucket-level retention settings). No comparison with sibling tools is provided.

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

get_object_storage_object_taggingB

Get the tags for an object in an Object Storage bucket.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesthe object key (path within the bucket)
bucketYesthe name of the object storage bucket

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Get', implying a non-destructive read, but fails to explicitly mention idempotency, authentication requirements, rate limits, or that no 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.

Conciseness5/5

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

The description is a single, concise sentence with no unnecessary words. It is front-loaded with the action and clearly direct.

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

Completeness3/5

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

Given the lack of an output schema, the description does not explain the return format (e.g., a dictionary of tags). It also omits prerequisites like the bucket and object existing. However, for a simple get operation, it provides adequate core information.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for 'bucket' and 'key'. The description adds no additional meaning beyond the schema, which already defines the purpose of each parameter. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool retrieves tags for an object in an Object Storage bucket, using a specific verb 'Get' and resource 'tags for an object'. This distinguishes it from the sibling tool 'get_object_storage_bucket_tagging' which operates on the bucket itself.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'get_object_storage_bucket_tagging' for bucket-level tags). It does not include any conditions, prerequisites, or exclusions.

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

get_object_storage_regionA

Get details of a specific Object Storage region by name (e.g. eu-central-3).

ParametersJSON Schema
NameRequiredDescriptionDefault
regionYesthe region name (e.g. eu-central-3)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided. The description only says 'Get details' without specifying what details are returned, side effects, or authentication requirements. Minimal behavioral transparency.

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

Conciseness5/5

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

One short, front-loaded sentence with no unnecessary words. Perfectly concise.

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

Completeness3/5

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

Given a simple tool with one parameter and no output schema, the description is adequate but minimal. It does not explain what the returned details include, which might be useful for an agent. Not incomplete, but could be better.

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

Parameters3/5

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

Schema coverage is 100%, and the description repeats the example from the schema. It adds the example 'eu-central-3' for clarity, but does not add significant new meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it gets details of a specific Object Storage region, using a precise verb and resource. It distinguishes from sibling list_object_storage_regions, which lists all regions.

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

Usage Guidelines3/5

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

The description implies you need a region name but lacks explicit guidance on when to use this vs list_object_storage_regions. No alternatives or context are mentioned.

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

get_private_cross_connectA
Read-only

Get details of a specific private cross-connect

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
pcc_idYesthe ID of the private cross-connect

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already signals a safe read operation, and the description is consistent with that. However, the description adds no further behavioral context beyond what the annotation and schema provide, such as what exactly 'details' includes or any pagination/error behavior.

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

Conciseness5/5

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

The description is a single, clear, and efficient sentence. It contains no redundant wording and immediately communicates the tool's purpose.

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

Completeness4/5

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

For a simple read-only getter with one required parameter and no output schema, the description is adequate. It clearly indicates the tool fetches details of a single resource. It does not explicitly mention what fields are returned, but this is not required given the lack of output schema and the straightforward nature of the operation.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (pcc_id and depth) are already documented. The description does not add extra meaning or clarify parameter usage 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.

Purpose5/5

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

The description uses the specific verb 'Get' with the resource 'private cross-connect' and clarifies it's for a specific instance, which clearly distinguishes it from the sibling tool list_private_cross_connects. It accurately conveys that this is a single-resource retrieval operation.

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

Usage Guidelines3/5

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

The context is implied by the pattern: use this when you have a pcc_id and need details for one cross-connect, as opposed to listing all. However, there is no explicit guidance on when to use this tool versus alternatives like list_private_cross_connects, leaving the agent to infer the appropriate use case.

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

get_requestA
Read-only

Get details of a specific API request

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
request_idYesthe ID of the request

TDQS

A3.5/5.0
Behavior3/5

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

The description aligns with the readOnlyHint annotation, but adds little behavioral context beyond the resource scope. It does not mention response format, potential errors, or any special behavior, though the annotation already covers the read-only nature.

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

Conciseness5/5

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

The description is a single, concise sentence that conveys the tool's purpose without unnecessary words. 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.

Completeness3/5

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

For a simple get-by-id tool, the description is adequate but not rich. There is no output schema, and the description does not clarify what 'details' includes or how it differs from 'get_request_status', leaving some ambiguity for the agent.

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

Parameters3/5

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

The input schema fully documents both parameters ('request_id' and 'depth') with descriptions, so the description adds no semantic value beyond what is already in the schema. Baseline of 3 applies due to high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get details') and the resource ('specific API request'), making it clear what the tool does. However, it does not explicitly differentiate from the sibling tool 'get_request_status', which could be confused with this one.

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

Usage Guidelines3/5

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

The description implies usage for retrieving details of a single request but provides no explicit guidance on when to use this tool versus 'list_requests' or 'get_request_status'. 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.

get_request_statusB
Read-only

Get the status of a specific API request

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
request_idYesthe ID of the request

TDQS

B3.3/5.0
Behavior3/5

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

The annotation readOnlyHint=true aligns with the description's 'Get' action, so no contradiction. The description does not add any behavioral details beyond the annotation, such as the effect of the optional 'depth' parameter or any rate limiting/auth requirements. With the annotation covering safety, 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.

Conciseness5/5

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

The description is a single, precise sentence with no redundant words or filler. It is optimally concise and front-loaded, capturing the tool's core function without unnecessary detail.

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

Completeness3/5

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

For a simple status retrieval tool, the description is minimally sufficient given the complete schema and readOnlyHint annotation. However, it does not explain what 'status' means, potential return values (no output schema), or how 'depth' affects results. This leaves some ambiguity for an agent deciding on usage.

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

Parameters3/5

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

Schema description coverage is 100%, with 'request_id' and 'depth' both described. The description adds no extra meaning about these parameters; it only mentions 'specific API request' without elaborating on depth or request ID format. Since the schema already handles parameter documentation, the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the tool retrieves the status of a specific API request. The verb 'Get' and resource 'status' make the purpose unambiguous. However, it does not differentiate from sibling 'get_request' which might return full request details, so it misses explicit sibling distinction.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives like 'get_request' or when to prefer 'list_requests'. There is no mention of context, prerequisites, or scenarios where this status-specific tool is appropriate.

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

get_security_groupA
Read-only

Get details of a specific security group

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
datacenter_idYesthe ID of the data center
security_group_idYesthe ID of the security group

TDQS

A3.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds no behavioral context beyond what the annotation implies—no mention of return format, nesting behavior via depth, or any side effects. It is a bare statement that repeats the tool's function without adding transparency.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded. It communicates the essential purpose without any wasted words.

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

Completeness4/5

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

For a simple single-resource getter with a full schema and read-only annotation, the description is adequate. It does not describe the return value, but the operation is straightforward and the parameter schema is complete, so the agent can infer expected behavior. Slight deduction due to lack of explicit mention of which details are returned.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (depth, datacenter_id, security_group_id) are already described in the input schema. The description does not add any additional meaning beyond the structured data, thus it aligns with the baseline of 3 for full schema coverage.

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

Purpose5/5

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

The description clearly states the action ('Get details') and the target resource ('a specific security group'). It distinguishes itself from list_security_groups by emphasizing specificity, and from get_security_group_rule by focusing on the group itself.

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

Usage Guidelines3/5

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

The description implies usage by requiring a specific security_group_id, but does not explicitly mention when to prefer this over list_security_groups or get_security_group_rule. No alternative tools are named. The word 'specific' gives some guidance but no explicit when/when-not.

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

get_security_group_ruleA
Read-only

Get details of a specific security group rule

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
rule_idYesthe ID of the security group rule
datacenter_idYesthe ID of the data center
security_group_idYesthe ID of the security group

TDQS

A3.8/5.0
Behavior3/5

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

The description is consistent with the readOnlyHint annotation, adding no contradiction. However, it provides no additional behavioral context beyond 'Get details', such as not-found behavior, return structure, or required permissions. With the annotation covering safety, the description meets the minimum expected value.

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

Conciseness5/5

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

The description is a single, complete sentence with no wasted words. 'Get details of a specific security group rule' is concise, front-loaded, 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.

Completeness4/5

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

Given the simple get-by-ID operation, complete schema descriptions, and read-only annotation, the description is adequate for an agent to invoke the tool. It lacks only explicit guidance on related list/get alternatives, but the core operation is well-defined.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (datacenter_id, security_group_id, rule_id, depth) already documented in the schema. The tool description adds no semantic context about how these parameters relate, so it does not exceed the baseline for full schema coverage.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('security group rule') with the modifier 'specific', clearly distinguishing it from sibling tools like list_security_group_rules and get_security_group. It precisely identifies the object of the operation.

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

Usage Guidelines3/5

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

The description implies usage when a single security group rule's details are needed, but it does not explicitly state when to use this tool versus alternatives. No mention is made of list_security_group_rules for listing or when not to use this tool.

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

get_serverB
Read-only

Get details of a specific server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

B3.3/5.0
Behavior3/5

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

The readOnlyHint annotation already communicates this is a safe read operation, and the description aligns with that. The description adds no behavioral context beyond the annotation, such as return shape, depth behavior, or any side effects, but also does not contradict it.

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

Conciseness5/5

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

The description is a single, focused sentence with no filler or redundant detail. It states the operation directly and efficiently.

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

Completeness3/5

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

For a simple read-only get operation with a well-specified schema and a readOnlyHint, the description is minimally viable. However, it provides no details about the return value, the role of the datacenter_id, or the meaning of the optional depth parameter, leaving some context undisclosed.

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

Parameters3/5

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

The input schema has 100% parameter description coverage, so the schema carries the needed parameter semantics. The description adds no additional meaning to the 'datacenter_id' or 'server_id' parameters beyond the generic 'specific server' idea.

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

Purpose4/5

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

Description uses a specific verb and resource ('Get details of a specific server') that clearly identifies a single-server retrieval operation. It distinguishes itself from list_servers and related per-server tools like get_server_gpu, though it doesn't explicitly differentiate those sibling tools.

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

Usage Guidelines2/5

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

No explicit guidance is given about when to use this tool versus alternatives such as list_servers or get_server_remote_console. The phrase 'specific server' implies single-resource retrieval, but there is no stated when/when-not logic or alternative tool naming.

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

get_server_gpuA
Read-only

Get details of a specific GPU attached to a server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
gpu_idYesthe ID of the GPU
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.9/5.0
Behavior3/5

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

The readOnlyHint annotation already communicates read-only behavior. The description adds no additional behavioral context like error cases, prerequisites, or side effects, so it provides minimal value beyond the annotation.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loaded with verb and resource. It efficiently conveys the core purpose.

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

Completeness3/5

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

For a simple getter with no output schema, the description gives the essential purpose but lacks detail about what 'details' are returned. Given the absence of an output schema, a bit more specificity about the response could be expected, but it's acceptable for a straightforward read operation.

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

Parameters3/5

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

Schema has 100% description coverage for all 4 parameters. The description does not elaborate on parameter meanings or relationships beyond the schema, so it matches the baseline for high coverage.

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

Purpose5/5

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

Description clearly states the action (Get) and specific resource (details of a GPU attached to a server). It distinguishes from siblings like get_server or list_server_gpus by specifying the GPU scope.

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

Usage Guidelines4/5

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

The description implicitly conveys it's for fetching details of a single GPU, but does not explicitly contrast with list_server_gpus or state when not to use. It's clear enough for the intended use case.

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

get_server_remote_consoleA
Read-only

Get the remote console URL for a specific server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe read operation. The description adds that the tool returns a URL, but does not disclose any additional behavioral traits such as whether the server must be running, whether the URL is temporary, or any error conditions. With annotations present, the bar is lower, but the description contributes minimal extra context beyond the purpose.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the tool's purpose. Every word earns its place, with no redundancy or filler.

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

Completeness4/5

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

For a simple read-only getter with two required parameters and no output schema, the description adequately conveys the return value (a URL). It does not mention error cases or prerequisites, but the tool's simplicity and the schema's full parameter documentation make the description sufficient for basic invocation.

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

Parameters3/5

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

Schema description coverage is 100%, with each parameter (server_id, datacenter_id, depth) already documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('remote console URL') with a clear scope ('for a specific server'). It clearly distinguishes from sibling tools like get_server (which retrieves server details) and get_server_gpu (GPU-specific info).

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

Usage Guidelines3/5

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

The description implies usage when the remote console URL is needed for a server, but provides no explicit when-to-use or when-not-to-use guidance, nor does it name alternatives. It is a simple getter, but the lack of any differentiation from the many sibling get_* tools leaves the agent to infer context.

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

get_snapshotA
Read-only

Get details of a specific snapshot

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
snapshot_idYesthe ID of the snapshot

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already signals a safe read operation, and the description does not contradict it. The description adds minimal context ('specific snapshot' scoping) but does not elaborate on behavior such as error handling, return format, or how depth affects the response.

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

Conciseness5/5

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

The description is a single, concise sentence that directly communicates the tool's purpose with zero wasted words or redundant structure.

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

Completeness4/5

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

For a simple two-parameter read operation with a readOnlyHint annotation, the description is sufficient to select and invoke the tool. While there is no output schema and the description doesn't elaborate on return values, the tool's function is straightforward 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.

Parameters3/5

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

The input schema provides 100% coverage with descriptions for both snapshot_id and depth, so the baseline is 3. The description adds no additional meaning beyond what the schema already states, and does not compensate for any gaps.

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

Purpose5/5

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

The description 'Get details of a specific snapshot' uses a specific verb ('Get') and resource ('snapshot'), clearly distinguishing it from list_snapshots and other get_* tools for different resources. It unambiguously states the tool's function.

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

Usage Guidelines3/5

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

Usage is implied by the word 'specific' — the tool is for retrieving a known snapshot by ID. However, there is no explicit guidance about when to use this versus list_snapshots or other alternatives, and 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.

get_target_groupA
Read-only

Get details of a specific target group

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
target_group_idYesthe ID of the target group

TDQS

A3.5/5.0
Behavior3/5

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

The annotations declare readOnlyHint: true, so the read-only nature is already covered. The description adds no extra behavioral insight, such as what fields are returned, whether it raises errors for non-existent IDs, or how the depth parameter affects the response. It is not misleading, but it does not go beyond the annotation.

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

Conciseness5/5

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

The description is a single concise sentence ('Get details of a specific target group') with no redundancy or wasted words. It is front-loaded and immediately clear about the tool's purpose.

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

Completeness3/5

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

Given the simple parameter set (2 params, 1 required), the lack of an output schema, and the presence of a read-only annotation, the description is minimally sufficient. However, it does not clarify what 'details' includes or whether nested objects are returned unless depth is specified—information that would improve completeness for an agent.

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

Parameters3/5

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

Schema description coverage is 100%—both target_group_id and depth have descriptions in the input schema. The tool description does not add any meaning beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description 'Get details of a specific target group' uses a clear verb ('Get') and resource ('target group'), and the word 'specific' indicates it retrieves a single entity by ID, distinguishing it from list_target_groups. It is straightforward and aligned with sibling get_* tools, though it does not explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies usage (you need a target_group_id to fetch one specific group), but it does not explicitly state when to use this tool versus list_target_groups or any other alternative. No exclusions or prerequisites are mentioned beyond the required parameter.

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

get_templateA
Read-only

Get details of a specific server template

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
template_idYesthe ID of the template

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes safety; the description adds nothing about response format or depth behavior. It is minimal but consistent with a read operation. There's no contradiction, but the description does not disclose what 'details' include.

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

Conciseness5/5

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

Single sentence, no waste, front-loaded with the key information.

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

Completeness3/5

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

For a simple get-by-ID tool with full schema parameter descriptions and readOnlyHint, the description is adequate but could mention the required ID and depth parameter behavior more explicitly. It also doesn't specify what 'details' includes, though schema coverage mitigates this.

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

Parameters3/5

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

Both parameters are fully documented in the schema (template_id and depth), and the description adds no extra meaning. With 100% schema coverage, the baseline of 3 applies.

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

Purpose5/5

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

The description 'Get details of a specific server template' clearly states the action (get), the object (server template), and that it targets a specific instance via ID. It unambiguously distinguishes from list_templates in the sibling tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus others, nor any prerequisites (e.g., needing to first call list_templates to obtain a template_id). For a get-by-ID operation, stating that the ID comes from list_templates would be helpful but is absent.

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

get_volumeA
Read-only

Get details of a specific volume

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5)
volume_idYesthe ID of the volume
datacenter_idYesthe ID of the data center

TDQS

A3.7/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes that this is a safe read operation, and the description's 'Get details' aligns with that. The description adds no extra behavioral context such as error cases, authorization requirements, or return format, but does not contradict the annotation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundant phrasing. Every word earns its place, and it is appropriately sized for a straightforward getter tool.

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

Completeness3/5

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

For a simple get-by-ID tool with full schema coverage and a read-only annotation, the description is minimally viable. However, with no output schema, it does not clarify what 'details' are returned, and it omits guidance on how the datacenter_id and volume_id relate to each other.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are fully documented in the input schema itself. The description adds no additional parameter guidance, matching the baseline expected when the schema carries the burden.

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

Purpose5/5

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

The description uses a specific verb+resource pattern ('Get details of a specific volume'), clearly distinguishing this tool from list_volumes and other getters. The word 'specific' communicates that this is a single-resource lookup by ID rather than a listing operation.

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

Usage Guidelines3/5

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

The description implies usage: call this when you need details for a known volume. However, it does not explicitly say when to prefer this over list_volumes or mention how to obtain the required IDs, leaving the guidance to inference.

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

head_object_storage_bucketB

Check whether an Object Storage bucket exists and is accessible with the current credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states the purpose (check existence and accessibility) but does not describe the return value, error behavior, or idempotency. The agent is left uncertain about the output format.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the purpose. It is efficiently sized but may be too brief to convey necessary behavioral details. Still, it avoids fluff.

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

Completeness2/5

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

Given the tool's simplicity (one param, no output schema, no annotations), the description should provide enough context about the return value or success criteria. It does not mention what the agent should expect (e.g., success vs error, response data). This gap makes it incomplete.

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

Parameters3/5

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

Schema coverage is 100% (only one parameter 'bucket' described as 'the name of the object storage bucket'). The description adds no additional parameter context beyond what the schema provides, 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.

Purpose5/5

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

The description clearly states the tool checks if an Object Storage bucket exists and is accessible, using a specific verb and resource. It distinguishes from sibling tools like 'get_object_storage_bucket_*' (which retrieve specific configurations) and 'list_object_storage_buckets' (which lists all buckets).

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

Usage Guidelines2/5

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

No usage guidelines are provided. The description does not specify when to use this tool versus alternatives (e.g., as a quick existence check before more detailed operations). It lacks context for the agent to decide appropriate invocation.

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

head_object_storage_objectA

Check whether an object exists in an Object Storage bucket and retrieve its user-defined metadata (x-amz-meta-* headers). Returns an error if the object does not exist or is not accessible.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesthe object key (path within the bucket)
bucketYesthe name of the object storage bucket

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: returns error if object does not exist or is not accessible, and retrieves user-defined metadata. It does not mention other possible responses but covers the main purpose.

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

Conciseness5/5

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

Two sentences, no redundant words. The essential information is front-loaded.

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

Completeness4/5

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

Despite no output schema, the description explains the primary return (metadata) and error condition. It could mention additional response headers but is sufficient for a basic HEAD operation.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds context about user-defined metadata but does not improve per-parameter semantics beyond the schema.

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

Purpose5/5

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

The description uses specific verb (Check/retrieve) and resource (object in Object Storage bucket), and clearly distinguishes from sibling tools like get_object_storage_object_legal_hold or list_object_storage_objects.

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

Usage Guidelines4/5

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

The description implies usage for existence checks and metadata retrieval, but does not explicitly contrast with GET or list operations. However, the context and verb 'head' align with HTTP HEAD semantics.

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

list_activitylog_contractsA

List contracts accessible for IONOS CLOUD activity log queries. Primarily useful for reseller and partner users with multiple contracts. Single-contract users can skip this — their contract number is embedded in the JWT token returned by get_billing_profile or visible in the IONOS DCD console.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations exist, so the description bears full burden. It implies a read-only behavior without side effects, and explains who should use it. However, it could explicitly state that it is a read operation and disclose any potential edge cases (e.g., error for single-contract users). Still, for a simple list tool, the transparency is good.

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

Conciseness5/5

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

The description is concise—two sentences that provide all necessary information without any fluff. It is front-loaded with the main purpose and then gives context.

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

Completeness4/5

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

Given the simplicity (0 parameters, no output schema), the description is complete in explaining the tool's audience and usage. It could mention the return format (e.g., list of contract IDs), but this is not critical as it's implied by the name and context.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, the description has no need to add parameter semantics. The baseline for no parameters is 4, and it meets that by not introducing any confusion.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb and resource ('List contracts accessible for IONOS CLOUD activity log queries'). It distinguishes the tool's value for reseller/partner users, setting it apart from other tools.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use guidance: it is primarily for reseller/partner users with multiple contracts, and single-contract users are directed to skip it and told where to find their contract number. This directly addresses usage context and alternatives.

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

list_activitylog_eventsA

Query the IONOS CLOUD activity log: full audit trail of API requests made against a contract (who did what, when, on which resource). Requires ACCESS_ACTIVITY_LOG privilege on the token. Defaults: last 7 days, limit 25, RequestStatusUpdate events excluded. Use user filter to narrow to a specific account. Use event_types to restrict to e.g. ['Error','RequestAccepted']. Maximum date range is 90 days — paginate or narrow the window for longer spans. Use list_activitylog_contracts first to look up the contract number if needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNofilter by username (client-side); e.g. 'ionosctl-v6@cloud.ionos.com' — drastically reduces output when investigating a specific user
limitNomax events to return; defaults to 25; increase only when the user explicitly asks for bulk data
offsetNo0-based pagination offset
contractYesthe contract number whose activity log to query; reseller/partner users get IDs from list_activitylog_contracts, single-contract users read it from their JWT
date_endNoinclusive end date YYYY-MM-DD; defaults to today when omitted; maximum range is 90 days
date_startNoinclusive start date YYYY-MM-DD; defaults to 7 days ago when omitted
event_typesNofilter to these event types only (client-side); e.g. ['Error','RequestAccepted'] — omit Provision and RequestStatusUpdate to cut ~65% of typical log volume
include_status_updatesNoinclude RequestStatusUpdate events (default false); these are async provisioning echoes that account for ~55% of log volume and are rarely useful

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Discloses default behavior (7 days, limit 25, excluded event types), maximum range, and pagination advice. Also mentions privilege requirement.

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

Conciseness5/5

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

Single paragraph, front-loaded with purpose, then requirements, defaults, and usage advice. Every sentence is meaningful and no redundant information.

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

Completeness4/5

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

No output schema, but input is fully described along with behavior and prerequisites. Lacks mention of output structure or pagination response details, but for a list tool this is acceptable.

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

Parameters5/5

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

Schema coverage is 100%, but description adds significant value: explains contract source, date range defaults, pagination offset, recommendation for limit increase, client-side filtering for user and event_types, and clarity on include_status_updates default and volume impact.

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

Purpose5/5

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

Clearly states 'Query the IONOS CLOUD activity log: full audit trail of API requests made against a contract (who did what, when, on which resource).' This is a specific verb+resource that distinguishes it from sibling list/get tools.

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

Usage Guidelines4/5

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

Provides explicit context: required privilege, defaults, maximum date range, and suggests using list_activitylog_contracts first for contract lookup. Does not explicitly state when not to use it, but the context is sufficient.

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

list_alb_forwarding_rulesB
Read-only

List all forwarding rules of an application load balancer

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center
application_loadbalancer_idYesthe ID of the application load balancer

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint: true, so the description doesn't need to state safety. However, the description adds no behavioral details like pagination, large result sets, or that filters can cause empty results (though filters are in schema). The description is silent on any limitations, but annotations cover the main safety aspect.

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

Conciseness5/5

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

The description is a single sentence, clear and front-loaded with the main action. No wasted words.

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

Completeness3/5

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

Given the tool is a simple list operation with read-only annotation and full schema coverage, the description is sufficient. However, there is no output schema, so the description could mention that it returns a list of forwarding rules, but that's implied. The tool has a sibling for NLB forwarding rules, and the description doesn't add differentiation.

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

Parameters3/5

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

The schema covers 100% of parameters with descriptions, including the crucial filter behavior note. The description itself doesn't add parameter details beyond 'all forwarding rules', but the schema's rich descriptions (e.g., filter retry advice) satisfy the need. Description adds little new semantic value.

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

Purpose4/5

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

The description clearly states the tool lists all forwarding rules for a specific application load balancer, using specific verb and resource. It distinguishes from get_application_loadbalancer (which gets the balancer itself) but is less differentiated from list_nlb_forwarding_rules (but the 'application load balancer' term suggests difference).

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. It implies use when you need all forwarding rules of an ALB, but doesn't mention alternatives like get_application_loadbalancer for details or filtering options. The sibling list_nlb_forwarding_rules is not addressed.

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

list_application_loadbalancersA
Read-only

List all application load balancers (ALB) in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safe-read behavior; the description adds the 'all' and datacenter scope. It does not disclose pagination, result ordering, or error behavior, but it does not contradict the annotation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It clearly states the action, resource, and scope in minimal space.

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

Completeness4/5

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

Given the readOnly annotation and fully described schema, the description is mostly sufficient for a simple list operation. It could mention return format or explicitly point to alternative list tools, but those are nice-to-haves rather than critical gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents datacenter_id, depth, and filters. The description adds no parameter-level 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.

Purpose5/5

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

The description uses a specific verb ('List') and resource ('application load balancers (ALB)') with a clear scope ('in a data center'). This differentiates it from siblings like get_application_loadbalancer (single resource) and list_loadbalancers (classic load balancers).

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

Usage Guidelines3/5

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

The description gives implied usage: use when you need all ALBs in a specific data center. However, it provides no explicit guidance about when not to use it or alternatives such as list_network_loadbalancers or list_alb_forwarding_rules.

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

list_billing_evnA

Get provisioning itemized data (EVN) for your contract for the current billing month. Shows per-resource usage intervals grouped by datacenter. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full responsibility. It states the tool outputs per-resource usage intervals grouped by datacenter, but does not disclose behavioral traits such as read-only nature, authentication needs, or rate limits. The description is minimally transparent.

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

Conciseness4/5

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

The description is concise with two sentences. The first sentence clearly states the main purpose, and the second briefly mentions an alternative output format. It is front-loaded but could be slightly more structured.

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

Completeness3/5

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

Given the tool has one required parameter and no output schema, the description explains the basic functionality and grouping. However, it lacks details on the return structure or example usage, which would help an agent fully understand the output with no schema present.

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

Parameters3/5

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

Schema coverage is 100% with the parameter 'contract' already described as 'contract number from get_billing_profile'. The description adds no further semantic value beyond the schema, just reiterates 'for your contract'. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool retrieves provisioning itemized data (EVN) for the current billing month, showing per-resource usage intervals grouped by datacenter. It differentiates from sibling tools like list_billing_evn_by_period by specifying the scope as 'current billing month'.

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

Usage Guidelines4/5

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

The description indicates usage for the current billing month and mentions an alternative for FOCUS v1.3 compliant output. It implicitly contrasts with list_billing_evn_by_period, but does not explicitly 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.

list_billing_evn_by_periodA

Get provisioning itemized data (EVN) for a specific billing period (YYYY-MM). One month per call. If the user requests a range longer than one month, calculate the number of monthly calls required, inform the user, and ask for permission before proceeding. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesbilling period in YYYY-MM format (e.g. 2026-04). Maximum one month per request — for wider ranges call once per month
contractYescontract number from get_billing_profile

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries full burden and excels. It discloses the tool's core constraint (one month per call) and provides a clear protocol for multi-month ranges (inform user, ask permission). It also mentions the ability to retrieve FOCUS v1.3 compliant output from another resource, which is a notable behavioral trait not evident from the schema.

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

Conciseness5/5

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

The description is concise—three sentences that front-load the purpose and key behavioral instructions. Every sentence adds value with no redundancy or unnecessary detail.

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

Completeness3/5

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

Given no output schema, the description is incomplete regarding the return value structure. It refers to 'provisioning itemized data (EVN)' without specifying fields or format. The multi-month handling instructions are good, but details like pagination, limits, or typical response size are missing, leaving the agent with gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description reinforces the constraint that period must be a single month, but adds no new semantic information beyond what the parameter descriptions already provide. The contract parameter's source (get_billing_profile) is already documented in the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves provisioning itemized data (EVN) for a specific billing period, with the constraint of one month per call. Among siblings, it distinguishes itself from list_billing_evn (which likely lacks period filtering) and other billing tools by focusing on EVN data for a given period.

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

Usage Guidelines4/5

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

The description provides explicit instructions for handling multi-month requests: calculate the number of calls, inform the user, and ask permission. It also mentions an alternative output format (FOCUS v1.3) via a resource. However, it does not explicitly compare to siblings like list_billing_invoices_by_period or list_billing_usage, leaving the agent to infer that this tool is for EVN data only.

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

list_billing_invoicesA

List all invoices for your IONOS CLOUD contract. Returns invoice IDs, dates, and amounts. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the tool lists all invoices and returns specific fields, but does not mention pagination, ordering, rate limits, or any destructive behavior. Given no contradiction with annotations (none exist), it is adequate but not comprehensive.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the primary purpose, and includes an additional note for an alternative output. Every sentence adds value; no waste.

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

Completeness4/5

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

Given a simple list tool with one parameter and no output schema, the description adequately covers what is returned (IDs, dates, amounts) and points to a focus spec resource. It lacks pagination details but is sufficient for the complexity level.

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

Parameters3/5

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

Schema coverage is 100% (the 'contract' parameter is described in the schema). The description adds no additional meaning 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.

Purpose5/5

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

The description clearly states the action ('List all invoices'), the resource ('for your IONOS CLOUD contract'), and the output ('Returns invoice IDs, dates, and amounts'). It distinguishes from siblings like get_billing_invoice (single) and list_billing_invoices_by_period (filtered).

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

Usage Guidelines3/5

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

The description mentions an alternative for FOCUS v1.3 output but does not explicitly state when to use this tool vs siblings like list_billing_invoices_by_period or get_billing_invoice. Usage context is implied but not specific.

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

list_billing_invoices_by_periodA

List invoices for a specific billing period (YYYY-MM). One month per call. If the user requests a range longer than one month, calculate the number of monthly calls required, inform the user, and ask for permission before proceeding. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesbilling period in YYYY-MM format (e.g. 2026-04)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not state that it is a read-only operation, nor does it mention authorization requirements, pagination, or error handling. It only discloses the monthly constraint and FOCUS v1.3 output option.

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

Conciseness5/5

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

Three sentences, no filler. First sentence states purpose, second gives constraint, third provides multi-call guidance, fourth adds output format note.

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

Completeness3/5

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

Despite simplicity, the description covers the one-month constraint and multi-call scenario, but lacks details on response format, error handling, or required permissions. The FOCUS note is a plus.

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

Parameters3/5

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

Schema coverage is 100% and the description does not add additional meaning beyond what the schema already provides for the 'period' parameter.

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

Purpose5/5

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

The description clearly states it lists invoices for a specific billing period in YYYY-MM format, with the constraint of one month per call. This distinguishes it from sibling tools like list_billing_invoices which likely lists all invoices without a period filter.

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

Usage Guidelines4/5

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

Provides explicit guidance: one month per call, and instructs to calculate and ask permission for longer ranges. Does not explicitly mention alternative tools but the context is clear.

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

list_billing_productsA

Search the IONOS CLOUD product/pricing catalog by keyword. The filter is applied client-side as a case-insensitive partial match on each product's description — it is not an API-level parameter. Returns non-deprecated products whose description contains the filter string. IMPORTANT: Only call this tool when the user has explicitly specified a product or category they want to see pricing for. If the user asks a broad question like 'what are the prices' or 'show me all products', do NOT guess keywords or call this tool multiple times — instead ask the user which specific product or category they are interested in. Examples of valid filters: 'RAM', 'core', 'storage', 'Kubernetes', 'Postgres', 'network', 'Windows'.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterYeskeyword to filter products by description (e.g. 'RAM', 'Kubernetes', 'Postgres', 'storage'). Use broad terms to find relevant pricing
contractYescontract number from get_billing_profile

TDQS

A4.6/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full burden. It discloses client-side filter application, case-insensitive partial matching, and return of non-deprecated products. It does not detail the response structure, which is a minor gap.

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

Conciseness5/5

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

The description is concise and well-structured: purpose first, then filter behavior, then usage guidelines. No wasted words; every sentence adds value.

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

Completeness4/5

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

Without an output schema, the description could better specify the response format (e.g., list of products with fields). However, it covers essential behavioral aspects and usage context, so it is nearly complete.

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

Parameters4/5

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

With 100% schema coverage, baseline is 3. Description adds value by providing concrete examples for the filter parameter and clarifying that contract comes from get_billing_profile, going beyond schema basics.

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

Purpose5/5

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

The description explicitly states 'Search the IONOS CLOUD product/pricing catalog by keyword', clearly defining the verb (search) and resource (product/pricing catalog). It distinguishes itself from sibling tools that list other entities, and explains the client-side filtering behavior.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Only call this tool when the user has explicitly specified a product or category... If the user asks a broad question... do NOT guess keywords... instead ask the user...' Also includes examples of valid filters.

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

list_billing_trafficA

Get network traffic data for your contract for the current billing month. Returns per-datacenter and per-NIC inbound/outbound traffic in bytes. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It states the tool returns traffic data (read-only implied) and specific fields. It does not disclose authorization requirements, rate limits, or side effects. Lacks explicit read-only hint but is transparent enough for a simple list operation.

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

Conciseness5/5

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

Two concise sentences: first covers purpose and scope, second specifies return content and mentions FOCUS alternative. No filler, front-loaded, efficient.

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

Completeness4/5

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

No output schema, so description must explain return format; it does so adequately (per-datacenter, per-NIC, bytes). It mentions required contract parameter but does not detail error handling or structure. Complete enough for a straightforward read tool.

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

Parameters3/5

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

Schema has 100% coverage for the single parameter 'contract', including source from get_billing_profile. Description adds no further detail beyond repeating 'for your contract'. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states verb 'get', resource 'network traffic data', scope 'for your contract for the current billing month', and specifies return details (per-datacenter and per-NIC traffic in bytes). It also notes an alternative for FOCUS output. This distinguishes it from sibling like list_billing_traffic_by_period.

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

Usage Guidelines4/5

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

Description implies use for current billing month and mentions an alternative resource for FOCUS compliance. It does not explicitly exclude use for other periods or mention when not to use, but the scope is clear.

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

list_billing_traffic_by_periodA

Get network traffic data for a specific billing period (YYYY-MM). One month per call. If the user requests a range longer than one month, calculate the number of monthly calls required, inform the user, and ask for permission before proceeding. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesbilling period in YYYY-MM format (e.g. 2026-04). Maximum one month per request — for wider ranges call once per month
contractYescontract number from get_billing_profile

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, description discloses the monthly constraint and the need for permission for ranges. Lacks details on permissions, rate limits, or result format, but the single-month constraint is well communicated.

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

Conciseness5/5

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

Very concise: three sentences covering purpose, constraint, and optional output format. No redundant or missing information. Each sentence earns its place.

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

Completeness3/5

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

Given no output schema, description does not describe return data structure. It mentions 'network traffic data' and FOCUS output but lacks details on fields, pagination, or size. 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.

Parameters3/5

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

Schema coverage is 100%, baseline is 3. Description adds value by specifying 'contract number from get_billing_profile' and reiterating period format with example. Does not significantly expand beyond schema.

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

Purpose5/5

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

Description clearly states 'Get network traffic data for a specific billing period (YYYY-MM)', specifying verb, resource, and constraint. Distinguishes from sibling 'list_billing_traffic' by including period parameter and monthly limitation.

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

Usage Guidelines5/5

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

Explicitly says 'One month per call' and provides clear instruction on handling longer ranges: calculate number of calls, inform user, ask permission. Also mentions FOCUS v1.3 output reference, giving additional context.

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

list_billing_usageA

Get aggregated resource usage for your contract for the current billing period. Shows metered quantities (CPU hours, GB-hours, etc.) grouped by datacenter. Defaults exclude zero-quantity meters (set include_zero=true to keep them). Filter by datacenter_id to narrow scope. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
contractYescontract number from get_billing_profile
include_zeroNoinclude meters with quantity 0 (default false); set true to find datacenters with metered SKUs that didn't consume
datacenter_idNoscope to a single datacenter (VDC UUID)

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses default behavior (exclude zero-quantity meters), grouping by datacenter, and filter option. However, it doesn't mention pagination or output format, which is acceptable for a simple list tool.

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

Conciseness5/5

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

The description is concise (4 sentences), front-loaded with the main purpose, and efficiently covers key features. No fluff or redundant information.

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

Completeness4/5

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

Given no output schema, the description provides good context: what is returned (metered quantities grouped by datacenter), default behavior, filter, and a hint for FOCUS output. It lacks explicit output fields but is sufficient for a billing tool.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds minimal value (e.g., mentioning metered quantity types) but mostly restates schema descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool aggregates resource usage for the current billing period, with a specific verb ('Get') and resource ('aggregated resource usage'). It distinguishes from siblings like get_billing_usage_by_datacenter by specifying contract-level aggregation with optional datacenter filter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context (current billing period, exclude zero by default) but does not explicitly state when to use this tool versus alternatives like get_billing_usage_by_datacenter or get_billing_invoice. It lacks explicit when-not or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_billing_utilizationA

Get per-resource utilization for the current billing period, grouped by datacenter. Defaults exclude zero-quantity meters (set include_zero=true to find idle resources). Use group_by='meter' or 'datacenter' to aggregate further, or top_n=N for a flat global ranking of the largest meters. Filter by datacenter_id, meter_types, or regions to narrow scope. For contracts with many datacenters, scope with regions, datacenter_id, or meter_types — or set top_n=10 for a flat global top-N list — before group_by=datacenter to keep the response under 25 KB. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNoreturn only the N largest meters globally, sorted by quantity desc — flat list with dc_id/dc_name on each row, datacenters[] omitted; ideal for cost audits on contracts with many datacenters. When combined with group_by='datacenter', top_meters[] rows have no meter_id (type+unit aggregates); with group_by='meter', meter_id is the SKU
regionsNofilter to these regions only (client-side); e.g. ['de/fra','es/vit']
contractYescontract number from get_billing_profile
group_byNoaggregation level: omitted or '' = per-resource (default), 'meter' = sum per SKU per datacenter, 'datacenter' = sum per type per datacenter — coarser groupings shrink output but lose detail
meter_typesNofilter to these meter type categories only (client-side); e.g. ['DBAAS','DNS','SERVER']
include_zeroNoinclude meters with quantity 0 (default false); set true to find existing resources that didn't consume in the window
datacenter_idNoscope to a single datacenter (VDC UUID)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses important behaviors: default exclusion of zero-quantity meters, client-side filtering for meter_types and regions, response size management (under 25 KB), and aggregation effects. It does not mention authentication or rate limits, but for a read-only list tool the behavioral coverage is good.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of moderate length, front-loaded with the core purpose. Every sentence adds value, and it avoids redundancy. However, it could be slightly more structured (e.g., bullet points for filtering vs aggregation) to improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters, no output schema, and no annotations, the description covers behavior extensively: default behavior, filtering, aggregation, performance limits, and response structure for top_n. It is nearly complete, though it does not describe the default response format beyond 'per-resource utilization grouped by datacenter'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant meaning beyond the schema: it explains defaults (include_zero), performance implications (top_n combinations), client-side vs server-side filtering, and aggregation trade-offs. This extra context greatly enhances an agent's ability to use parameters correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb and resource: 'Get per-resource utilization for the current billing period, grouped by datacenter.' It precisely states what the tool does, including scope and grouping. While it does not explicitly differentiate from siblings like list_billing_usage, the purpose 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: defaults exclude zero-quantity meters, when to set include_zero, and how to use group_by, top_n, and filters. It also includes performance advice for contracts with many datacenters. However, it does not contrast with alternative billing list tools such as list_billing_usage or list_billing_utilization_by_period.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_billing_utilization_by_periodA

Get per-resource utilization for a specific billing period (YYYY-MM). One month per call. If the user requests a range longer than one month, calculate the number of monthly calls required, inform the user, and ask for permission before proceeding. Same compaction flags as list_billing_utilization (include_zero, group_by, datacenter_id, meter_types, regions, top_n). For contracts with many datacenters, scope with regions, datacenter_id, or meter_types — or set top_n=10 for a flat global top-N list — before group_by=datacenter to keep the response under 25 KB. For FOCUS v1.3 compliant output, read resource ionos://billing/focus-v1.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNoreturn only the N largest meters globally, sorted by quantity desc (flat list, datacenters[] omitted). When combined with group_by='datacenter', top_meters[] rows have no meter_id
periodYesbilling period in YYYY-MM format (e.g. 2026-04). Maximum one month per request — for wider ranges call once per month
regionsNofilter to these regions only (client-side); e.g. ['de/fra']
contractYescontract number from get_billing_profile
group_byNoaggregation level: omitted or '' = per-resource (default), 'meter' = sum per SKU per datacenter, 'datacenter' = sum per type per datacenter
meter_typesNofilter to these meter type categories only (client-side); e.g. ['DBAAS','DNS','SERVER']
include_zeroNoinclude meters with quantity 0 (default false)
datacenter_idNoscope to a single datacenter (VDC UUID)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description handles full burden. Discloses single-month call limit, response size constraint, and effect of top_n with group_by. Does not explicitly state authentication/permissions, but as a read operation that's acceptable. Adds value beyond basic read hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose. Each sentence provides distinct value (behavior, procedure, optimization tips). Slightly dense third sentence but still clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key usage patterns, constraints, and reference to FOCUS v1.3. With 8 parameters and no output schema, description addresses response size and filtering strategies. Could mention typical response format but not critical for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds significant context: period constraint, range handling, same compaction flags as sibling, and details about top_n + group_by interaction. Enhances schema without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (get) and resource (per-resource utilization) with specific scope (billing period YYYY-MM). Differentiates from sibling list tools like list_billing_utilization by mentioning period constraint and referring to same compaction flags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit instructions for multi-month ranges (calculate calls, ask permission). Gives advice on scoping to keep response under 25 KB. Lacks explicit comparison to when to use list_billing_utilization instead, 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.

list_cert_auto_certificatesA
Read-only

List all auto-certificates in your IONOS Cloud Certificate Manager account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already discloses the safe read-only nature, so the description adds minimal extra behavioral context beyond scoping to the Certificate Manager account. It does not contradict the annotation, but it also does not disclose potential behaviors like pagination, result size limits, or empty-list behavior. This is adequate for a simple read-only list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It immediately identifies the action, resource, and scope, which is ideal for an agent scanning tool definitions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list operation, the description is complete enough. It tells the agent exactly what will happen: all auto-certificates in the account will be returned. No output schema is needed to understand the basic purpose, and the available annotations and zero-parameter schema leave no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description does not need to explain any parameter semantics. The schema coverage is effectively 100% with no input parameters, and the description's mention of listing 'all' auto-certificates communicates the lack of filtering or pagination parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('all auto-certificates') within a clearly defined scope ('IONOS Cloud Certificate Manager account'). It is directly distinguishable from sibling tools like get_cert_auto_certificate, which implies fetching a single resource rather than listing all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, and no exclusions or conditions are mentioned. Usage is only implied by the 'List all' phrasing, but an agent is not told, for example, to use get_cert_auto_certificate when needing a single auto-certificate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cert_certificatesA
Read-only

List all SSL/TLS certificates in your IONOS Cloud Certificate Manager account. Returns certificate metadata and public key material but not the private key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation. The description adds meaningful behavioral context by stating that the tool returns certificate metadata and public key material but not the private key, which is a useful and non-obvious disclosure. This goes beyond what annotations provide, though it does not cover potential pagination or ordering behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core action is front-loaded, and the second sentence adds essential output detail. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only list tool with no output schema, the description covers the essential information: what is listed, what is returned, and what is not returned. Minor gaps like pagination or sorting are not explicitly mentioned, but the description is complete enough for an agent to select and invoke the tool correctly in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description correctly avoids inventing parameter guidance and focuses on the result. There is no parameter semantics gap because there are no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('SSL/TLS certificates in your IONOS Cloud Certificate Manager account'), making the tool's purpose clear. It also adds what is returned and excludes the private key, which helps distinguish it from other certificate tools. However, it does not explicitly differentiate from sibling list_cert_auto_certificates, so a slight ambiguity remains.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you need all SSL/TLS certificates in the account, this is the list tool to use. It does not explicitly name alternatives like list_cert_auto_certificates or get_cert_certificate, nor does it state when not to use this tool. The usage guidance is clear enough for a straightforward no-parameter list operation but is not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cert_providersA
Read-only

List all certificate providers in your IONOS Cloud Certificate Manager account. Returns provider configuration but not the external account binding secret.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a useful behavioral note beyond the readOnlyHint annotation: it returns provider configuration but not the external account binding secret. This helps an agent understand the safe, read-only nature and what data is intentionally excluded. No pagination or rate-limit behavior is mentioned, but for a zero-parameter list tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, information-dense sentences with no filler. The main action and scope are front-loaded, and the behavioral note about the excluded secret is the only extra sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter read-only list tool with no output schema, the description is complete. It names the resource, the scope, and the notable omission in the result. An agent has enough to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the description clarifies the scope ('in your IONOS Cloud Certificate Manager account') without needing parameter-level documentation. This meets the baseline for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List all certificate providers in your IONOS Cloud Certificate Manager account.' It clearly defines scope and distinguishes itself from singular get-style operations like get_cert_provider.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'List all certificate providers in your account' makes the primary use case explicit. It does not explicitly name alternatives, but the plural 'all' and account scoping imply when this tool is appropriate versus a singular get tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_datacentersB
Read-only

List all virtual data centers. Returns names and basic properties by default (depth=1).

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1); depth 1 includes names and basic properties
filtersNoserver-side filters as property name to value pairs (contains match); e.g. {"name":"prod","location":"de/fra"}. Filterable properties include: name, description, location, version. If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The tool already carries readOnlyHint=true, lowering the bar. The description adds one meaningful behavioral detail: default depth=1 yields names and basic properties, so the agent knows bare calls return shallow data. This adds context, though it largely duplicates the depth parameter's own schema description; pagination, ordering, and result-size behavior for large accounts remain undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver purpose first, then the key behavioral default. Every word adds value; no fluff, no repetition of schema details, and the most important scoping information (the default depth behavior) comes second.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-param read-only list operation with a self-documenting schema and readOnlyHint annotation, the description covers its bases: upfront purpose and default behavior. The only real gap is pagination or limit handling for accounts with many datacenters, which would round out the operational picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the depth param's range/default and the filters object with its typo-silently-returns-empty warning are fully documented in the schema. The description's mention of 'depth=1' reinforces the schema but doesn't add parameter meaning beyond it, which aligns with the baseline-3 expectation for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all virtual data centers' uses a specific verb and resource, and 'all' signals collection-level behavior versus the singular get_datacenter sibling. However, it doesn't explicitly name or contrast the sibling tool to differentiate, so the distinction relies on the reader inferring from naming conventions rather than explicit guidance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use or when-not-to-use guidance, prerequisites, or alternatives. With a near-identical get_datacenter sibling available, an agent receives no explicit help choosing between listing all datacenters versus retrieving a single one — the very decision this field should support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_recordsA
Read-only

List all DNS records across all zones

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this as a safe read operation, and the description's 'List' verb is consistent. However, the description adds no extra behavioral context beyond the scope (all zones). It does not disclose potential pagination, response size implications, or whether the result includes DNS records from all zone types (primary, secondary, etc.). Since annotations cover the safety profile, a middle 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action, and contains no filler words. Every word earns its place, clearly conveying the operation and its scope without any unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only tool with a readOnlyHint annotation, the description is mostly complete, but it leaves some ambiguity about what 'all DNS records' encompasses—does it include secondary zone records or only primary zones? It also does not mention whether the response could be large or require pagination. Given the sibling list_dns_secondary_zone_records exists, a sentence clarifying the scope would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so schema description coverage is effectively 100%. Per the rubric, 0 params gives a baseline of 4; the description does not need to add parameter semantics because there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('all DNS records'), and the scope ('across all zones'). This distinguishes it from sibling tools like list_dns_zone_records or list_dns_secondary_zone_records, which are zone-specific. The verb and resource are specific enough that an agent immediately knows what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as list_dns_zone_records or list_dns_secondary_zone_records. The description does not mention the trade-off between fetching everything at once versus zone-scoped queries, nor any prerequisites or limitations. An agent must infer usage context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_reverse_recordsA
Read-only

List all reverse DNS records in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description adds the scope 'in your IONOS CLOUD account', which is useful. However, it does not disclose other behavioral traits like result ordering, pagination, or whether this includes records across all zones. With annotations covering the safety profile, the added scope justifies a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the core action and resource. Every word earns its place; it is concise without sacrificing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list operation with readOnlyHint provided, this description is nearly complete. It clearly identifies the resource scope (account-level reverse DNS records). The lack of detail about return format is acceptable given the absence of an output schema and the simplicity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema is an empty object, so no parameter documentation is needed. The description adds a small amount of semantic context by stating that all reverse DNS records are returned, which is the baseline 4 for no-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List all reverse DNS records'. It clearly distinguishes from sibling tools like list_dns_records and get_dns_reverse_record by specifying 'reverse DNS records', so an agent can identify the correct operation without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as list_dns_records or get_dns_reverse_record. It does not mention any filtering, pagination, or prerequisites, leaving usage context entirely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_secondary_zone_recordsB
Read-only

List all DNS records in a specific secondary zone

ParametersJSON Schema
NameRequiredDescriptionDefault
secondary_zone_idYesthe ID of the secondary DNS zone

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation, and the description does not contradict it. The description adds that records are scoped to a secondary zone, but it discloses nothing about pagination, response size, ordering, rate limits, or other behavioral traits. Some added value, but minimal beyond annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant phrasing. Every word contributes to identifying what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only list operation with one fully documented parameter latch, the description is largely sufficient: it names the resource, the scope, and which zone to target. The only gap is the lack of any indication about the response format, since there is no output schema, but the low complexity keeps this from being a serious deficiency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter secondary_zone_id is already fully documented in the schema. The description adds no meaning beyond restating the zone context, so it neither helps nor hurts; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List all DNS records') and narrows scope to 'a specific secondary zone,' which makes the tool's purpose understandable. It is clear, but it does not explicitly contrast itself with closely related siblings like list_dns_zone_records or list_dns_records, so it stops short of perfect differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over alternatives. An agent must infer that this is for secondary-zone records, but there is no mention of when not to use it, what distinguishes it from list_dns_zone_records, or how it relates to list_dns_secondary_zones.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_secondary_zonesA
Read-only

List all secondary DNS zones in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The operation is read-only and the readOnlyHint annotation already covers that safety profile. The description adds no new behavioral details such as pagination, result shape, or scoping beyond what the annotation and name imply. It does not contradict 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler or redundant content. It front-loads the action and resource immediately and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only list operation with a readOnlyHint annotation, this description is sufficiently complete. An agent knows what the tool does and can select it correctly from the sibling tools without additional guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters and the schema has full coverage of that fact. With no parameters, there is nothing for the description to explain beyond confirming it is a listing operation, which it does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List all secondary DNS zones'. It also scopes to the user's IONOS CLOUD account. The word 'secondary' distinguishes this from the sibling tool list_dns_zones without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for enumerating secondary DNS zones, and the 'all' wording implies collection vs single-item retrieval like get_dns_secondary_zone. However, it does not explicitly state when to prefer this over list_dns_zones or list_dns_secondary_zone_records.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_zone_dnssec_keysA
Read-only

List DNSSEC keys for a specific DNS zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesthe ID of the DNS zone

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already establishes the read-only behavior, and the description does not disclose additional behavioral traits such as return format, empty-list behavior, or pagination. No contradiction exists, but no extra context is added beyond what annotations and schema already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word carries meaning and the core operation is immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity list operation with one documented required parameter and a readOnlyHint, the description is functionally complete. It lacks only optional niceties such as pagination or return-shape details, which are not critical for correct invocation here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single required zone_id parameter. The description does not add semantic detail beyond 'specific DNS zone', which aligns with the schema's own description, so the schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('List'), resource ('DNSSEC keys'), and scope ('for a specific DNS zone'). This clearly distinguishes it from sibling tools like list_dns_zone_records and list_dns_zones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a specific DNS zone' implies it should be used when targeting one zone via zone_id, but no explicit when-not-to-use guidance or alternatives are provided. With many DNS sibling tools available, naming an alternative would strengthen this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_zone_recordsB
Read-only

List all DNS records in a specific zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesthe ID of the DNS zone

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the readOnlyHint annotation and adds the scoping detail that all records for a single zone are returned. With annotations already covering the read-only safety profile, the description provides minimal but acceptable additional behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single concise sentence that is front-loaded and contains no redundant information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only list operation, the description combined with the schema and annotation is enough to invoke the tool. However, sibling ambiguity is not addressed, so agents may need to infer the exact use case among similar list operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents zone_id with 100% coverage, and the description's 'specific zone' merely restates the parameter's purpose. No additional parameter meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('List') and resource ('all DNS records in a specific zone'), making the tool's function obvious. It differentiates from list_dns_records by emphasizing zone scoping, but does not explicitly distinguish itself from list_dns_secondary_zone_records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as list_dns_records or list_dns_secondary_zone_records. The description only states the action, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_zonesA
Read-only

List all DNS zones in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation, and the description adds scope but no further behavioral details such as pagination, ordering, or response shape. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to communicating the tool's purpose and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool, this description is nearly complete. The only minor gaps are the lack of explicit differentiation from secondary zones and no mention of pagination or return details, but neither is critical for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool accepts zero parameters and the schema coverage is 100%, so there is no parameter information for the description to add. The baseline of 4 for a zero-parameter tool is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a resource ('DNS zones'), and a clear scope ('all in your IONOS CLOUD account'). However, it does not explicitly differentiate from the sibling list_dns_secondary_zones, leaving slight ambiguity about whether secondary zones are included.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied: use this when you need to enumerate all DNS zones in the account. It does not explicitly state when not to use it or point to alternatives like list_dns_secondary_zones for secondary zones.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_firewall_rulesA
Read-only

List all firewall rules on a network interface

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
nic_idYesthe ID of the network interface
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","type":"INGRESS","direction":"INBOUND"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals a safe read operation, and the description is consistent with it. The phrase 'all firewall rules' adds mild behavioral context (returns a collection rather than a single rule), but the description does not disclose deeper behavior such as pagination or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundant clauses. Every word contributes to identifying the action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward list operation with a well-documented schema and readOnly annotation, the description is minimally adequate. However, it omits guidance on optional behavior like filtering, depth, or what an empty result means, which the schema partially compensates for but the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no additional meaning beyond reflecting the role of nic_id ('on a network interface'), so it neither improves nor harms parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and identifies the exact resource ('firewall rules') plus scope ('on a network interface'), which clearly distinguishes it from the single-resource 'get_firewall_rule' and from rule-listing tools for other resource types like security groups or NAT gateways.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool—when firewall rules for a specific NIC are needed—but it does not explicitly state alternatives, exclusion criteria, or when another sibling list tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_imagesA
Read-only

List all available images (OS templates) in IONOS CLOUD

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"ubuntu","imageType":"HDD","licenceType":"LINUX","location":"de/fra"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds useful scope clarification by calling images 'OS templates'. However, it does not disclose behavioral details such as pagination, default depth implications, or the silent-empty-result behavior of filters, leaving those to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with the action and resource, containing no filler or redundancy. It is appropriately concise for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with well-described parameters and a clear annotation, the description is mostly sufficient. The only notable gaps are lack of return-format or pagination details and sibling differentiation, but no output schema exists to fill those gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of the parameters with descriptions for depth and filters, including filter semantics and a silent-empty-result caveat. The description itself adds no parameter-level meaning, so the rubric baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' with resource 'images (OS templates)' and scope 'all available images in IONOS CLOUD'. This clearly identifies the tool's function and helps distinguish it from sibling tools like list_templates in a large list_* family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus similar list_* alternatives, nor does it mention exclusions or prerequisites. The usage context is only implied by the tool name and the verb 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ip_blocksA
Read-only

List all reserved IP blocks in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","location":"de/fra"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include readOnlyHint: true, and the description aligns with that consistently. However, the description adds no extra behavioral context beyond the annotation (e.g., no mention of pagination, result size, or side effects). With annotations covering the read-only nature, the description adds minimal incremental transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise, front-loaded, and free of extraneous information. It efficiently states the action and target without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with two well-documented parameters and a read-only annotation, the one-line description is sufficient. It covers the core purpose, and the schema handles parameter details. While it lacks optional usage hints, its brevity is acceptable for the tool's straightforward nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% description coverage for both parameters (:depth and :filters), including detailed context for filters (e.g., the retry advice). The tool description contributes no extra parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all reserved IP blocks in your IONOS CLOUD account' uses a specific verb (List) and resource (reserved IP blocks), clearly distinguishing it from sibling tools like get_ip_block. The scope 'all' and 'in your IONOS CLOUD account' is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., get_ip_block for a specific block) or when not to use it. The description does not mention any exclusions or context for selection, leaving usage to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_k8s_clustersA
Read-only

List all Kubernetes clusters in your IONOS CLOUD account. Returns names and basic properties by default (depth=1).

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so read-only is known. The description adds context about default depth of 1 returning names and basic properties, and hints at nesting behavior. It does not contradict annotations and adds value beyond the read-only flag.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no unnecessary words. The first sentence states purpose, the second explains default behavior. Perfectly front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter and no output schema, the description is adequate. It explains scope and default behavior. It doesn't mention pagination or limits, but these are not critical for a basic list. The sibling get_k8s_cluster covers detailed properties, so overall completeness is good.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the depth parameter with a description (0-5, default 1), and the tool description reinforces that default returns basic properties. It adds meaning about how depth affects response, even though schema already documents the parameter well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all Kubernetes clusters in the IONOS Cloud account, differentiating from get_k8s_cluster (single cluster) and list_k8s_nodepools (nodepools instead). It explicitly mentions returning names and basic properties, giving a specific verb and resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing all clusters without explicit alternatives. It states 'all' which contrasts with get_k8s_cluster, but does not explicitly say when not to use or mention alternatives. However, the scope is clear enough for agent selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_k8s_nodepool_nodesA
Read-only

List all worker nodes in a Kubernetes node pool, including each node's state and public/private IP addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
nodepool_idYesthe ID of the Kubernetes node pool
k8s_cluster_idYesthe ID of the Kubernetes cluster

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only behavior is known. The description adds useful output details ('state and public/private IP addresses') but doesn't disclose other traits like pagination or depth handling. It's consistent with annotations and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys purpose and output content without any filler. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listed tool with all parameters documented in the schema and a readOnly annotation, the description is complete. It explains the core operation and return content, and there is no output schema to complicate matters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (depth, nodepool_id, k8s_cluster_id are all described). The description itself adds no parameter-specific meaning, but with full schema coverage the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List all worker nodes in a Kubernetes node pool'. It clearly distinguishes this tool from siblings like list_k8s_nodepools (lists pools, not nodes) and get_k8s_node (fetches a single node).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The statement 'List all worker nodes in a Kubernetes node pool' clearly indicates the context for use. It doesn't explicitly name alternatives or when-not-to-use, but the operation is unambiguous enough that an agent can infer when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_k8s_nodepoolsA
Read-only

List all node pools in a Kubernetes cluster. A cluster with no node pools runs no workloads.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1 for list operations)
k8s_cluster_idYesthe ID of the Kubernetes cluster

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers safety, and the description adds a minor behavioral note about empty clusters. However, it does not disclose output format, pagination, or potential errors, so transparency is limited beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences. The second sentence ('A cluster with no node pools runs no workloads.') is slightly redundant but adds a bit of context about typical usage without bloating the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the absence of an output schema, the description provides no information about the return value or response structure. It is acceptable but not complete; agents might need to infer typical list behavior from sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides full descriptions for both parameters (k8s_cluster_id and depth), and the tool description does not add any extra meaning or context to them. It neither clarifies nor expands on the parameter definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all node pools') and the resource ('in a Kubernetes cluster'), which precisely differentiates it from sibling list tools targeting other resource types. It 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this over alternatives, such as list_k8s_clusters or list_k8s_nodepool_nodes. It implies usage for retrieving node pools, but lacks direct comparative context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_k8s_versionsA
Read-only

List all available Kubernetes versions in IONOS CLOUD. These are the versions a new cluster or node pool may be created with; to upgrade an existing one, use its availableUpgradeVersions instead (get_k8s_cluster / get_k8s_nodepool).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this as a safe read operation. The description adds value by clarifying the scope of versions (creation vs upgrade), which is a useful behavioral nuance. It does not disclose other traits like response format, but for a simple list tool, this is sufficient beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the core purpose, the second provides usage guidance and alternatives. It is front-loaded, concise, and every sentence earns its place. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema), the description is fully complete. It tells the agent what the tool returns (list of versions), when to use it, and which alternatives exist. The context signals confirm no additional information is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline is 4 per the rules. The description does not need to elaborate on parameters, and it doesn't add irrelevant info. The empty schema is fully covered, so no further parameter explanation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available Kubernetes versions in IONOS CLOUD, using a specific verb+resource. It distinguishes from related siblings by noting these versions are for creating new clusters/node pools, not for upgrades, which differentiates it from get_k8s_cluster/get_k8s_nodepool and get_k8s_default_version.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (for creation of new clusters/node pools) and when not to (for upgrades), and directly names alternatives via availableUpgradeVersions and get_k8s_cluster/get_k8s_nodepool. This gives clear, actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_lan_nicsA
Read-only

List all NICs attached to a specific LAN

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
lan_idYesthe ID of the LAN
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, confirming read-only operation. The description simply says 'List', which aligns with annotations. It adds no extra behavioral context (e.g., pagination, return format, or filtering behavior beyond what the schema provides). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, concise sentence with no wasted words. It is front-loaded and clearly states the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool simplicity, no output schema, and the presence of good parameter descriptions and readOnly annotation, the description is adequate. It could mention that it returns a list of NICs, but that is implied by 'List'. The depth and filters parameters are well-documented in the schema, so no additional context is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters have descriptions. The tool description itself does not add parameter details, but since the schema covers them, a baseline of 3 is appropriate. The detailed filters description in the schema includes retry guidance, which adds value beyond the basic schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (List), resource (NICs), and scope (attached to a specific LAN). This distinguishes it from siblings like list_nics (all NICs) and list_loadbalancer_nics (NICs on load balancers).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose is clear, but the description does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or alternative guidance provided, though the name and context make usage fairly obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_lansA
Read-only

List all LANs in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation `readOnlyHint: true` establishes safety, and the description's 'list' aligns. However, the description adds no behavioral context beyond the annotation—no mention of filtering behavior, depth, or result size. Given annotations, the bar is lower, but there is no extra disclosure to elevate the score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the core purpose with zero filler. Every word earns its place; it is concise and immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with a single required parameter and no output schema, the description adequately conveys scope. The schema covers parameter nuances (filters, depth), so the description does not need to repeat them. It omits any pagination or response-format hints, but that is not critical for a simple read-only list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented (e.g., filters, depth, datacenter_id). The description contributes no parameter-specific meaning; it rests fully on the schema, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all LANs in a data center' clearly identifies the action (list), resource (LANs), and scope (per data center). It distinguishes from siblings like `get_lan` (single) and `list_lan_nics` (NICs, not LANs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via the required datacenter_id but does not explicitly state when to prefer this tool over alternatives like `get_lan` or `list_lan_nics`. It lacks exclusionary or alternative guidance, though the name and context make the primary use case obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_loadbalancer_nicsA
Read-only

List all NICs balanced by a specific load balancer

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center
loadbalancer_idYesthe ID of the load balancer

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint: true, so the agent already knows this is a safe read operation. The description adds the scope of NICs associated with a load balancer but does not disclose behaviors like pagination, filtering defaults, or what happens when no NICs are found. With annotations covering safety, the additional behavioral context is limited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded with the action and resource, and every word contributes to the meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with a read-only annotation and full parameter descriptions, the description is fairly complete. It could mention return format or pagination, but such details are less critical for a simple list tool. Overall, the context is sufficient for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, documenting all four parameters (depth, filters, datacenter_id, loadbalancer_id) with their own descriptions. The tool description itself does not add any parameter-level guidance, so it does not exceed the baseline provided by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all NICs balanced by a specific load balancer' clearly states a specific verb and resource, and the phrase 'balanced by a specific load balancer' provides scope that distinguishes it from generic list_nics or list_lan_nics. It does not explicitly name sibling tools, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the scope phrase, but the description does not explicitly state when to use this tool versus alternatives like list_nics or list_lan_nics, nor does it mention exclusions. This is a clear but minimal level of guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_loadbalancersA
Read-only

List all load balancers in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds the scoping constraint to a data center, which is useful, but does not disclose any additional behavioral aspects such as pagination. With the annotation covering safety, the description contributes limited extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is a single, six-word sentence that is front-loaded with the key action and noun. No words are wasted, and it effectively communicates the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward list operation with only three parameters and no output schema, the description covers the essential scoping to a data center. It could potentially mention that datacenter_id is required, but that is already captured in the schema, so the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters documented. The description adds no parameter semantics beyond the schema, maintaining the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), identifies the resource ('load balancers'), and scopes it to 'in a data center', clearly distinguishing it from sibling list tools. The scope also hints at the required datacenter_id dependency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to list load balancers within a data center) but provides no explicit guidance on when to prefer alternatives like list_application_loadbalancers or get_loadbalancer. There is no mention of exclusions or fallback behavior, matching the 'implied usage' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_locationsB
Read-only

List all available locations (regions) in IONOS CLOUD

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"Frankfurt"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety profile, and the description adds the scope 'available locations (regions)' and 'IONOS CLOUD.' It does not disclose further behavioral traits like pagination, authorization requirements, or return collection shape, but for a simple listing tool this is acceptable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff. Every word contributes to identifying the tool's purpose and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-required-parameter listing tool with full schema coverage, this description is largely complete. The absence of an output schema means return-value details are not strictly required, though a note distinguishing this from `list_object_storage_regions` would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both `depth` and `filters`, including the filter caveat about silent empty results. The tool description itself adds no 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-plus-resource construction: 'List all available locations (regions) in IONOS CLOUD.' It clearly states the tool's function and scope, but it does not distinguish itself from the sibling `list_object_storage_regions`, which could cause selection ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as `list_object_storage_regions` or `get_object_storage_region`. It only implies enumeration via 'List all,' with no exclusions, prerequisites, 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.

list_nat_gateway_rulesA
Read-only

List all rules of a specific NAT gateway

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","type":"SNAT"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center
nat_gateway_idYesthe ID of the NAT gateway

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows this is a safe read operation. The description adds no additional behavioral context such as pagination, depth handling, or permission requirements. It does not contradict annotations, but the value added is minimal since the description only restates the obvious read action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence that states exactly what the tool does. There is no wasted words or unnecessary details, making it perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with no output schema, the description is adequate. It clearly states what it returns (all rules) and the required context (specific NAT gateway). While it could mention that depth and filters are available, those are already documented in the schema, so the description itself is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters (depth, filters, datacenter_id, nat_gateway_id) are already well-documented. The tool description does not add any extra meaning beyond what the schema provides—it only mentions the IDs indirectly via 'specific NAT gateway'. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all rules of a specific NAT gateway, requiring both datacenter_id and nat_gateway_id. This distinguishes it from sibling tools like list_nat_gateways (which lists gateways) and get_nat_gateway (which retrieves a single gateway), 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you have a specific NAT gateway ID and need its rules. It does not mention alternatives or exclusions, but the context is clear given the sibling list where no other rule-listing tool exists. It could be improved by noting that the user must first identify the NAT gateway, but the intent is obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_nat_gatewaysA
Read-only

List all NAT gateways in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already informs the agent this is a safe read operation. The description adds the useful scope constraint 'in a data center', but it does not disclose additional behaviors such as pagination, response size limits, or the fact that filters can silently return empty results. This is acceptable but not particularly rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states exactly what the tool does. Every word contributes meaning and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the description combined with the detailed input schema (required datacenter_id, depth range, filter warning) is largely sufficient. There is no output schema, but the nature of the operation makes return semantics predictable, and the description covers the core purpose without needing to explain every edge case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with datacenter_id, depth, and filters all described in the schema. The description's 'in a data center' phrase reinforces datacenter_id but adds no new meaning beyond what the schema already provides. Baseline 3 is appropriate since the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb ('List'), the resource ('NAT gateways'), and the scope ('in a data center'), making it straightforward to distinguish from sibling tools like get_nat_gateway (single item) and list_nat_gateway_rules (rules of a gateway).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage context obvious: when you need all NAT gateways within a specific data center. It does not explicitly name alternatives (e.g., get_nat_gateway for a single gateway), but the scope is clear and there are no confusing exclusions or conflicting guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_network_loadbalancersA
Read-only

List all network load balancers (NLB) in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the read-only safety profile, so the description's burden is lower. It adds useful scoping context ('all' NLBs in a datacenter) but does not disclose additional behavioral traits such as pagination, response shape, or default depth. This is adequate but not especially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'List all network load balancers (NLB) in a data center.' Every word is functional, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation with a fully described input schema and a readOnlyHint annotation, the description plus schema is sufficient for an agent to select and invoke the tool correctly. It could be more complete by mentioning return/pagination behavior, but 'list' makes the basic return value inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters (datacenter_id, depth, filters), including details like nesting depth and contains-match filter semantics. The tool description adds no parameter-level meaning beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List all network load balancers (NLB) in a data center' — a specific verb ('list'), a specific resource ('network load balancers/NLB'), and a clear scope ('in a data center'). The 'NLB' qualifier and 'all' help distinguish it from sibling tools like get_network_loadbalancer and list_application_loadbalancers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when you need all network load balancers within a datacenter. It does not explicitly state when not to use it or mention alternatives such as list_application_loadbalancers or list_loadbalancers. Usage context is present but exclusion/alternative guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_nicsA
Read-only

List all network interfaces (NICs) attached to a server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations include readOnlyHint=true, and the description says 'List', which is consistent. However, the description adds no extra behavioral context beyond the annotation—no mention of pagination, response format, or the depth/filters behavior. The schema's filters description warns about silent empty returns, but that is in the schema, not the description. The description does not contradict the annotation, so it scores a baseline 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that immediately states the action and scope. There is no unnecessary fluff, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description could have mentioned what the response contains (e.g., NIC properties) or any pagination. However, it clearly states it lists all NICs for a server, and the tool's simplicity plus the presence of depth/filters in the schema covers common needs. It's adequate but not exceptionally detailed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all parameters (datacenter_id, server_id, depth, filters), so schema coverage is likely 100%. The description does not add any further meaning about the parameters; it merely restates the purpose. The filters parameter has a useful warning in the schema, but the description itself doesn't enrich parameter understanding. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is unambiguous: 'List all network interfaces (NICs) attached to a server' clearly states the verb (list), the resource (network interfaces/NICs), and the scope (attached to a server). It distinguishes itself from sibling tools like list_lan_nics or list_loadbalancer_nics by specifying 'server' context, and from get_nic (singular) by indicating all NICs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells what it does but does not explicitly mention when to use it versus alternatives, such as list_lan_nics for LAN-level NICs or get_nic for a single NIC. The context is implied by name and description, but no explicit 'use this when' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_nlb_forwarding_rulesA
Read-only

List all forwarding rules of a network load balancer

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center
network_loadbalancer_idYesthe ID of the network load balancer

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already communicates that this is a safe read operation, lowering the disclosure burden. The description adds no behavioral details beyond the domain (network load balancer) and does not mention pagination, response shape, filter behavior, or whether returning an empty list is possible. It neither contradicts nor meaningfully extends 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short, front-loaded sentence with no filler, repetition, or digressions. Every word contributes to identifying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool, the combination of a clear one-line description, readOnly annotation, and fully self-describing input schema is largely sufficient. The main missing pieces are output shape/pagination guidance and sibling-tool disambiguation, but neither is critical given how narrow and discoverable the operation is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents datacenter_id, network_loadbalancer_id, depth, and filtersincluding the important silent-empty-warning for filters. The tool description adds no parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific and action-oriented: "List all forwarding rules of a network load balancer" clearly identifies the operation, resource, and scope. It also naturally distinguishes this from sibling list_alb_forwarding_rules since it targets the network load balancer rather than the application load balancer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is reasonably inferable from the description and required parameters, but there is no explicit when-to-use or when-not-to-use guidance. It does not mention the alternative list_alb_forwarding_rules or clarify what distinguishes this tool from similar list tools, so the guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_object_storage_access_keysA

List all Object Storage access keys for the contract. Returns key IDs and metadata but not the secret keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It mentions that secret keys are not returned, which is a useful transparency, but does not disclose any authentication needs, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each serving a distinct purpose: stating the action and clarifying what is not returned. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no parameters, the description adequately covers the tool's purpose and output limitations. It could mention pagination or ordering, but it's not strictly necessary for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. The description adds context about the contract scope and returns beyond what the schema provides, achieving the baseline expectation for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all Object Storage access keys for the contract, distinguishing from the sibling 'get_object_storage_access_key' which retrieves a single key. It also specifies what is returned and what is not (no secret keys).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit instructions on when to use this tool versus alternatives like 'get_object_storage_access_key'. The usage is implied from the listing nature, 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.

list_object_storage_bucketsA

List all Object Storage buckets owned by the contract.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully disclose behavior. It only states the basic operation with no mention of side effects, permissions, pagination, or response characteristics. The phrase 'owned by the contract' is vague and lacks context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence (8 words) with no redundancy. Every word is essential, achieving maximum conciseness for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description provides the core purpose. However, it does not explain how the contract is determined or what the output contains (e.g., bucket names, metadata). Slightly more context would help, but it is largely complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description does not need to add parameter meaning. The baseline for zero parameters is 4. The schema coverage is 100% trivially.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'list' and the resource 'Object Storage buckets owned by the contract'. It is specific enough to distinguish from sibling tools like list_object_storage_access_keys or list_object_storage_objects, which target different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or comparisons to other list tools, leaving the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_object_storage_objectsA

List objects in an Object Storage bucket. Supports an optional prefix to filter by key path (e.g. 'images/' to list only objects under that prefix), an optional continuation_token to continue from a previous page, and an optional max_keys to control page size. Returns up to 1000 objects per call by default; use the next_continuation_token from the response as continuation_token in a subsequent call to page through larger result sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket
prefixNooptional key prefix to filter results (e.g. 'images/' to list only objects under that path)
max_keysNooptional maximum number of objects to return in a single page
continuation_tokenNooptional pagination token returned by a previous list operation to continue listing objects

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: lists objects, supports prefix filtering and pagination, default page size of 1000, and use of next_continuation_token. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences), front-loaded with the core purpose, and efficiently covers optional parameters and pagination without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains pagination and default page size, which is sufficient for an agent to page through results. Lacking details on error conditions or empty results, but still fairly complete for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters are fully described in the schema (100% coverage). The description adds value by providing a concrete example for prefix ('images/') and explaining the pagination flow, going beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List objects in an Object Storage bucket' with a specific verb and resource. It is distinct from sibling tools like list_object_storage_buckets and list_object_storage_object_versions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use optional parameters (prefix, continuation_token, max_keys) and how pagination works. However, it does not explicitly exclude use for other purposes or compare with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_object_storage_object_versionsA

List all versions of objects in an Object Storage bucket. Requires versioning to be enabled on the bucket. Supports an optional prefix filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
bucketYesthe name of the object storage bucket
prefixNooptional key prefix to filter versions

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states it lists versions and requires versioning, but does not disclose return format, pagination, or error behavior if versioning is off. Adequate but could be improved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action, and no unnecessary words. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but the description covers the main purpose, prerequisite, and optional filter. It could mention the return format (list of versions), but given the tool's simplicity and sibling patterns, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the prerequisite (versioning enabled for the bucket) beyond the schema's simple property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all versions of objects in a bucket, using a specific verb and resource. It distinguishes from siblings like list_object_storage_objects (which lists current objects, not versions) and other get/list object storage tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite (versioning must be enabled) and an optional prefix filter, guiding proper use. It does not explicitly name alternatives but implies when to use this vs. list_object_storage_objects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_object_storage_regionsA

List all available Object Storage regions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only, non-destructive listing operation without side effects, which is appropriate. However, no additional behavioral context (e.g., authentication, rate limits) is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with no output schema, the description is sufficient. However, slight additional detail about the returned fields (e.g., region IDs or names) would enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so baseline is 4. The description adds no parameter details, which is acceptable as none are needed. The scope 'all available' is a minor addition beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'Object Storage regions' with scope 'all available'. It effectively distinguishes from the sibling tool 'get_object_storage_region' which likely retrieves a single region's details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like get_object_storage_region. The context of sibling names provides implicit differentiation, but an explicit mention would improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_private_cross_connectsA
Read-only

List all private cross-connects in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the safety aspect. The description adds the account-level scope ('in your IONOS CLOUD account') but does not disclose other behavioral traits such as pagination, default depth behavior, or potential large result sets. Some context is added beyond annotations, but not richly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that begins with the verb 'List' and immediately states the resource and scope. Zero wasted words, no redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the readOnlyHint annotation, and full schema descriptions for both parameters, the description is mostly complete. It lacks information about return format or pagination, but for a list operation with optional depth and filters, the provided context is sufficient for an agent to select and invoke it correctly. A slightly fuller description mentioning the result set behavior would push it to 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% description coverage for both parameters (depth and filters), including details on nesting depth and contains-match filtering. The tool description itself does not add any parameter-specific semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('private cross-connects'), and the scope ('in your IONOS CLOUD account'). It is distinct from sibling tools like get_private_cross_connect, which retrieves a single resource, and other list_* tools for different resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need to list all private cross-connects in the account) but provides no explicit guidance on when to choose it over alternatives, such as get_private_cross_connect for a single item. No when-not or 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.

list_requestsA
Read-only

List all API requests in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"method":"POST","requestStatus":"DONE","createdBy":"user@example.com"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers safety, and the description adds meaningful behavioral context through the filters parameter: filters use server-side contains matching, and a filter typo/mismatch 'silently returns nothing' with a recommendation to retry without filters. This goes beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one concise, front-loaded sentence with no filler. It communicates the action and scope immediately without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with two well-documented optional parameters, the description plus schema is largely sufficient. The filter warning adds practical value, but there is no mention of pagination, result limits, or return shape, and no output schema supplies that information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema documents both depth and filters thoroughly, including an example and a warning about empty results. The tool description itself adds no parameter semantics 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List all API requests') and clearly scopes it to the IONOS CLOUD account. This makes it distinct from resource-specific list_* siblings and from get_request/get_request_status, which target individual requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to choose this tool over alternatives such as get_request or get_request_status. The description states what the tool does but does not provide exclusions, prerequisites, or comparison to other list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_security_group_rulesB
Read-only

List all rules in a specific security group

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","type":"INGRESS","direction":"INBOUND"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center
security_group_idYesthe ID of the security group

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavior beyond what the readOnlyHint annotation already conveys. It does not disclose pagination, result set limits, or that filters exist (though filters are in schema). It repeats the read-only nature without enriching it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Exactly one sentence, no fluff, and front-loaded with the core action. Every word is useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with rich schema and annotations, the description is minimal but adequate for understanding the core purpose. However, it lacks mention of filtering capability (present in schema) or any note about pagination/return format, which could be relevant given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning about parameters—it merely says 'in a specific security group', which duplicates the purpose. No compensation needed since all params are documented in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and the exact resource ('all rules in a specific security group'). It distinguishes from siblings like get_security_group_rule (singular) and list_security_groups (lists groups, not rules).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no mention of get_security_group_rule for a single rule, and no exclusions. Usage is only implied by the name and description, but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_security_groupsA
Read-only

List all security groups in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already indicates a safe read operation, so the description doesn't need to repeat that. However, it adds no extra behavioral context (e.g., pagination, result size, ordering), leaving the return behavior unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with zero filler. Every word contributes to the purpose, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 params, no output schema, read-only annotation), the description is reasonably complete for a list operation. It clarifies the scope (per data center) and the schema covers parameters, but it omits any note about the response format or pagination, which would be useful for a smoother integration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents all three parameters (depth, filters, datacenter_id). The description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('List') and resource ('security groups') scoped to a data center. It distinguishes this from sibling tools like get_security_group (single group) and list_security_group_rules (rules within a group).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (requires a data center ID) but gives no explicit guidance on when to use this tool versus other list tools, nor any exclusions or prerequisite conditions. It's adequate but not instructive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_server_cdromsA
Read-only

List all CD-ROMs attached to a specific server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, which is consistent. The description adds a valuable behavior note within the `filters` parameter: 'If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.' This goes beyond the simple read-only hint by warning about silent empty results. However, no other behavioral aspects (e.g., rate limits, auth) are mentioned, but they are less critical for a read-only list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, direct sentence: 'List all CD-ROMs attached to a specific server.' Every word earns its place; there is no redundancy or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing operation with well-documented parameters, the description is sufficient. It might have mentioned that filters support contains matching (already in schema) or any default depth behavior, but given the absence of an output schema and the tool's straightforward nature, the description is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters have descriptions in the schema (100% coverage). The main description adds no parameter details, but the schema carries the load. The `filters` parameter includes a helpful caveat, but this is part of the schema, not the main description. Since schema coverage is high, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and technical resource 'CD-ROMs' with scope 'attached to a specific server'. It is distinct from sibling tools like list_server_volumes or get_server, clearly identifying its purpose without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or exclusions are provided in the description. The `filters` parameter note implies usage with filters (and the retry suggestion), but the main description gives only implied context that this is a standard list operation. No alternatives are named, though siblings exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_server_gpusA
Read-only

List all GPUs attached to a specific server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation readOnlyHint: true already signals a safe read operation. The description adds no behavioral details beyond that—no mention of pagination, filter semantics, depth control, or potential side effects. It is a mere restatement of the purpose without transparency on how the listing behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no unnecessary words or repetition. It is front-loaded with the action and resource, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with readOnlyHint and full schema coverage, the description is adequate. It captures the core purpose, though it does not mention output format or pagination (no output schema provided). Given the tool's simplicity and the schema's completeness, this is sufficient but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with descriptions (depth, filters, server_id, datacenter_id). The description itself adds no extra meaning or context beyond the schema, so it meets the baseline but does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), resource (GPUs), and scope (attached to a specific server). It effectively distinguishes itself from sibling tools like get_server_gpu (singular GPU) and list_server_volumes (different resource type).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you need to enumerate GPUs for a given server, but it does not explicitly state when to prefer it over similar tools (e.g., get_server_gpu for a specific GPU) or exclude cases. The context 'attached to a specific server' is clear, but 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.

list_serversA
Read-only

List all servers in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, which matches the read-only nature of 'List'. The description adds the datacenter scoping but does not disclose additional behavioral traits such as filter behavior or depth semantics; the schema covers those details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is front-loaded with the main purpose and scope, earning perfect marks for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with complete schema documentation and annotations, the description is nearly sufficient. It does not mention return format, but the schema covers parameters and the readOnlyHint covers safety, so no major gaps exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (datacenter_id, depth, filters) already described. The tool description adds no extra meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List all servers in a data center' uses a specific verb ('list'), names the resource ('servers'), and provides scope ('in a data center'), clearly distinguishing it from siblings like list_datacenters and get_server.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for listing servers within a particular data center, which requires datacenter_id, providing clear context for use. It does not explicitly mention alternatives or exclusions, but the scope is clear enough for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_server_volumesA
Read-only

List all volumes attached to a specific server

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
server_idYesthe ID of the server
datacenter_idYesthe ID of the data center

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already covers the read-only nature. The description adds the scoping constraint 'attached to a specific server' but does not reveal additional behavioral details such as pagination or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no redundant words or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with no output schema, the description fully explains the purpose and scope. The read-only annotation and parameter descriptions sufficiently complement it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides descriptions for all parameters (datacenter_id, server_id, depth, filters). The description does not add any further parameter-specific semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list volumes) and the scope (attached to a specific server), distinguishing it from list_volumes (all volumes) and get_volume (single volume).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates the tool is for a specific server but does not explicitly contrast it with alternatives like list_volumes or get_volume. It lacks explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_snapshotsA
Read-only

List all snapshots in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","location":"de/fra"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already discloses the read-only nature, and the description adds no further behavioral context such as pagination, result size limits, or the silent-empty-filter behavior (which is only in the schema). It does not contradict the annotation but offers 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly states the action and scope. It contains no redundant words or filler, making it highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with a well-documented schema and readOnlyHint, the description is adequate for selection and invocation. However, since there is no output schema, it could have mentioned the structure of the returned snapshot objects or any listing caveats; it does not, but overall the tool remains understandable and usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for both parameters (depth and filters), including nested object descriptions and a warning about filter typos. The description itself adds no parameter details, but the schema already carries the full semantic burden, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all snapshots in the IONOS CLOUD account. It uses a specific verb ('list') and resource ('snapshots'), and the plural form distinguishes it from the singular get_snapshot sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied by the name and description, but there is no explicit guidance on when to use this tool versus alternatives like get_snapshot, nor any mention of how filters or depth affect the listing. It does not provide exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_target_groupsA
Read-only

List all target groups in your IONOS CLOUD account

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already discloses the safe read operation, and the description adds only the account scope. It does not describe return format, pagination, or performance, but this is not critical given the annotation. No contradiction is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core purpose. There is no redundant or tangential wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with a read-only annotation and fully described parameters, the description is sufficient. It clearly states what it does and the scope. It could optionally mention the impact of filters or pagination, but these are already in the schema, so the description is complete enough for its simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for both depth and filters (100% coverage). The tool description adds no supplementary parameter semantics. The baseline of 3 is appropriate because the schema handles the burden, and the description does not enhance it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list), the resource (target groups), and the scope (all in the IONOS CLOUD account). It is unambiguous and distinct from siblings like get_target_group, which targets a single group.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need all target groups, but it does not explicitly contrast with get_target_group or mention when not to use this tool. No alternatives or exclusions are provided, leaving some ambiguity for an agent choosing between list and get variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesA
Read-only

List all available server templates in IONOS CLOUD

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod","cpuFamily":"INTEL_SKYLAKE"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, so the tool is known to be read-only. The description adds context of 'all available' which sets scope, but does not disclose any other behavior like pagination or error handling. Given annotations carry the safety burden, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that states the purpose efficiently. No redundant information; it is front-loaded and concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with well-documented schema and read-only annotation, the description is sufficient. It does not need to explain return values (no output schema). It could mention alternatives, but that is covered in usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents both parameters (depth and filters) with descriptions, achieving 100% coverage. The tool description adds no extra parameter information; baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available server templates in IONOS CLOUD. The verb 'list' and resource 'server templates' are specific, and it distinguishes from sibling get_template which would retrieve a single template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need a list of templates. However, it does not explicitly mention alternatives or when not to use it (e.g., when needing a single template via get_template). It's clear but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_volumesA
Read-only

List all volumes in a data center

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNonesting depth of returned objects (0-5, default 1)
filtersNoserver-side filters as property→value pairs (contains match); e.g. {"name":"prod"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.
datacenter_idYesthe ID of the data center

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true, and the description does not contradict that. However, it adds no additional behavioral context such as pagination, rate limits, or the behavior of filters, so it provides minimal extra 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is clear and to the point, with no unnecessary words. It is appropriately concise for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool has multiple parameters and no output schema, the description does not provide context about the filtering behavior or depth semantics beyond what schema already offers. It is minimally complete but does not add helpful usage context, so 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters (datacenter_id, depth, filters) have descriptions in the schema. The description does not add any parameter semantics beyond what 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all volumes in a data center', which specifies the verb (list), resource (volumes), and scope (data center), distinguishing it from sibling tools like get_volume and list_server_volumes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as list_server_volumes or get_volume. The context is clear but no explicit exclusions or recommendations are provided, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 58 tool updatesv1.0.2
    • Changedget_application_loadbalancer1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_contract1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  }
        +}
    • Changedget_datacenter1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_firewall_rule1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_ip_block1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Addedget_k8s_cluster
    • Addedget_k8s_default_version
    • Addedget_k8s_node
    • Addedget_k8s_nodepool
    • Changedget_lan1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_loadbalancer1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_nat_gateway1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_network_loadbalancer1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_nic1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_private_cross_connect1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_request1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_request_status1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_security_group1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_security_group_rule1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_server1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_server_gpu1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_server_remote_console1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1 for list operations)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_snapshot1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_target_group1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_template1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedget_volume1 field changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
    • Changedlist_alb_forwarding_rules2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_application_loadbalancers2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_datacenters1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1); depth 1 includes names and basic properties",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property name to value pairs (contains match); e.g. {\"name\":\"prod\",\"location\":\"de/fra\"}. Filterable properties include: name, description, location, version. If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_firewall_rules2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"type\":\"INGRESS\",\"direction\":\"INBOUND\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_images1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"ubuntu\",\"imageType\":\"HDD\",\"licenceType\":\"LINUX\",\"location\":\"de/fra\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_ip_blocks1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"location\":\"de/fra\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Addedlist_k8s_clusters
    • Addedlist_k8s_nodepool_nodes
    • Addedlist_k8s_nodepools
    • Addedlist_k8s_versions
    • Changedlist_lan_nics2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_lans2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_loadbalancer_nics2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_loadbalancers2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_locations1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"Frankfurt\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_nat_gateway_rules2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"type\":\"SNAT\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_nat_gateways2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_network_loadbalancers2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_nics2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_nlb_forwarding_rules2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_private_cross_connects1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_requests1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"method\":\"POST\",\"requestStatus\":\"DONE\",\"createdBy\":\"user@example.com\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_security_group_rules2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"type\":\"INGRESS\",\"direction\":\"INBOUND\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_security_groups2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_server_cdroms2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_server_gpus2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_server_volumes2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_servers2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
    • Changedlist_snapshots1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"location\":\"de/fra\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_target_groups1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_templates1 field changed
      • addedInput schema / properties
        Added value: +{
        +  "depth": {
        +    "description": "nesting depth of returned objects (0-5, default 1)",
        +    "maximum": 2147483647,
        +    "minimum": -2147483648,
        +    "type": [
        +      "null",
        +      "integer"
        +    ]
        +  },
        +  "filters": {
        +    "additionalProperties": {
        +      "type": "string"
        +    },
        +    "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\",\"cpuFamily\":\"INTEL_SKYLAKE\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +    "type": "object"
        +  }
        +}
    • Changedlist_volumes2 fields changed
      • addedInput schema / properties / depth
        Added value: +{
        +  "description": "nesting depth of returned objects (0-5, default 1)",
        +  "maximum": 2147483647,
        +  "minimum": -2147483648,
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • addedInput schema / properties / filters
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "server-side filters as property→value pairs (contains match); e.g. {\"name\":\"prod\"} If the result is empty, retry without filters — a filter typo or mismatch silently returns nothing.",
        +  "type": "object"
        +}
  2. 110 tool updatesv1.0.0
    • First observedget_application_loadbalancer
    • First observedget_billing_focus_spec
    • First observedget_billing_invoice
    • First observedget_billing_profile
    • First observedget_billing_usage_by_datacenter
    • First observedget_billing_utilization_daily
    • First observedget_cert_auto_certificate
    • First observedget_cert_certificate
    • First observedget_cert_provider
    • First observedget_contract
    • First observedget_datacenter
    • First observedget_dns_quota
    • First observedget_dns_record
    • First observedget_dns_reverse_record
    • First observedget_dns_secondary_zone
    • First observedget_dns_secondary_zone_axfr
    • First observedget_dns_zone
    • First observedget_dns_zone_file
    • First observedget_firewall_rule
    • First observedget_ip_block
    • First observedget_lan
    • First observedget_loadbalancer
    • First observedget_nat_gateway
    • First observedget_network_loadbalancer
    • First observedget_nic
    • First observedget_object_storage_access_key
    • First observedget_object_storage_bucket_cors
    • First observedget_object_storage_bucket_encryption
    • First observedget_object_storage_bucket_lifecycle
    • First observedget_object_storage_bucket_location
    • First observedget_object_storage_bucket_lock_configuration
    • First observedget_object_storage_bucket_policy
    • First observedget_object_storage_bucket_policy_status
    • First observedget_object_storage_bucket_public_access_block
    • First observedget_object_storage_bucket_replication
    • First observedget_object_storage_bucket_tagging
    • First observedget_object_storage_bucket_versioning
    • First observedget_object_storage_object_legal_hold
    • First observedget_object_storage_object_retention
    • First observedget_object_storage_object_tagging
    • First observedget_object_storage_region
    • First observedget_private_cross_connect
    • First observedget_request
    • First observedget_request_status
    • First observedget_security_group
    • First observedget_security_group_rule
    • First observedget_server
    • First observedget_server_gpu
    • First observedget_server_remote_console
    • First observedget_snapshot
    • First observedget_target_group
    • First observedget_template
    • First observedget_volume
    • First observedhead_object_storage_bucket
    • First observedhead_object_storage_object
    • First observedlist_activitylog_contracts
    • First observedlist_activitylog_events
    • First observedlist_alb_forwarding_rules
    • First observedlist_application_loadbalancers
    • First observedlist_billing_evn
    • First observedlist_billing_evn_by_period
    • First observedlist_billing_invoices
    • First observedlist_billing_invoices_by_period
    • First observedlist_billing_products
    • First observedlist_billing_traffic
    • First observedlist_billing_traffic_by_period
    • First observedlist_billing_usage
    • First observedlist_billing_utilization
    • First observedlist_billing_utilization_by_period
    • First observedlist_cert_auto_certificates
    • First observedlist_cert_certificates
    • First observedlist_cert_providers
    • First observedlist_datacenters
    • First observedlist_dns_records
    • First observedlist_dns_reverse_records
    • First observedlist_dns_secondary_zone_records
    • First observedlist_dns_secondary_zones
    • First observedlist_dns_zone_dnssec_keys
    • First observedlist_dns_zone_records
    • First observedlist_dns_zones
    • First observedlist_firewall_rules
    • First observedlist_images
    • First observedlist_ip_blocks
    • First observedlist_lan_nics
    • First observedlist_lans
    • First observedlist_loadbalancer_nics
    • First observedlist_loadbalancers
    • First observedlist_locations
    • First observedlist_nat_gateway_rules
    • First observedlist_nat_gateways
    • First observedlist_network_loadbalancers
    • First observedlist_nics
    • First observedlist_nlb_forwarding_rules
    • First observedlist_object_storage_access_keys
    • First observedlist_object_storage_buckets
    • First observedlist_object_storage_object_versions
    • First observedlist_object_storage_objects
    • First observedlist_object_storage_regions
    • First observedlist_private_cross_connects
    • First observedlist_requests
    • First observedlist_security_group_rules
    • First observedlist_security_groups
    • First observedlist_server_cdroms
    • First observedlist_server_gpus
    • First observedlist_server_volumes
    • First observedlist_servers
    • First observedlist_snapshots
    • First observedlist_target_groups
    • First observedlist_templates
    • First observedlist_volumes

TDQS

B3.3/5.0

Scored across 118 tools

Disambiguation5/5

Each tool maps to a distinct resource and action (list vs get vs head), with no overlapping purposes. Even the many billing and object storage tools are clearly differentiated by resource type and operation.

Naming Consistency4/5

The set overwhelmingly follows a consistent list_<resource>/get_<resource> snake_case patterncars with occasional head_ for existence checks. The head_ prefix is a minor deviation but still forms a predictable semantic pattern.

Tool Count1/5

118 tools is an extreme count, far beyond the typical MCP server scope. While the IONOS Cloud platform is broad, this surface is unwieldy and likely causes selection overload for agents.

Completeness2/5

The tool set is entirely read-only (list/get/head), with no create, update, or delete operations for any resource. This leaves obvious lifecycle management gaps for a cloud platform, forcing agents into a dead end for most operational tasks.

Maintenance

ActivityActive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for managing Incus containers and VMs via the incus CLI. Supports operations on remotes, instances, images, networks, storage, profiles, projects, and snapshots.
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Oracle Cloud Infrastructure (OCI) that provides tools to manage Compute, Object Storage, Block Storage, Networking, Autonomous Database, and IAM via the official OCI SDK.
    23
    36 npm
    MIT