Skip to main content
Glama

bunny-mcp

MCP server for Bunny.net — pull zones, DNS, storage, video streaming, edge scripting, Shield/WAF and Magic Containers, from an AI assistant.

A hardened fork of anvme/bunnycdn-mcp (MIT). Two things differ, and both exist because pointing the upstream at a real Bunny account publishes credentials.

Part of the Aura Design Engine

These are the skills behind Aura — one AI web-agency lifecycle you can run standalone or orchestrate across a whole client fleet from a single dashboard.

Stage

Skill

Role

🎨 Build

siteagent-elementor-studio · elementor-mcp

Design & build sites inside Elementor — the recipes, and the MCP engine under them

🔎 Audit + Content

wordpress-api-pro

REST content ops, SEO & site audits

🖥 Host

cloudways-mcp · hostinger-mcp

Provision & operate the infrastructure

🚀 Deliver

bunny-mcp ← you are here

CDN, storage & edge delivery

🛡 Govern

aura-mcp

Drive the control plane — approvals, snapshots, rollbacks — over MCP

→ Orchestrate all of it across your client fleet with Aura — governed agent ops with approvals and a full audit trail on top of these skills.

Related MCP server: Cloudflare Control

What the fork changes

1. Responses are projected through an allow-list

Bunny returns credentials inline with ordinary metadata:

Endpoint

Credential in the response

GET /pullzone

ZoneSecurityKey — the token-authentication signing secret, for every zone

GET /pullzoneHostnames[]

Certificate and CertificateKey — the TLS private key

GET /storagezone

Password, ReadOnlyPassword — full read-write and read storage keys

GET /videolibrary

ApiKey, ReadOnlyApiKey, WebhookSignatureKey

GET /user

ApiKey — the account key the server itself authenticates with

Handing those to a model puts them in its context, its logs and its transcript. So no tool ever sees them: every response passes through lib/project.js at the HTTP layer, keyed by request path, and only the fields named there survive.

It is an allow-list, not a deny-list. Stripping known secret names fails the moment Bunny adds a field — the new one ships in the clear and nothing tells you. Naming what may pass fails the other way: a new field is invisible until someone decides it is safe.

It fails closed. A path with no declared shape returns no data and an error naming the path, rather than the raw payload.

It applies inside a value, not only to it. A URL keeps scheme, host, port and path; userinfo, query and fragment go. The first version of that scrubber removed user:password@ and kept the rest — a deny-list wearing a scrubber's coat, which closed the one place a credential was known to sit and let ?token=… walk through. And a free-form bag is a bag whether it arrives as an object or a string: CustomHTML is dropped for the same reason metaTags is.

It does not vet structure by naming its parent. A bare field name may only carry a scalar, or an array of them; an object survives only where a nested shape is declared for it. Every leak found while reviewing this fork lived one level below a name someone had already vetted — Hostnames looked safe and held the TLS private key; EdgeRules was given a shape and ExtraActions inside it still carried the very parameter that shape existed to drop.

2. Write tools are withheld unless you ask for them

BUNNY_READONLY defaults to on. In that mode the write-capable tools are never registered — absent from tools/list, not merely annotated as risky. An agent cannot call a tool it cannot see, and the MCP destructiveHint is advice to a client, not a control.

The gate fails closed: a tool is registered in read-only mode only if it declares readOnlyHint: true. A new tool whose author forgot its annotations counts as a writer and is withheld.

BUNNY_READONLY=0   # register the write tools too — 0/false/no/off, nothing else

Errors are projected too

A non-2xx response never reaches the response interceptor — axios routes it to the rejection handler — so error bodies get their own boundary. Bunny quotes submitted values back in validation messages, and what these tools submit includes edge-script secrets, so the rule keys on the request: a request that carried no body cannot have its own payload echoed at it and keeps its message; a request that carried one has the message withheld, with the status and ErrorKey still saying what went wrong.

Diagnostics keep the sentence and lose the target

An origin error log and a transcoding failure both quote the request that failed, and that request is the one an operator signs. Those fields are kept — a diagnostic that will not say what failed is not worth returning — but the target inside them is withheld whole, not edited:

failed fetching https://svc:pw@origin/x?token=secret after 10s
                              ↓
failed fetching (withheld: URL) after 10s

A whitespace-delimited token is withheld when it carries an @, or a ?/# with anything attached to it — either side. That is what separates a query or fragment from ordinary punctuation: why? because has a space after the mark, while callback?token=secret and a bare #access_token=x do not. Nothing is parsed, so there is no interior for a new URL shape to hide in — nine review findings were spent teaching an earlier reducer the shapes prose can take, and each one found the shape the last had not met.

A fragment goes even when it looks like a section number. #3 reads as a reference and #123456 reads as a PIN, but they are the same string with different digits, so no rule can tell them apart; both are withheld rather than guessed at.

A token with none of those marks is returned exactly as written, so https://origin.example/ok, origin.example/file and 3.5 are untouched: a plain target carries nothing, and which host failed is most of a diagnostic's value.

The structured target fields — a log's Url and Path — are reduced rather than withheld, because a field that IS a URL can be cut precisely.

What this does not catch, said plainly: a secret embedded in a path segment, as in /download/sk_live_x/file. Nothing short of understanding the operator's own URL scheme would.

Edge-script source is withheld by default

/compute/script/<id>/code returns the script's source, and source carries hard-coded keys about as readily as any other operator-authored text — CustomHTML is dropped for exactly that reason. So the body is withheld and the response says how to release it:

BUNNY_ALLOW_SOURCE=1   # return edge-script source — 1/true/yes/on, nothing else

More generally, a non-JSON body on the management API no longer gets a free pass. It passes only where a route declares it may; anything else raises, naming the path. The blanket "non-JSON means it's a file download" exemption was the hole this closed.

Credential scoping

Bunny does not offer scoped API keys. The authentication docs say it plainly: "You can have only one API key associated with your account." The dashboard's Account → API page can only view and rotate that key, and while the /apikey endpoint models multiple keys with roles, neither the UI nor the docs expose creating one. So the key this server runs with is the account key, and the mitigations are:

  • BUNNY_API_KEY_FILE — point it at a mode-0600 file and the server reads the key at spawn, so no MCP client config ever holds the value. BUNNY_API_KEY still works and wins when both are set.

  • BUNNY_READONLY stays on, so write tools are never registered.

  • The response projection keeps the key - and every other credential Bunny echoes - out of the transcript. Rotate the key from that same page if it is ever exposed; a rotation invalidates the old value immediately.


Features

Tool

Description

Data Source

Mode

bunny_get_account

Get account details and balance

bunny.net API

read

bunny_get_billing_summary

Get billing summary with charges

bunny.net API

read

bunny_get_statistics

Get CDN statistics (bandwidth, requests, cache hit rate)

bunny.net API

read

bunny_global_search

Search across all resources

bunny.net API

read

bunny_purge_url

Purge a URL from CDN cache

bunny.net API

write

bunny_list_regions

List CDN edge regions

bunny.net API

read

bunny_list_countries

List countries for geo-blocking

bunny.net API

read

bunny_list_pull_zones

List pull zones with search and pagination

bunny.net API

read

bunny_get_pull_zone

Get pull zone details

bunny.net API

read

bunny_create_pull_zone

Create a pull zone

bunny.net API

write

bunny_update_pull_zone

Update pull zone settings

bunny.net API

write

bunny_delete_pull_zone

Delete a pull zone

bunny.net API

write

bunny_purge_pull_zone_cache

Purge entire pull zone cache

bunny.net API

write

bunny_manage_pull_zone_hostnames

Add or remove custom hostnames

bunny.net API

write

bunny_manage_edge_rules

Add, update, delete, or toggle edge rules

bunny.net API

write

bunny_list_dns_zones

List DNS zones

bunny.net API

read

bunny_get_dns_zone

Get DNS zone with all records

bunny.net API

read

bunny_create_dns_zone

Create a DNS zone

bunny.net API

write

bunny_update_dns_zone

Update DNS zone settings

bunny.net API

write

bunny_delete_dns_zone

Delete a DNS zone

bunny.net API

write

bunny_manage_dns_record

Add, update, or delete DNS records

bunny.net API

write

bunny_get_dns_statistics

Get DNS query statistics

bunny.net API

read

bunny_list_storage_zones

List storage zones

bunny.net API

read

bunny_get_storage_zone

Get storage zone details

bunny.net API

read

bunny_create_storage_zone

Create a storage zone

bunny.net API

write

bunny_get_storage_zone_statistics

Get storage zone usage statistics

bunny.net API

read

bunny_list_storage_files

List files and directories

Storage API

read

bunny_download_storage_file

Download file content

Storage API

read

bunny_delete_storage_file

Delete a file or directory

Storage API

write

bunny_list_video_libraries

List video libraries

bunny.net API

read

bunny_get_video_library

Get library details

bunny.net API

read

bunny_create_video_library

Create a video library

bunny.net API

write

bunny_update_video_library

Update library settings

bunny.net API

write

bunny_list_videos

List videos with search and pagination

Stream API

read

bunny_get_video

Get video details

Stream API

read

bunny_create_video

Create video object, optionally fetch from URL

Stream API

write

bunny_update_video

Update video metadata

Stream API

write

bunny_delete_video

Delete a video

Stream API

write

bunny_get_video_statistics

Get view statistics

Stream API

read

bunny_get_video_heatmap

Get attention heatmap data

Stream API

read

bunny_reencode_video

Re-encode a video

Stream API

write

bunny_list_collections

List video collections

Stream API

read

bunny_get_collection

Get collection details

Stream API

read

bunny_manage_collection

Create, update, or delete collections

Stream API

write

bunny_list_edge_scripts

List edge scripts

bunny.net API

read

bunny_get_edge_script

Get script details

bunny.net API

read

bunny_get_edge_script_code

Get script source code

bunny.net API

read

bunny_set_edge_script_code

Upload script code (saved as draft)

bunny.net API

write

bunny_manage_edge_script

Create, update, or delete scripts

bunny.net API

write

bunny_publish_edge_script

Publish a release to edge servers

bunny.net API

write

bunny_list_edge_script_variables

List a script's environment variable names

bunny.net API

read

bunny_manage_edge_script_variables

Manage environment variables and secrets

bunny.net API

write

bunny_list_shield_zones

List shield security zones

bunny.net API

read

bunny_get_shield_zone

Get zone by shield zone ID or pull zone ID

bunny.net API

read

bunny_get_waf_rules

Get WAF rules and profiles

bunny.net API

read

bunny_manage_waf_custom_rule

Create, update, or delete custom WAF rules

bunny.net API

write

bunny_list_rate_limit_rules

List rate limiting rules

bunny.net API

read

bunny_manage_rate_limit_rule

Create, update, or delete rate limit rules

bunny.net API

write

bunny_get_shield_metrics

Get security metrics overview

bunny.net API

read

bunny_read_bot_detection

Read bot detection settings

bunny.net API

read

bunny_get_bot_detection

Get or update bot detection settings

bunny.net API

write

bunny_list_mc_apps

List Magic Container applications

bunny.net API

read

bunny_get_mc_app

Get application details

bunny.net API

read

bunny_get_mc_app_overview

Get app overview with real-time metrics

bunny.net API

read

bunny_manage_mc_app

Create, update, or delete applications

bunny.net API

write

bunny_mc_app_lifecycle

Deploy, undeploy, or restart applications

bunny.net API

write

bunny_list_mc_registries

List container registries

bunny.net API

read

bunny_list_mc_regions

List deployment regions

bunny.net API

read

bunny_get_mc_app_statistics

Get application statistics

bunny.net API

read

bunny_get_origin_errors

Get origin error logs for a pull zone

bunny.net API

read

Data sources: Tools marked Storage API require BUNNY_STORAGE_KEY. Tools marked Stream API require BUNNY_STREAM_KEY. All other tools use BUNNY_API_KEY.

Prerequisites

  • Node.js >= 18

  • A bunny.net account with an API key

  • Optional: Stream library API key (for video tools)

  • Optional: Storage zone password (for file tools)

Setup

No installation needed — just configure your MCP client:

Add to .vscode/mcp.json:

{
  "servers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}
claude mcp add --transport stdio bunny -- npx -y github:Digitizers/bunny-mcp

Or add to .mcp.json (shared with team):

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Add to settings.json:

{
  "context_servers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Open Settings → Tools → AI Assistant → MCP, click +, and paste:

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}
gemini mcp add bunny -- npx -y github:Digitizers/bunny-mcp

Or add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "bunny": {
      "command": "npx",
      "args": ["-y", "github:Digitizers/bunny-mcp"],
      "env": {
        "BUNNY_API_KEY": "your-api-key"
      }
    }
  }
}

Any MCP client that supports stdio transport can use this server. The command is:

npx -y github:Digitizers/bunny-mcp

See the full list of MCP clients.

Optional environment variables

Variable

Description

BUNNY_STREAM_KEY

Video library API key — enables Stream video and collection tools

BUNNY_STORAGE_KEY

Storage zone password — enables Storage file tools

BUNNY_STORAGE_REGION

Storage region code (default: empty for Falkenstein)

BUNNY_STORAGE_ZONE

Default storage zone name

Add these to the env block in your MCP client configuration above.

Local development

git clone https://github.com/Digitizers/bunny-mcp.git
cd bunny-mcp
npm install
npm test
node index.js

How It Works

This MCP server connects to the bunny.net API using your API key. The catalog above holds 70 tools, split by which API keys are provided:

  • Core tools (56 tools) — always available with BUNNY_API_KEY

  • Stream tools (11 tools) — registered when BUNNY_STREAM_KEY is set

  • Storage file tools (3 tools) — registered when BUNNY_STORAGE_KEY is set

Those are the totals with the write gate open. By default BUNNY_READONLY is on and 41 of the 70 register — the 29 write-capable ones are withheld, per section 2. The Mode column in the catalog says which is which.

Both counts assume all three keys. With BUNNY_API_KEY alone the core tools are all there is: 33 registered read-only, 56 with the gate open.

All read operations are cached in-memory with a short TTL for performance. Every tool includes MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so clients can make informed decisions about tool approval.

License

MIT

Available Tools

54 tools
bunny_create_dns_zoneA

Create a new DNS zone for a domain. After creation, update the domain's nameservers at your registrar to point to the bunny.net nameservers returned in the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name for the DNS zone, e.g. example.com

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate this is a non-read-only, non-idempotent write operation. The description adds valuable behavioral context by disclosing that the response contains bunny.net nameservers and instructing the user to update registrar nameservers afterward.

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 main purpose and then providing the essential follow-up action. Every sentence adds meaningful information without 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?

For a one-parameter create tool with no output schema, the description covers the key follow-up requirement: using the returned nameservers at the registrar. It could mention other likely response fields like zone ID, but the critical post-creation behavior is clearly conveyed.

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 description for the single 'domain' parameter is complete and includes an example. The tool description does not add further parameter semantics, but with 100% schema coverage this is acceptable per baseline.

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 action, 'Create a new DNS zone for a domain,' with a clear resource and scope. It is immediately distinguishable from sibling tools like bunny_list_dns_zones, bunny_update_dns_zone, and bunny_delete_dns_zone.

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 a new DNS zone needs to be created. However, it does not explicitly mention alternatives or conditions for using related tools, such as bunny_update_dns_zone for existing zones.

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

bunny_create_pull_zoneA

Create a new CDN pull zone. The pull zone gets a default hostname (name.b-cdn.net) and caches content from the specified origin_url. Alternatively, set storage_zone_id to use a bunny.net storage zone as origin.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPull zone name (used in the b-cdn.net subdomain)
typeNoPull zone type: 0=Premium, 1=Volume. Default: 0
origin_urlYesOrigin server URL to pull content from
storage_zone_idNoStorage Zone ID to use as origin instead of origin_url

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already signal the write nature (reaOnlyHint=false) and non-idempotency (idempotentHint=false), and the description adds context about the default hostname and the caching relationship to origin — a small but real contribution. It does not disclose what happens on name collision, whether the call returns the new zone ID, or that repeated calls create duplicate zones, which are the meaningful unspecified behaviors for a createop. No contradiction with annotations.

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

Conciseness5/5

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

Three short sentences, each earning its keep: the first states the action, the second explains the default hostname and caching output, the third covers the alternative origin mode. The core purpose is front-loaded and there is zero fluff or repetition of schema 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?

With no output schema, the description does not say what the tool returns (e.g., the created zone ID or full hostname), which an agent invoking a create op typically needs. Parameters are fully covered by the schema and safety traits by annotations, so the main remaining gap is the response/confirmation behavior and post-create verification. Reasonably adequate for a low-complexity 4-parameter tool, but not 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%, so the baseline of 3 applies. The description's mention that the pullzone 'caches content from the specified origin_url' and that storage_zone_id serves as an alternative origin adds a mild clarification of the either/or relationship between the two origin parameters — but most parameter meaning (name subdomain, type default, origin role) already lives in the schema. The type parameter is not surfaced in the description atall.

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 opens with 'Create a new CDN pull zone' — a specific verb (create) plus a concrete resource, and the create verb cleanly distinguishes it from the sibling family (update_pull_zone, deete_pull_zone, list_pull_zones, get_pull_zone, purge_pull_zone_cache). It also adds useful specifics — default hostname name.b-cdn.net and origin caching — so aagent has a solid mental model of what the operation produces.

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 create verb and gives internal guidance on choosing between origin_url and storage_zone_id ('Alternatively… to use a bunny.net storage zone as origin'). However, it never explicitly states when to prefer this tool over bunny_create_video_library or bunny_create_storage_zone, nor does it name the siblings for updating /deleting an existing pull zone. The usage guidance is implied rather than explicit.

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

bunny_create_storage_zoneA

Create a new Edge Storage zone. Choose a primary region and optional replication regions for geo-redundancy. Region codes: DE (Falkenstein), UK (London), NY (New York), LA (Los Angeles), SG (Singapore), SYD (Sydney), BR (Sao Paulo), JH (Johannesburg). Default primary region is DE.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStorage zone name (3-20 chars, lowercase alphanumeric and hyphens)
regionNoPrimary region code: DE, UK, NY, LA, SG, SYD, BR, JH. Default: DE
replication_regionsNoArray of region codes for replication, e.g. ['UK', 'NY']

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate this is a mutating (not read-only) operation and not marked destructive. The description adds useful context about optional replication for geo-redundancy and the default primary region, but it does not disclose side effects like billing, propagation, or duplicate-name 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 three sentences with no filler. The primary action is front-loaded, and the region guidance is concise and directly actionable.

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 plus schema fully cover the required name and optional region/replication parameters. With no output schema, the description could mention what the created zone returns, but for a create tool the main calling context 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%, so the description does not need to document parameters. It does add some semantic value by explaining that replication regions are for geo-redundancy and stating the default region, but this mostly mirrors the schema's parameter 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 opens with 'Create a new Edge Storage zone,' a specific verb and resource that cleanly distinguishes it from sibling tools like bunny_list_storage_zones and bunny_create_video_library. It also explains the purpose of the region parameters, so an agent immediately understands what this tool is for.

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 clearly implies this tool is for creating a new storage zone and gives guidance on region selection, but it does not explicitly contrast it with list/get storage zone tools or other create tools. However, the resource-specific wording and sibling names make the intended use unambiguous.

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

bunny_create_video_libraryA

Create a new Bunny Stream video library for hosting, encoding, and delivering videos. Optionally specify replication regions for geo-redundant storage.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVideo library name
replication_regionsNoReplication region codes, e.g. ['UK', 'SE', 'NY', 'LA', 'SG', 'SYD', 'BR', 'JH']

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already convey that this is a non-read-only mutation and is not idempotent. The description adds the product scope and replication purpose but does not disclose deeper behavioral traits such as cost implications, required billing status, or whether the returned object contains credentials/IDs. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no filler: the first front-loads the action and resource, and the second cleanly covers the optional parameter. Every word earns its place.

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

Completeness3/5

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

For a two-parameter create with fully documented schema and mutation annotations, this is mostly adequate. However, there is no output schema and the description never mentions what the call returns (e.g., library ID/credentials), which is an important gap for an agent that must use the created library afterward. It also does not mention prerequisites such as billing or region availability.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by labeling replication_regions as optional and linking them to 'geo-redundant storage', which goes beyond the schema's bare listing of region codes; it also frames 'name' as the video library name via context.

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 ('Create a new Bunny Stream video library') and adds a purpose clause ('for hosting, encoding, and delivering videos'). This distinguishes it from sibling creation tools like bunny_create_storage_zone and bunny_create_pull_zone, whose names alone could be confused with it.

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

Usage Guidelines4/5

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

It provides clear context: use when you need a new video library with optional geo-redundant replication. It does not explicitly name alternatives or exclusions, but the 'Bunny Stream video library' qualifier is enough to route the agent away from storage, DNS, or pull-zone creation siblings.

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

bunny_delete_dns_zoneA
DestructiveIdempotent

Permanently delete a DNS zone and all its records. This action is irreversible and will stop DNS resolution for the domain if bunny.net nameservers are still active.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDNS Zone ID

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true. The description adds crucial context beyond that: records are deleted, DNS resolution stops if nameservers are active. This fully discloses the behavioral impact 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?

Two sentences with zero waste. The purpose is stated first, followed by the critical consequence. Every sentence earns its place and is immediately scannable.

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 single-parameter destructive tool, the description, schema, and annotations together provide everything an agent needs: what it does, consequences, and the required parameter. No output schema exists, so nothing is missing.

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

Parameters3/5

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

Schema description coverage is 100% with a clear 'DNS Zone ID' description. The tool description does not add additional parameter meaning, but the schema already documents it fully, so 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 states a specific verb (delete) and resource (DNS zone) with scope (all its records). It clearly distinguishes from sibling tools like bunny_create_dns_zone, bunny_list_dns_zones, and bunny_update_dns_zone by its irreversible nature.

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 clear context on consequences (irreversible, stops DNS resolution) and implies it is for permanent deletion. It does not explicitly name alternatives but the warning makes it clear when not to use it (if the zone is needed).

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

bunny_delete_pull_zoneA
DestructiveIdempotent

Permanently delete a CDN pull zone and all its configuration (hostnames, edge rules, cache). This action is irreversible and immediately stops content delivery on all associated hostnames.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPull Zone ID

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description adds critical behavioral context: the action is irreversible, deletes all configuration, and immediately stops content delivery on all associated hostnames. This meaningfully exceeds what the annotations alone convey.

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

Conciseness5/5

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

Two focused sentences with no filler. The core action is front-loaded, followed by scope and consequences. Every sentence earns its place.

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 one-parameter delete operation, the description is complete. The parameter is fully described in the schema, the destructive and irreversible nature is clearly stated, and no output schema exists, so return-value documentation is not 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 description coverage is 100% — the single 'id' parameter is documented as 'Pull Zone ID'. The description adds no new parameter-level detail, but the schema already carries the 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 states a specific verb ('delete') and resource ('CDN pull zone') with the full scope of what is removed (hostnames, edge rules, cache). It is unambiguous and clearly distinct from sibling operations like update_pull_zone or purge_pull_zone_cache.

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 does not provide when-to-use guidance or mention alternatives. It explains consequences but never tells the agent when this tool is appropriate versus a non-destructive alternative such as updating or purging the pull zone.

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

bunny_get_accountA
Read-onlyIdempotent

Retrieve the current bunny.net account details: email, name, balance, billing type, enabled features, and feature flags. Use this to check account status or remaining balance before provisioning resources.

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?

Annotations already establish read-only, idempotent, non-destructive behavior. The description adds value by specifying what data will be returned and signaling current-state semantics. No contradiction with annotations.

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

Conciseness5/5

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

Two sentences with no wasted words: the first states the action and payload fields, the second states a concrete use case. Information is 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 zero-parameter, read-only getter whose annotations cover safety and whose description enumerates the returned fields, nothing essential is missing. The lack of an output schema is mitigated by the field list.

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 parameter explanations are unnecessary; the schema coverage is trivially 100%. The zero-parameter baseline of 4 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?

Description uses a specific verb and resource: 'Retrieve the current bunny.net account details' and enumerates the returned fields (email, name, balance, billing type, features, flags). It is clearly distinct from the many sibling tools that target pull zones, DNS, storage, video, or edge scripts.

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 to use it to check account status or remaining balance before provisioning resources. It does not name alternatives or when-not-to-use, but no sibling is a better fit for account-level overview, so the guidance is sufficient.

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

bunny_get_billing_summaryA
Read-onlyIdempotent

Retrieve the billing summary for the account: current balance, this month's charges, and per-service usage breakdown (CDN, Storage, DNS, Stream, etc.).

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?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so no safety contradiction exists. The description adds value by specifying exactly what data is returned, including current balance and per-service breakdown, which is useful behavioral context beyond the annotations.

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

Conciseness5/5

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

The description is a single well-structured sentence that immediately states the action and resource, followed by concise examples of the returned content. There is no filler or redundant wording.

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 billing summary tool, the description fully covers what the agent needs to know: what the tool does and what data it returns. No output schema exists, but the listed summary components provide sufficient expectation-setting.

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 schema coverage is 100%, so the schema imposes no burden and the description does not need to explain parameters. The baseline of 4 applies here.

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 ('Retrieve'), a clear resource ('billing summary for the account'), and enumerates the key contents: current balance, this month's charges, and per-service usage breakdown. It is unambiguous and distinguishes this tool from the many get_* siblings by focusing on billing-specific data.

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 intended use clear: any time an agent needs account-level billing information rather than generic statistics or account details. It does not explicitly name alternatives or exclusions, but the billing-specific scope gives sufficient context among siblings.

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

bunny_get_bot_detectionA
Idempotent

Retrieve or update bot detection settings for a shield zone. If settings are provided, updates them (e.g. enable/disable bot categories, adjust thresholds); otherwise returns current configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsNoBot detection settings to update (optional). If omitted, returns current settings.
shield_zone_idYesShield Zone ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already convey readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds value beyond these by explaining the conditional dual-mode behavior and giving examples of what a settings update covers ('enable/disable bot categories, adjust thresholds'). It does not describe merge vs. replace semantics, but this is not a glaring omission given the annotations.

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

Conciseness5/5

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

The description is a single, tightly worded sentence pair with no filler. It front-loads the core action and then explains the conditional behavior. 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 two parameters, one optional nested object, and no output schema, the description provides enough to make a correct call: the required zone ID, the optional settings, and the difference between update and retrieval. Some detail about the returned configuration shape or the exact allowed settings keys is absent, but the description is reasonably complete given the open-ended 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 both shield_zone_id and settings are already documented. The description adds useful examples about bot categories and thresholds but does not define the internal structure of the settings object. This meets the baseline for schema-covered parameters without significantly extending the 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 is specific: it names the resource ('bot detection settings for a shield zone') and the two possible verbs ('Retrieve or update'). It clearly differentiates the tool from general zone getters like bunny_get_shield_zone by focusing on bot detection configuration.

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 a clear conditional: if settings are provided, update; otherwise, retrieve current configuration. This tells the agent how to choose behavior with the optional parameter, though it does not explicitly discuss alternatives or when not to use the tool.

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

bunny_get_dns_statisticsA
Read-onlyIdempotent

Retrieve DNS query statistics for a zone over a date range, including total queries, queries by record type, and response code distribution.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDNS Zone ID
date_toNoEnd date (YYYY-MM-DD or ISO 8601)
date_fromNoStart date (YYYY-MM-DD or ISO 8601)

TDQS

A4/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, so the description does not need to restate that this is a read operation. It adds useful context about the returned statistics, but it does not disclose behavioral details such as date inclusivity, timezone handling, or any limits on the date range.

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 with no filler. It front-loads the action and resource, then adds the key output dimensions, making it easy to scan and understand 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 read-only statistics tool with three clearly documented parameters and no output schema, this description is nearly complete. It explains what the caller gets back and clarifies the zone and date-range scope. A note about whether the date range is optional or how defaults behave would make it fully 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?

The input schema already documents all parameters: id is the DNS Zone ID, date_from and date_to have format and meaning. The description merely restates the date-range concept and does not add significant new meaning 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.

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: retrieve DNS query statistics for a zone over a date range. It also names the returned dimensions (total queries, queries by record type, response code distribution), which clearly differentiates it from sibling tools like bunny_get_dns_zone or bunny_get_statistics.

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 clear usage context: it is for DNS query statistics scoped to a zone and a date range. It does not explicitly name alternatives or exclusions, but the zone and date-range scoping is sufficient for an agent to select this tool over account-level or storage-zone statistics tools.

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

bunny_get_dns_zoneA
Read-onlyIdempotent

Retrieve a DNS zone by ID, including all its DNS records, nameserver configuration, SOA settings, and DNSSEC status.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDNS Zone ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds value beyond annotations by disclosing the scope of the returned data (records, nameserver config, SOA, DNSSEC status), which is meaningful context for a tool with no output schema. It does not contradict the annotations — 'Retrieve' aligns with the read-only hints.

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 primary action and retrieval key, then appends the payload scope in one efficient clause. There is zero wasted wording and every segment 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 tool with robust annotations, the description is nearly complete: it states the resource, the key, and the response composition. Minor gaps are the absence of not-found/error semantics and not pointing to bunny_list_dns_zones as the source for obtaining the ID.

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 id parameter is already documented as 'DNS Zone ID' with an exclusiveMinimum of 0. The description's 'by ID' adds no new semantic information 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.

Purpose5/5

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

The description uses a specific verb ('Retrieve'), resource ('DNS zone'), and retrieval key ('by ID'), then enumerates the returned payload (DNS records, nameserver configuration, SOA settings, DNSSEC status). This clearly distinguishes it from siblings like bunny_list_dns_zones (which enumerates zones without an ID) and bunny_get_dns_statistics (which returns metrics, not zone configuration).

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 clear usage context: call this when you hold a DNS zone ID and want the full zone configuration. The enumerated return contents signal what kind of requests this tool serves, but it never explicitly names alternatives (e.g., 'use bunny_list_dns_zones to find the ID first') or states 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.

bunny_get_edge_scriptA
Read-onlyIdempotent

Retrieve edge script details by ID, including configuration, linked pull zones, deployment status, integration type, and release history.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge Script ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering safety. The description adds value by enumerating the specific response fields, which is useful behavioral context beyond the annotations. Minor gaps like error behavior are not disclosed, but the bar is lower given the strong annotation coverage.

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, dense sentence that front-loads the action and resource, then lists the returned content categories. There is zero filler or redundant restating of the tool name, making it efficient and easy to parse.

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

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 get-by-ID operation with one required parameter and robust annotations, the description covers the essential behavior and return content. Since there is no output schema, it helpfully names the included detail categories, though it does not specify response structure or error cases, which are minor for this 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?

The only parameter 'id' is already fully documented in the schema with type, exclusivity, and description. With 100% schema description coverage, the description does not need to add parameter details, and it doesn't—it only implies the ID is used for lookup. 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 ('Retrieve') and resource ('edge script details by ID'), and enumerates the exact content returned (configuration, linked pull zones, deployment status, integration type, release history). This clearly distinguishes it from sibling tools like bunny_list_edge_scripts (list vs. get-by-ID) and bunny_get_edge_script_code (code only vs. full 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?

The context of when to use this tool is implied: when you already have an edge script ID and need its full details. However, there is no explicit guidance about when to prefer this over siblings such as bunny_list_edge_scripts or bunny_get_edge_script_code, and no stated exclusion.

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

bunny_get_edge_script_codeA
Read-onlyIdempotent

Retrieve the JavaScript source code of an edge script.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge Script ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the payload is JavaScript source code, but it discloses no further behavior such as response shape or whether unpublished scripts are retrievable. 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?

One sentence with a clear verb, direct object, and no filler. The core information is front-loaded, 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.

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 getter, the description and schema together are almost sufficient. A note on the exact return format would be helpful because there is no output schema, but the intended payload 'source code' is clear enough. Minor gap is the lack of contrast with the sibling get_edge_script 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 schema documents the single id parameter as an Edge Script ID with exclusiveMinimum >0, so description coverage is 100%. The description adds no extra meaning beyond what the schema already provides, meriting the baseline score.

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

Purpose5/5

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

States a specific verb (retrieve) and resource (JavaScript source code of an edge script), making its purpose immediately clear. It distinguishes itself from sibling bunny_get_edge_script by targeting the code payload rather than general script metadata.

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 wording implies this tool is for reading an edge script's source code, but it does not explicitly say when to use it over bunny_get_edge_script or set_edge_script_code. Guidance is only implied, not stated.

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

bunny_get_mc_appB
Read-onlyIdempotent

Retrieve Magic Container application details including container configuration, endpoints, deployment status, environment variables, volumes, and region settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the response contents by listing what details are returned, but it does not describe possible errors, missing-resource behavior, or any other behavioral nuance. This is adequate but not richly 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, compact sentence with zero filler. It front-loads the primary action and resource, then adds a focused list of relevant detail categories. Every element contributes to the agent's understanding.

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 get-by-id tool with one well-documented parameter, the description is largely sufficient. It specifies the main purpose and the categories of data returned. However, since there is no output schema, a bit more detail about the response shape, not-found behavior, or how this differs from the overview tool would make it fully 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?

There is only one parameter, and the input schema already documents it fully as 'Application ID' with a required constraint. The description adds no further meaning about the parameter format, scope, or special values. With 100% schema description 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.

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 Magic Container application details and enumerates the specific categories included (configuration, endpoints, deployment status, env vars, volumes, regions). It is not a tautology and the verb 'Retrieve' plus resource makes the purpose clear, though it does not explicitly distinguish itself from the very similar sibling bunny_get_mc_app_overview.

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 about when to use this tool versus alternatives like bunny_list_mc_apps or bunny_get_mc_app_overview. Usage is only implied by the name and the word 'details', which is not sufficient to route an agent confidently among nearly identical sibling tools.

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

bunny_get_mc_app_overviewA
Read-onlyIdempotent

Retrieve application overview with real-time metrics: latency, CPU/RAM usage, active instance count across regions, and estimated cost breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only behavior is established. The description adds valuable context by specifying that metrics are 'real-time' and by enumerating what the returned overview includes, which goes beyond the structured annotations without contradicting them.

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 front-loads the core action and resource, then efficiently lists the key metrics. Every element earns its place, and there is no redundant or filler language.

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 single-parameter read-only retrieval tool with comprehensive annotations and schema coverage, the description is complete. It tells the agent exactly what the tool returns and includes the notable 'estimated cost breakdown' detail, which would not be obvious from the tool name or schema alone.

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 sole parameter 'id' is already described as 'Application ID'. The description does not add extra meaning about the parameter 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?

States the specific verb 'Retrieve' with the resource 'application overview' and enumerates the exact metrics returned: latency, CPU/RAM usage, active instance count across regions, and estimated cost breakdown. This clearly differentiates it from sibling tools like bunny_get_mc_app or bunny_list_mc_apps by focusing on overview metrics rather than app details or list operations.

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

Usage Guidelines2/5

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

The description does not mention when to use this tool versus alternatives such as bunny_get_mc_app or bunny_get_account. While the metric list implies a monitoring/overview use case, there is no explicit guidance on selecting this tool over others or any exclusion criteria.

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

bunny_get_mc_app_statisticsA
Read-onlyIdempotent

Retrieve historical application statistics over a date range: CPU usage, RAM usage, network traffic (inbound/outbound), request latency, and volume storage usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
date_toNoEnd date (YYYY-MM-DD or ISO 8601)
date_fromNoStart date (YYYY-MM-DD or ISO 8601)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so no safety contradiction exists. The description adds useful context about what data is included, but does not disclose additional behavioral traits such as aggregation granularity, timezone handling, date range limits, or response shape.

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

Conciseness5/5

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

The description is a single, well-structured sentence. It front-loads the action and resource, then provides a concise metric list that adds real value without repetition or noise.

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 read-only statistics tool, the description and schema cover the essential aspects: what data is returned, the required ID, and the optional date range. An output schema is absent, so more explicit return-format detail could be helpful, but the metric list largely compensates.

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, including 'Application ID' and date format hints. The description does not add parameter-level semantics beyond framing the date range and the metrics, 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 starts with a specific verb ('Retrieve') and identifies the exact resource: historical application statistics. It also enumerates the covered metrics (CPU, RAM, network traffic, latency, volume storage) and limits scope with 'over a date range', making the purpose unambiguous even among many 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 Guidelines4/5

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

The description clearly implies when to use this tool: when historical application statistics for CPU, RAM, network, latency, or volume are needed over a date range. It does not explicitly name alternatives or exclusion conditions, but the context is evident from the metric list and date-range wording.

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

bunny_get_origin_errorsA
Read-onlyIdempotent

Retrieve origin error logs for a pull zone on a specific date. Shows exactly why origin requests failed, including error codes: dns_lookup, http_timeout, http_request_exception, http_request_failure, http_invalid_range, http_loop_detected, http_invalid_compression, network_socket_exception, network_io_error, notfound_localdb. Essential for debugging 502/504 errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate in MM-dd-yyyy format, e.g. '02-13-2026'
pull_zone_idYesPull Zone ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and mutability. The description adds value beyond this by listing the exact error codes that will appear in the logs and stating the tool 'shows exactly why origin requests failed'. This provides concrete behavioral insight into the output content 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 three sentences: the primary purpose, a list of returned error codes, and a use-case note. It is front-loaded with the main action, includes essential details, and has no superfluous content. 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 tool with only two fully documented parameters and no output schema, the description is nearly complete. It outlines the nature of the data (error logs with specific error codes) and the primary use case (debugging 502/504). It does not describe the response format or potential pagination, but for a read-only, idempotent call with simple inputs, this is 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 parameters already documented (date format and pull_zone_id). The description repeats this scope ('for a pull zone on a specific date') but does not add new semantic information about the parameters. At baseline 3 for full coverage, the description's contribution is minimal but not misleading.

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 'Retrieve', the resource 'origin error logs', and the scope ('for a pull zone on a specific date'). It also enumerates the specific error codes returned, which differentiates it from generic pull zone or statistics tools. This makes the tool's purpose unambiguous and distinguishable from siblings.

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

Usage Guidelines4/5

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

The description provides explicit usage context by stating 'Essential for debugging 502/504 errors', which tells the agent when to use this tool. It does not explicitly contrast with alternatives or give when-not-to-use scenarios, but the specified use case is strong enough to guide selection.

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

bunny_get_pull_zoneA
Read-onlyIdempotent

Retrieve full configuration of a CDN pull zone by ID, including origin URL, hostnames, caching settings, security options, edge rules, and optimizer config.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPull Zone ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with these by saying 'Retrieve.' The description adds value by specifying what kind of data will be returned (origin URL, hostnames, caching settings, security options, edge rules, optimizer config), which goes beyond the annotations alone.

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

Conciseness5/5

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

The description is a single efficient sentence that front-loads the action and resource before listing the configuration categories. Every phrase earns its place, and there is no redundant or filler 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 read-only getter, the description plus annotations are largely sufficient: the safety profile is covered by annotations, the parameter is fully documented, and the description enumerates the major returned sections. However, there is no output schema and the description does not mention not-found behavior or how to obtain the ID, leaving minor 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 already fully documents the only parameter, 'id', including its type, description, and constraint. The description simply refers to 'by ID' without adding additional semantic meaning, so the baseline of 3 applies given 100% schema description 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 ('Retrieve') and a specific resource ('full configuration of a CDN pull zone by ID'), and enumerates the kinds of configuration included. This clearly distinguishes it from list, create, update, and delete operations among 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 Guidelines3/5

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

Usage context is only implied: the tool is for retrieving a single pull zone's configuration by ID, while list_pull_zones would be for enumerating zones. There is no explicit statement about when to prefer this over alternatives or when not to use it, but the verb and 'by ID' scope provide reasonable implicit guidance.

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

bunny_get_shield_metricsA
Read-onlyIdempotent

Retrieve security metrics overview for a shield zone over a date range: WAF blocks, rate limit triggers, bot detections, and DDoS mitigation events.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_toNoEnd date (YYYY-MM-DD or ISO 8601)
date_fromNoStart date (YYYY-MM-DD or ISO 8601)
shield_zone_idYesShield Zone ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already carry readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the metric categories returned, but gives no behavioral caveats such as date-range defaults, response aggregation, or relationship to the more specific security rule tools.

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 front-loaded sentence states the action, resource, scope, and the key returned categories with no redundant words. 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 read-only metrics retrieval call, the description plus fully documented schema is adequate: required parameter, optional dates, and return categories are all inferable. It would benefit from explicitly noting optional date-range behavior or pointing to sibling tools for details, hence not a 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?

Schema description coverage is 100% and the schema already documents shield_zone_id, date_from, and date_to. The description only restates the idea of a date range, adding no 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 names a specific verb ('Retrieve'), a specific resource ('security metrics overview for a shield zone'), and enumerates the metric types (WAF blocks, rate limit triggers, bot detections, DDoS mitigation), making it easy to distinguish from generic shield-zone or WAF-rule 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 phrase 'security metrics overview for a shield zone over a date range' gives clear context for when to call this tool, but it does not explicitly name alternatives or state when not to use it, even though siblings like get_waf_rules and get_bot_detection overlap.

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

bunny_get_shield_zoneA
Read-onlyIdempotent

Retrieve shield zone configuration by shield zone ID or by the associated pull zone ID. Returns WAF settings, rate limit rules, bot detection config, and DDoS protection status.

ParametersJSON Schema
NameRequiredDescriptionDefault
pull_zone_idNoPull Zone ID to find its shield zone (use this OR shield_zone_id)
shield_zone_idNoShield Zone ID (use this OR pull_zone_id)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral detail by listing the returned content categories: WAF settings, rate limit rules, bot detection config, and DDoS protection status, which is useful beyond the annotations.

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

Conciseness5/5

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

A single, well-structured sentence that front-loads the action and resource, then provides lookup methods and return scope. No wasted words or redundant repetition of the title.

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 lookup tool with rich annotations and a small, self-explanatory input schema, the description covers the essential information: what it returns and how to identify the resource. It does not explain the exactly-one-ID requirement, but the parameter descriptions already convey the OR constraint.

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 already documented in the input schema with descriptions clarifying the OR relationship between pull_zone_id and shield_zone_id. The description reinforces that either ID can be used but does not add 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 names a specific verb ('Retrieve') and resource ('shield zone configuration'), and states the two valid lookup keys (shield zone ID or pull zone ID). It clearly distinguishes this from sibling tools like bunny_list_shield_zones by focusing on a single zone lookup.

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 correct usage context: call when you need a single shield zone's configuration and have either its shield zone ID or its pull zone ID. It does not explicitly mention using bunny_list_shield_zones when IDs are unknown, but the lookup-by-ID framing gives clear context without needing exclusions.

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

bunny_get_statisticsA
Read-onlyIdempotent

Retrieve account-wide or per-pull-zone CDN statistics over a date range. Returns time-series data for bandwidth, requests, cache hit rate, status codes (3xx/4xx/5xx), and geographic distribution. Use hourly=true for granular data.

ParametersJSON Schema
NameRequiredDescriptionDefault
hourlyNoReturn hourly data points instead of daily
date_toNoEnd date (YYYY-MM-DD or ISO 8601)
date_fromNoStart date (YYYY-MM-DD or ISO 8601)
pull_zoneNoFilter by Pull Zone ID
server_zone_idNoFilter by server zone/region ID

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds behavioral detail by specifying time-series output, the included metrics, and the hourly data option. No contradiction with annotations.

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

Conciseness5/5

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

Three sentences, front-loaded with the core purpose, then returning useful detail about output metrics and granularity. Every sentence earns its place 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?

Despite lacking an output schema, the description covers the main things an agent needs: scope, date range, return metrics, and granularity. It does not spell out exact response shape or default date behavior, but the optional parameters and full schema descriptions mitigate that gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by framing the tool as account-wide or per-pull-zone, which maps to the pull_zone parameter, and by clarifying that hourly=true produces granular data.

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 ('Retrieve'), a clear resource ('CDN statistics'), and scope ('account-wide or per-pull-zone'). It also lists the returned metric categories, making the tool's purpose concrete and distinguishable from sibling statistics tools like origin errors or billing.

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 useful context: CDN statistics over a date range, with an hourly granularity option. However, it does not explicitly tell the agent when to prefer this tool over related siblings such as bunny_get_mc_app_statistics, bunny_get_origin_errors, or bunny_get_dns_statistics, nor does it state any exclusions.

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

bunny_get_storage_zoneA
Read-onlyIdempotent

Retrieve storage zone details by ID, including primary region, replication regions, connected pull zones, storage used, and file count.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStorage Zone ID

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds no further behavioral traits such as auth requirements, rate limits, or side effects, but it does contribute useful context about the response payload (e.g., storage used, file count) which is not present in the schema. Given the annotations already handle the key behavior, this is adequate without being exceptional.

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 leads with the action and resource, then lists the key returned attributes. There is no redundancy or filler; every word earns its place. It is an excellent model of 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?

With no output schema, the description compensates by itemizing the expected response fields (primary region, replication regions, connected pull zones, storage used, file count). This gives an agent a good sense of the data returned. It does not cover error cases or edge conditions, but for a simple get-by-ID operation, the essential information is provided. A score of 4 reflects strong completeness given the simplicity and existing 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?

The only parameter 'id' is fully described in the schema as 'Storage Zone ID' with exclusiveMinimum 0, so schema coverage is 100%. The description does not add any new details about the parameter itself, but it does indicate that the ID is used to retrieve a specific zone, which is implicit. Baseline of 3 is appropriate since the schema carries the load.

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 ('Retrieve'), names the exact resource ('storage zone details by ID'), and enumerates the key fields returned. It clearly distinguishes from sibling tools like bunny_list_storage_zones (collective retrieval) and bunny_get_storage_zone_statistics (metrics) by focusing on a single entity's configuration and usage.

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 have a specific storage zone ID, but it does not explicitly mention alternatives or exclusions (e.g., 'use bunny_list_storage_zones to enumerate zones'). The context is inferable from the tool name and description but not stated directly, so an agent might not be fully routed to the correct sibling.

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

bunny_get_storage_zone_statisticsA
Read-onlyIdempotent

Retrieve storage zone usage statistics over a date range: storage space used, file count, and bandwidth consumed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStorage Zone ID
date_toNoEnd date (YYYY-MM-DD or ISO 8601)
date_fromNoStart date (YYYY-MM-DD or ISO 8601)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive, so the description does not need to repeat that. It adds meaningful behavioral context by specifying the date-range input and the metrics returned, which goes beyond the structured annotation 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, well-structured sentence that leads with the action and resource, then immediately lists the returned metrics. No filler or redundant phrasing is present.

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 statistics tool with only three parameters, the description adequately covers the purpose and returned data. There is no output schema, so listing the specific metrics is valuable; however, it does not explain behavior when date_from/date_to are omitted, which is 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 every parameter already described meaningfully (Storage Zone ID, end date, start date). The description adds the high-level context of 'usage statistics over a date range' but does not provide additional parameter-level detail beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Retrieve') with a clear resource ('storage zone usage statistics') and enumerates exactly what metrics are returned: storage space used, file count, and bandwidth consumed. This clearly distinguishes it from sibling tools like bunny_get_dns_statistics or bunny_get_statistics.

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 tool's scope explicit: it is for storage zone usage statistics over a date range. It does not explicitly name alternatives or exclusions, but the resource-specific wording provides clear context for when an agent should select this tool among the many siblings.

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

bunny_get_video_libraryA
Read-onlyIdempotent

Retrieve video library details by ID, including player configuration, security settings (token auth, allowed/blocked referrers), encoding config (resolutions, bitrates), DRM, watermark, and transcribing settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVideo Library ID
include_access_keyNoInclude API access keys in response

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior, so the safety profile is covered. The description adds a useful list of returned settings but no new behavioral traits such as auth requirements, rate limits, or side effects; it also 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 front-loaded sentence: the core action ('Retrieve video library details by ID') comes first, followed by a compact enumeration of what is returned. No filler or tautology is present.

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 read-only GET with fully documented parameters and strong annotations, the description is complete: it states the needed identifier, the optional access-key flag is in the schema, and the 'including...' list tells the agent what content to expect even without an 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?

Both parameters are already described fully in the schema: id has type and minimum constraints, include_access_key has a direct boolean description. The tool description adds no parameter-level meaning beyond the schema, so the 100% coverage 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 opens with a specific verb and resource ('Retrieve video library details'), narrows the scope by ID, and then lists the configuration categories returned. This clearly distinguishes it from bunny_list_video_libraries (enumerating libraries) and create/update siblings.

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

Usage Guidelines4/5

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

The 'by ID' phrasing gives a clear contextual trigger: use this when you have a specific library ID and need its full configuration. It does not explicitly name alternatives or say when not to use it, so it misses the strongest possible guidance, but the intended usage is clear.

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

bunny_get_waf_rulesA
Read-onlyIdempotent

Retrieve all WAF rules and profiles configured for a shield zone, including managed rulesets (OWASP, etc.) and custom rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
shield_zone_idYesShield Zone ID

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already communicate read-only, idempotent, non-destructive behavior, so the description needs little safety disclosure. It adds useful content scope ('including managed rulessets and custom rules') but no operational behavior such as response format, pagination, error conditions, or authorization needs. No contradiction with annotations.

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

Conciseness5/5

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

One tightly worded sentence that front-loads the action and scope. The mention of managed vs. custom rules is valuable, not redundant, and there is no filler or duplicated schema 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 single-parameter, read-only, idempotent tool with strong annotations, this description is sufficient to invoke it correctly and understand the returned entity category. No output schema exists, so a bit more detail on response shape could have helped, but the simplicity of the operation keeps this gap minor.

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 fully documents the single required parameter shield_zone_id with type and lower bound, so schema coverage is 100%. The description only restates that these rules belong to a shield zone, adding no new detail about how the parameter is interpreted or formatted.

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 ('Retrieve') targeting a clear resource ('WAF rules and profiles') scoped to a shield zone. It further clarifies the contents by naming managed rulessets and custom rules, making the tool's purpose immediately distinguishable from sibling management tools like bunny_manage_waf_custom_rule.

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?

It provides clear contextual framing: this is the read-oriented endpoint for all WAF rules on a shield zone, and the 'manage' siblings imply the alternative for modifications. However, it never explicitly says when to prefer this tool over bunny_manage_waf_custom_rule or when not to use it, leaving the routing to inference.

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

bunny_list_countriesA
Read-onlyIdempotent

List all countries with their ISO 2-letter codes. Reference data for configuring geo-blocking, routing filters, and allowed/blocked country lists on pull zones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by specifying that it lists all countries with ISO 2-letter codes and frames the data as static reference material. This is beyond what the annotations alone convey.

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

Conciseness5/5

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

Two concise sentences, each earning its place: the first states exactly what the tool does, the second explains why an agent would need this data. The core action is front-loaded and there is no unnecessary verbosity or repetition of the tool name.

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?

This is a simple zero-parameter, read-only reference lookup with no output schema. The description tells the agent the data content (countries and ISO codes) and the practical scenarios where that data is used. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

The tool has zero parameters and the schema confirms an empty properties object, so there is no parameter behavior to clarify. The description naturally cannot add parameter semantics, but per the rubric the baseline for zero params is 4.

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

Purpose4/5

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

The description uses a specific verb and resource: 'List all countries with their ISO 2-letter codes.' This is clear and unambiguous. It does not explicitly name or contrast sibling tools like bunny_list_regions, but the country-specific scope is enough to differentiate it for most agents.

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 second sentence explicitly states the use case: reference data for geo-blocking, routing filters, and allowed/blocked country lists on pull zones. This gives clear context for when to invoke the tool, though it does not explicitly mention alternatives or say 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.

bunny_list_dns_zonesA
Read-onlyIdempotent

List all Bunny DNS zones in the account with optional search and pagination. Each DNS zone corresponds to a domain managed by bunny.net nameservers.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Default: 1
searchNoSearch term to filter DNS zones by domain name
per_pageNoItems per page. Default: 1000

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 safe read-only nature is covered. The description adds account-level scope and optional search/pagination, but does not disclose response format, edge cases, or any further behavioral details. 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?

Two tightly written sentences with no filler. The action and scope are front-loaded, and the second sentence adds useful domain context about DNS zones corresponding to managed domains.

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, read-only list tool, the description covers the core scope and domain semantics, while the schema handles parameter details. The lack of response format details is slightly noticeable because there is no output schema, but it is not critical for invoking this tool correctly.

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

Parameters3/5

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

The input schema already fully documents all three parameters with descriptions, defaults, and constraints. The description merely summarizes them as 'optional search and pagination' and adds no additional semantic 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 uses a specific verb ('List'), names the exact resource ('all Bunny DNS zones in the account'), and clarifies optional search/pagination. This clearly distinguishes it from collection-specific tools like get_dns_zone or record management 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 makes the collection-level intent explicit ('all...in the account') and implies use for enumeration/search rather than fetching a single zone. It does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

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

bunny_list_edge_scriptsA
Read-onlyIdempotent

List all Bunny Edge Scripts in the account. Edge scripts are serverless JavaScript functions that run on bunny.net's edge network, used for custom request/response handling.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already establish the read-only, idempotent, non-destructive safety profile. The description adds account-wide scope and domain context, but does not disclose behavioral details such as pagination, ordering, or response shape. This matches the lowered bar for annotations but adds limited behavioral information.

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

Conciseness5/5

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

Two sentences with the operative instruction and scope front-loaded. The second sentence provides only a brief, useful definition of the resource, and there is no filler or repetition of schema/annotation 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 zero-parameter, read-only list operation with robust annotations, the description provides all necessary orientation: account-level enumeration and what an edge script is. No output schema exists, but the purpose of the tool makes the list-shaped return value obvious, so nothing critical is missing.

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

Parameters4/5

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

The schema has zero parameters and 100% description coverage, so the baseline is 4. The description correctly avoids inventing parameter behavior and needs no parameter-level documentation.

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'), names the resource ('Bunny Edge Scripts'), and scopes the operation to 'the account'. This clearly distinguishes it from sibling single-resource tools like bunny_get_edge_script and bunny_manage_edge_script, and the added explanation clarifies what edge scripts are.

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?

'List all … in the account' gives a clear context for when to use this tool: when the agent needs to enumerate edge scripts across the account rather than retrieve, publish, or manage a specific one. However, it does not explicitly name alternatives or state when-not-to-use this tool, stopping short of a 5.

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

bunny_list_mc_appsA
Read-onlyIdempotent

List all Magic Container applications in the account. Magic Containers are bunny.net's serverless container platform for deploying Docker images to the edge.

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?

Annotations (readOnlyHint=true, idemotentHint=true, destructiveHint=false) already carry the safety profile, so the description's burden is lower. It adds the account-wide scope and frames the resource as Docker-image deployments at the edge, but it does not disclose return format or pagination. No contradiction with annotations.

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

Conciseness4/5

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

Two short sentences with the action front-loaded. The second sentence defining Magic Containers is helpful context for placing this tool among 50+ bunnny.net siblings, though it is tangential to actually invoking the call.

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

Completeness4/5

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

For a zero-parameter, read-only list tool whose safety profile is covered by annotations, the definition is nearly complete: it states exactly what is listed and at what scope. The response shape is not described and there is no output schema, but 'List' reasonably implies an enumeration of applications.

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 has zero properties and 100% coverage, so the baseline of 4 applies; there is no parameter detail for the description to add. It correctly avoids inventing parameter noise.

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?

Names a specific verb, resource, and scope: 'List all Magic Container applications in the account'. The resource noun 'applications' distinguishes it from siblings like bunny_list_mc_registries and bunnny_list_mc_regions, and the account scope separates it from per-app tools like bunnny_get_mc_app and bunnny_get_mc_app_oview.

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 rather than stated: it is a zero-parameter list operation, and the Magic Containers explanation helps an agent recognize when the domain applies. However, it never names alternatives or says when to prefer this over the per-app siblings (bunnny_get_mc_app, bunnny_manage_mc_app, bunnny_get_mc_app_oview).

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

bunny_list_mc_regionsA
Read-onlyIdempotent

List available Magic Container deployment regions with their anycast support and capacity status. Use this to choose where to deploy applications.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context by specifying what kind of region data is returned (anycast support and capacity status), which supports the listing 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?

A single front-loaded sentence states the resource, the data included, and the intended use. Every word contributes value and there is no 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 zero parameters, rich annotations, and a simple list-regions operation, the description is complete. It explains what the tool returns, why to use it, and the annotations already communicate safety and idempotency.

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 no parameter-level details, but none are needed. It clearly communicates what the listing covers.

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 names a specific verb ('List'), a specific resource ('Magic Container deployment regions'), and the distinguishing content (anycast support, capacity status). It is also clearly differentiated from the sibling bunny_list_regions by specifying 'Magic Container' regions.

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 states when to use this tool: 'Use this to choose where to deploy applications.' It gives clear context for selection, though it does not explicitly name alternative tools or 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.

bunny_list_mc_registriesA
Read-onlyIdempotent

List container registries configured for pulling Docker images (Docker Hub, GHCR, custom registries). Registry credentials are used when deploying private container images.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safe read-only behavior is established. The description adds context about the role of registry credentials but does not disclose response behavior, pagination, errors, or auth requirements beyond what annotations supply.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence front-loads the action and resource, and the second sentence adds meaningful deployment context 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 zero-parameter, safely read-only list tool, the description is sufficient: it identifies the resource, gives examples, and explains practical relevance. It does not describe the exact output shape, but the list-oriented purpose and openWorldHint make this a minor gap.

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

Parameters4/5

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

The input schema has no parameters, so there is nothing for the description to elaborate on. The zero-parameter baseline of 4 applies, and the description still usefully clarifies what kind of registries are listed.

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 names a specific verb ('List'), a specific resource ('container registries configured for pulling Docker images'), and gives concrete examples (Docker Hub, GHCR, custom registries). This clearly separates it from sibling list tools such as bunny_list_mc_apps or bunny_list_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 statement that registry credentials are used when deploying private container images implies a use case, but it does not explicitly say when to use this tool versus alternatives or when not to use it. No sibling comparison or exclusionary guidance is provided.

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

bunny_list_pull_zonesA
Read-onlyIdempotent

List all CDN pull zones in the account with optional search and pagination. Each pull zone represents a CDN distribution endpoint (name.b-cdn.net) connected to an origin URL or storage zone.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Default: 1
searchNoSearch term to filter pull zones by name
per_pageNoItems per page. Default: 1000
include_certificateNoInclude SSL certificate details in response

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that results are CDN endpoints with origins, but reveals no additional behavioral nuances such as default pagination behavior, response shape, or side effects of include_certificate. That is acceptable but not exceptional given 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?

Two sentences with zero waste. The action and scope are front-loaded, and the explanatory second sentence adds useful domain context without redundancy. It is appropriately sized for a simple list endpoint.

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 read-only listing tool, the description plus fully documented schema and safety annotations provide enough information for an agent to call it correctly. The minor gap is lack of explicit feedback about response shape, but no output schema exists and such details are not strictly 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?

All four parameters already have descriptive text in the schema, yielding 100% coverage. The description only rephrases that search and pagination are available without adding new meaning beyond the schema. 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 clearly states the action ('List'), the resource ('all CDN pull zones in the account'), and the scope. It adds a clarifying definition of a pull zone, which helps an agent understand the returned entities. This distinguishes it from get_pull_zone, create_pull_zone, and other pull-zone mutation tools visible in the sibling list.

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

Usage Guidelines4/5

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

The description makes it clear that this is the tool for retrieving multiple pull zones, with optional search and pagination. It does not explicitly name when-not-to-use or alternatives like bunny_get_pull_zone for single-zone lookups, but the context is unambiguous enough for a list op.

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

bunny_list_rate_limit_rulesA
Read-onlyIdempotent

List all rate limiting rules configured for a shield zone. Rate limit rules restrict the number of requests per second from matching clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
shield_zone_idYesShield Zone ID

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds conceptual context ('Rate limit rules restrict the number of requests per second from matching clients') but does not disclose additional operational behavior such as pagination, ordering, or response structure. Given the annotation coverage, this is adequate without being 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?

Two concise sentences. The primary action is front-loaded in the first sentence, and the second sentence gives useful domain context. No wasted words or redundant restatements of the tool name.

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 tool is simple: one parameter, no output schema, and annotations cover the safety profile. The description fully explains what the tool does and the required scope. Minor missing details like return format or relationship to bunny_manage_rate_limit_rule are not critical for a straightforward list operation, so only a small gap remains.

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 only parameter, shield_zone_id, with its own description 'Shield Zone ID'. The tool description reinforces that this belongs to 'a shield zone', but does not add meaningful detail beyond the schema. Baseline 3 is appropriate since the schema already carries the parameter 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 uses a specific verb ('List'), a clear resource ('rate limiting rules'), and scopes it to 'a shield zone'. This clearly distinguishes it from sibling tools like bunny_manage_rate_limit_rule (which implies create/update/delete) and other list operations.

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 a clear context: use this to list rate limiting rules for a shield zone. It does not explicitly state when to use alternatives like bunny_manage_rate_limit_rule, but the list vs. manage distinction is evident from the tool names and description. No misleading or conflicting usage guidance is present.

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

bunny_list_regionsA
Read-onlyIdempotent

List all bunny.net CDN edge server regions with their IDs, names, pricing tiers, and geographic coordinates. Useful for choosing routing filters or understanding geo-distribution.

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?

Annotations already convey readOnly, idempotent, and non-destructive behavior. The description adds transparency about the returned fields (IDs, names, pricing tiers, geographic coordinates), which tells the agent what to expect from the call.

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

Conciseness5/5

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

Two concise sentences with no waste. The primary action and resource are front-loaded, and the use-case sentence is brief but informative.

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 list operation, this description is complete: it names the resource, the fields returned, and common use cases. No output schema exists, but the description adequately sets expectations.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter meaning to convey. The schema is empty and descriptions need not compensate for any parameter gap.

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

Purpose5/5

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

States a specific verb ('List all') and a specific resource ('bunny.net CDN edge server regions'), and enumerates the data fields returned. This clearly distinguishes it from sibling tools like bunny_list_countries or bunny_list_pull_zones.

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

Usage Guidelines4/5

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

Provides the intended use cases: choosing routing filters and understanding geo-distribution. Does not explicitly name alternaties or when-not-to-use, but the purpose is narrow enough that little ambiguity remains.

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

bunny_list_shield_zonesA
Read-onlyIdempotent

List all Bunny Shield security zones. Each shield zone provides WAF, rate limiting, bot detection, and DDoS protection for one or more associated pull zones.

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?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is known to be safe. The description adds domain context by explaining what shield zones do, which is useful beyond the structured hints. No additional caveats (pagination, auth, rate limits) are necessary for a zero-parameter 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 succinct sentences with the core action front-loaded. The second sentence adds value by explaining what shield zones encompass, without any fluff or repetition.

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 list tool with read-only annotations and no output schema, the description fully conveys what the tool does and why it exists. Nothing essential is missing.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is trivially 100% and there is nothing to document. Baseline for 0 params is 4; the description adds no parameter info, but none is needed.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('Bunny Shield security zones'), and further clarifies that each zone provides WAF, rate limiting, bot detection, and DDoS protection. This clearly differentiates from sibling tools like bunny_get_shield_zone (which retrieves a single zone) and bunny_list_pull_zones (which lists pull zones).

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 purpose is self-evident: use this tool to list all shield zones. The description implies usage without explicit exclusions or alternatives. It does not mention that a single-zone getter exists, but the simple list-all intent is clear enough for the agent.

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

bunny_list_storage_zonesA
Read-onlyIdempotent

List all Edge Storage zones in the account. Each storage zone is a file storage container with a primary region and optional replication. Storage zones can serve as origins for pull zones.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Default: 1
per_pageNoItems per page. Default: 1000
include_deletedNoInclude deleted storage zones

TDQS

A4/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior, so the description doesn't need to repeat those. The description adds account-level scope and domain context about storage zones being containers with regions/replication that can act as origins. It could mention pagination or deleted-zone handling, but annotations lower the burden.

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

Conciseness5/5

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

Three concise sentences with no filler. The action is front-loaded, and the two explanatory sentences about storage zones add useful context without bloating the description.

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 and schema together cover the tool's purpose, optional parameters, and safety profile. It lacks an explicit statement of return shape or how pagination interacts with 'all', but for a simple read-only list tool with no output schema, this is still adequate 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?

The schema covers all three parameters with descriptions and defaults, so the description need not elaborate. It adds no special meaning beyond what the parameter descriptions already provide, but it also doesn't conflict.

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 action ('List'), a clear resource ('all Edge Storage zones'), and the scope ('in the account'). It is easy to distinguish from single-zone retrieval tools like bunny_get_storage_zone because 'all' signals a collection 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 this tool is for enumerating storage zones, and the note about zones serving as origins gives a use case. However, it never explicitly says when to prefer this over bunny_get_storage_zone or how pagination behavior should inform usage.

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

bunny_list_video_librariesA
Read-onlyIdempotent

List all Bunny Stream video libraries in the account. Each library is an isolated container for videos with its own player settings, encoding config, API keys, and DRM/watermark options.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number. Default: 1
searchNoSearch term to filter by library name
per_pageNoItems per page. Default: 1000
include_access_keyNoInclude API access keys in response

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is well covered. The description adds useful conceptual context by explaining that each library is an isolated container with its own player settings, encoding config, API keys, and DRM/watermark options, which helps the agent understand the domain 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 with no wasted words. The primary purpose is front-loaded in the first sentence, and the second sentence provides concise domain context that helps the agent understand what a video library is. 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 straightforward read-only list operation, the description combined with the schema and annotations is largely complete: it identifies the resource, scope, safety profile, and parameters. It does not describe the response structure, but there is no output schema and the lack is not critical for a simple listing 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 and all four parameters (page, search, per_page, include_access_key) are already documented with clear semantics. The tool description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('List all Bunny Stream video libraries in the account') with a clear resource and scope, and it distinguishes this from related video-library tools like bunny_get_video_library, bunny_create_video_library, and bunny_update_video_library. The additional detail about what a library contains further clarifies what this tool operates on.

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 clearly conveys that this tool is for listing all libraries in the account, which makes the primary use case obvious. It does not explicitly name alternatives or exclusion conditions, but the contrast with get/create/update siblings is reasonably inferable from the word 'list'.

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

bunny_manage_dns_recordA
Destructive

Add, update, or delete a DNS record within a zone. Record types: 0=A, 1=AAAA, 2=CNAME, 3=TXT, 4=MX, 5=Redirect, 6=Flatten, 7=PullZone, 8=SRV, 9=CAA, 10=PTR, 11=Script, 12=NS. For add/update, provide a record object with fields: Type (number), Value, Name (subdomain or empty string for root), Ttl (seconds), Priority (for MX/SRV), Weight, Port.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: add, update, or delete
recordNoDNS record object (required for add/update). Use BunnyCDN PascalCase field names.
zone_idYesDNS Zone ID
record_idNoDNS record ID (required for update/delete)

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already signal readOnlyHint=false and destructiveHint=true, and the description's 'delete' operation aligns with that. It adds useful behavioral detail by requiring a record object for add/update and listing record types, but it does not disclose side effects, whether update/delete require a record ID, or any irreversible consequences beyond what the annotation already implies.

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 padding. It leads with the core action, packs the type map into a compact reference, and closes with the object fields. Every word serves a 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?

It is adequate for add operations, given annotations cover destructive behavior, but it does not state how update/delete identify the target record or whether a separate record ID is needed. There is no output schema and no mention of return/response behavior, which is a meaningful gap for a mutation tool.

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

Parameters4/5

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

Schema description coverage is 100%, so this is above baseline. The description adds real value by mapping numeric Type codes to human-readable record types, clarifying the Name field (subdomain or empty for root), specifying Ttl in seconds, and noting that Priority applies to MX/SRV. It does not fully explain when priority/weight/port are required or how update identifies an existing record.

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 opens with a clear verb-resource pair: Add, update, or delete a DNS record within a zone. It explicitly enumerates the record types and the fields needed for add/update, making its domain unmistakable. This differentiates it from sibling zone-level tools like bunny_create_dns_zone or bunny_get_stonzage_zone.

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 clear context: this tool manages DNS records inside a zone, implying use when the target is a record rather than a zone. It does not explicitly name alternatives or give when-not-to-use conditions, so it stops short of a perfect 5.

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

bunny_manage_edge_rulesA
Destructive

Manage edge rules on a CDN pull zone. Edge rules let you control redirects, headers, caching, and origin routing at the edge. Actions: 'upsert' creates or updates a rule, 'delete' removes it, 'enable'/'disable' toggles it. For upsert, provide edge_rule with: ActionType (number), TriggerMatchingType (0=MatchAny, 1=MatchAll), Triggers (array), ActionParameter1, ActionParameter2, Description, Enabled. ActionTypes: 0=ForceSSL, 1=Redirect, 2=OriginUrl, 3=OverrideCacheTime, 4=BlockRequest, 5=SetResponseHeader, 6=SetRequestHeader, 7=ForceDownload, 8=DisableTokenAuth, 9=EnableTokenAuth, 10=OverrideCacheTimePublic, 11=IgnoreQueryString, 14=DisableOptimizer, 15=ForceCompression, 16=SetStatusCode, 17=OriginStorage, 18=SetNetworkRateLimit, 19=SetConnectionLimit, 20=SetRequestsPerSecondLimit.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: upsert, delete, enable, or disable
edge_ruleNoEdge rule object (required for upsert). Use BunnyCDN PascalCase field names.
edge_rule_idNoEdge rule GUID (required for delete/enable/disable)
pull_zone_idYesPull Zone ID

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already carry the mutation profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), so the bar is lower. The description adds the specific mutation semantics — 'delete' removes a rule, 'enable'/'disable' toggles it — which clarifies what gets destroyed. But it says nothing about authentication needs, live-traffic side effects, conflict behavior, or what happens on repeated calls, so it meets the baseline without going further.

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

Conciseness2/5

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

The opening sentences are well-structured and front-loaded, but the ActionType enumeration balloons to well over 200 entries, dominated by UnitTestValidate noise, and then degenerates into corrupted tokens ('253=UnitTestValidate…', 'and more', 'etc...'). The tail bloads the definition to thousands of tokens and degrades trust; the whole definition is not appropriately sized despite its strong lead.

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 four-action tool with a nested open object and no output schema, the description covers action selection and the main upsert payload fields well. It omits the Triggers item shape (array of what — TriggerType/Pattern fields), any result or confirmation format, and error semantics, which an agent will need on the first real upsert. This is adequate but has clear, nameable gaps.

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?

The schema describes edge_rule only as an open bag (additionalProperties: {}), so without the description an agent would have zero structure for the tool's most complex parameter. The description supplies the full field contract — ActionType, TriggerMatchingType (0=MatchAny, 1=MatchAll), Triggers, ActionParameter1/2, Description, Enabled — plus a numbered ActionType catalog (0 and up). This is precisely the semantics the schema fails to provide.

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 opens with a specific verb-resource pairing — 'Manage edge rules on a CDN pull zone' — and grounds it by explaining what edge rules control (redirects, headers, caching, origin routing). It enumerates all four operation modes (upsert, delete, enable/disable), making the scope concrete and clearly distinct from nearby siblings like bunny_manage_edge_script, bunny_manage_waf_custom_rule, and bunny_manage_rate_limit_rule. The corrupt tail of the ActionTypes list does not affect the core purpose statement.

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?

Operational usage guidance is explicit: it maps the upsert action to its parameter contract ('For upsert, provide edge_rule with…') and names what the other three actions do, with edge_rule_id required for them in the schema. However, no alternatives or when-not conditions are stated — the tool relies on its 'edge rules' subject to self-select against the 50+ siblings rather than exclusions or alternative routing.

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

bunny_manage_edge_scriptA
Destructive

Create, update, or delete an edge script. Script types: 0=Standalone (handles full requests), 1=Middleware (runs before pull zone origin). For create, provide name and type. For update, provide settings with BunnyCDN PascalCase field names.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoEdge Script ID (required for update/delete)
nameNoScript name (required for create)
typeNoScript type: 0=Standalone, 1=Middleware (for create)
actionYesAction: create, update, or delete
settingsNoSettings object with BunnyCDN PascalCase field names (for update)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already signal destructive behavior (destructiveHint=true, readOnlyHint=false), so the bar is lower. The description adds the detail about script types and field naming conventions, which goes beyond the schema. It does not disclose potential side effects of update (e.g., full replacement) or constraints, but given annotations cover the destructive nature, a 3 is appropriate.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, then script types, then usage hints. Every sentence serves a purpose: it states the operation, defines an enum-like distinction, and gives field-specific guidance. No fluff 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?

Given the 5-parameter schema with 100% coverage and no output schema, the description covers the essential context: what actions are possible, what fields are needed per action, and the type meanings. It does not explain the response format, but that is not required without an output schema. The only minor gap is not discussing prerequisites (e.g., that id is needed for update/delete), but the schema already states that. Overall sufficient for an agent to safely invoke.

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 each parameter already has a description. The description adds the specific guidance that 'settings' uses BunnyCDN PascalCase field names, which is not in the schema. However, most parameter meaning is already conveyed by the schema, so the description provides marginal added value. Baseline 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 explicitly states the tool creates, updates, or deletes an edge script, with a specific resource and verb. It also clarifies script types (0=Standalone, 1=Middleware) with their purposes, which distinguishes the core functionality from siblings like code management tools. 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 Guidelines3/5

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

The description gives some usage direction (provide name/type for create, settings with PascalCase for update) but does not explicitly contrast this tool with alternatives such as bunny_set_edge_script_code or bunny_manage_edge_script_variables. It implies when to use it (for CRUD operations) but lacks when-not-to-use guidance. The distinction between create and update is clear, but alternatives are not named.

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

bunny_manage_edge_script_variablesA
Destructive

Manage environment variables or encrypted secrets for an edge script. Variables are plaintext key-value pairs accessible at runtime. Secrets are encrypted and never returned in plaintext after creation. Actions: list, add, update, delete, upsert (create or update by name).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge Script ID
nameNoVariable/secret name (for add/upsert)
valueNoVariable/secret value (for add/update/upsert)
actionYesAction to perform
resourceYesResource type: variable or secret
resource_idNoVariable/secret ID (required for update/delete)

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds real behavioral detail: variables are plaintext key-value pairs, secrets are encrypted and 'never returned in plaintext after creation', and the available actions include destructive operations. This goes beyond what the annotations alone convey.

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

Conciseness5/5

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

The description is compact, well-ordered, and every sentence earns its place: resource and purpose, semantic distinction, and action list. It is easily scannable with no filler.

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

Completeness4/5

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

For a multi-action management tool, the description covers the essential behavioral distinctions and action set. It does not describe output/responses, but there is no output schema and the annotation context provides the safety profile; the remaining details are adequately handled by the input schema and enums.

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 parameter meanings like id, name, value, action, and resource are already documented. The description adds some extra meaning by explaining variable/secret semantics and the upsert behavior, but it does not substantially enrich the schema's parameter 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 identifies the resource ('environment variables or encrypted secrets for an edge script') and enumerates the concrete actions: list, add, update, delete, upsert. This distinguishes it from sibling tools like bunny_manage_edge_script and bunny_set_edge_script_code, making the tool's 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 Guidelines3/5

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

The description implies when to use it: when managing variables or secrets for an edge script. However, it does not explicitly contrast with sibling tools such as bunny_manage_edge_script or bunny_get_edge_script_code, nor does it provide when-not-to-use guidance.

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

bunny_manage_mc_appA
Destructive

Create, update, or delete a Magic Container application. Config object fields: name, dockerImage, port, environmentVariables, regions, autoscaling settings. For create use PascalCase, for update use camelCase. Deleting removes the application and all associated resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoApplication ID (required for update/delete)
actionYesAction: create, update, or delete
configNoApplication configuration object (required for create/update)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnly=false, and the description adds a concrete consequence: 'Deleting removes the application and all associated resources.' This goes beyond the boolean annotation and is consistent with the declared destructive 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?

Three short sentences front-load the action, then the config fields, then the casing convention. Every sentence adds useful information with no filler.

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

Completeness4/5

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

For a three- parameter CRUD tool with a nested config object and no output schema, it covers the essential invocation details: actions, required id context via schema, config fields, and destructive deletion behavior. Minor gaps are explicit required config fields and return values, but they do not block correct use.

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 already describes all three parameters, so the baseline is 3. The description adds meaning by enumerating config fields (name, dockerImage, port, environmentVariables, regions, autoscaling settings) and the create/update casing distinction, pushing it above the schema alone.

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 action-resource statement: 'Create, update, or delete a Magic Container application.' It also lists the key config fields, making the scope concrete and distinguishing it from read-only siblings like bunny_get_mc_app and bunny_list_mc_apps.

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

Usage Guidelines4/5

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

It provides explicit usage context for each action, including the important format rule ('For create use PascalCase, for update use camelCase'). It does not explicitly name alternative tools or exclusions, but the action scope is clear enough to route an agent correctly.

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

bunny_manage_pull_zone_hostnamesA

Add or remove a custom hostname (e.g. cdn.example.com) on a CDN pull zone. After adding, point a CNAME record to the pull zone's b-cdn.net hostname. A free SSL certificate is provisioned automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPull Zone ID
actionYesAction to perform: 'add' or 'remove'
hostnameYesCustom hostname, e.g. cdn.example.com

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that this is a mutating operation (add/remove), which aligns with readOnlyHint=false. It adds useful behavioral details beyond annotations: automatic SSL certificate provisioning and the required CNAME setup. No annotation 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?

Three tight sentences with no filler. The main action is front-loaded, and the operational details (CNAME, SSL) follow naturally. 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 tool with three required parameters and no output schema, the description covers the essential before/after behavior: what the action is, what follow-up step is needed, and a notable automatic side effect. It could mention removal-specific implications, but the low complexity and strong schema coverage make this a minor gap.

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

Parameters4/5

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

The schema already documents id and action with 100% coverage, so the baseline is 3. The description adds value by giving a concrete hostname example and explaining the CNAME relationship, which helps an agent understand what hostname means in context even though the schema already labels 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 opens with a specific verb pair, 'Add or remove', a concrete object, 'custom hostname', and the scope, 'on a CDN pull zone'. The example cdn.example.com makes the resource concrete, and this clearly distinguishes the tool from sibling pull-zone tools like bunny_update_pull_zone or bunny_delete_pull_zone.

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 gives practical context: after adding a hostname, point a CNAME record to the pull zone's b-cdn.net hostname, and notes that SSL is provisioned automatically. It does not explicitly name alternatives or state when not to use this tool, but the intended use case is clear.

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

bunny_manage_rate_limit_ruleA
Destructive

Create, update, or delete a rate limit rule. Rule object fields: shieldZoneId, name, requestsPerSecond, blockTime, matchExpression, matchVariable, transformations, operator, matchValue. Rate limits block clients exceeding the configured request threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleNoRate limit rule object (required for create/update)
actionYesAction: create, update, or delete
rule_idNoRate limit rule ID (required for update/delete)
shield_zone_idNoShield Zone ID (required for create)

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=false and destructiveHint=true, and the description aligns by including 'delete.' It adds contextual value by explaining that rate limits block clients over a configured threshold, but it does not disclose side effects such as propagation timing, rule replacement behavior on update, or required permissions. 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?

Two sentences with no filler: the action is front-loaded, followed directly by the relevant rule-object fields and a one-line behavioral context. 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?

The description gives enough context for an agent to select and call the tool for create, update, or delete operations. Per-action prerequisites are already documented in the schema (rule required for create/update, rule_id for update/delete, shield_zone_id for create). It could mention response behavior or change propagation, but that is not critical for tool selection.

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

Parameters4/5

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

Top-level parameter descriptions in the schema cover 100% of parameters, but the nested rule object is opaque with additionalProperties: {}. The description compensates by enumerating the rule object fields such as shieldZoneId, requestsPerSecond, and matchValue. It adds meaningful payload guidance beyond the schema, though it does not explain the semantics of each field.

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 opens with a specific, multi-verb action on a concrete resource: 'Create, update, or delete a rate limit rule.' This clearly distinguishes it from sibling tools such as bunny_list_rate_limit_rules or bunny_manage_waf_custom_rule, which involve different resources or read-only behavior.

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 first sentence makes the tool's intended use clear: call this when an agent needs to mutate a rate limit rule via create, update, or delete. It does not explicitly name alternatives or state when not to use the tool, so it falls short of the strongest guidance, but the mutation scope is immediately obvious from the description.

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

bunny_manage_waf_custom_ruleA
Destructive

Create, update, or delete a custom WAF rule on a shield zone. Rule object fields: ruleName, ruleDescription, ruleConfiguration (with phases, variables, operators, transformations, actionType). Custom WAF rules let you block or allow traffic based on request attributes.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleNoCustom WAF rule object (required for create/update)
actionYesAction: create, update, or delete
rule_idNoCustom WAF rule ID (required for update/delete)
shield_zone_idYesShield Zone ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true and readOnlyHint=false, and the description's create/update/delete actions are consistent with those. The description adds useful context (the rule object structure and the purpose of custom WAF rules) butdoes not disclose consequences such as whether update replaces or merges the rule or whether delete is permanent/immediate.

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 three sentences, front-loaded with the action and resource. The rule-field enumeration is dense but earns its place given the opaque schema. Only the final sentence is mildly explanatory rather than functional, but it is brief and does not bloat the description.

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

Completeness3/5

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

For a destructive multi-action tool with a nested object and no output schema, the description covers the core operation and rule fields but omits whatthe tool returns on success, prerequisites (shield zone existence) and any propagation/permanence notes. The schema carries the action/parameter relationships, so this is adequate but with identifiable gapps.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the ract that the description enumerates the nested rule object fields (ruleName, ruleDescription, ruleConfiguration with phases, variables, operators, transformations, actionType) provides real value beyond the schema, since the rule parameter is an opaque additionalProperties: {} blob. It partially compensetes for the nested object'slack of structured 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 specific verbs (create, update, delete) and a precise resource (custom WAF rule on a shield zone), making the operation unambiguous. It is clearly distinguishable from siblings like bunny_get_waf_rules (read-only) and bunny_manage_rate_limit_rule (a different ruletype), though it does not explicitly name those 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?

Usage is implied: an agent would inferto use this tool when managing custom WAF rules on a shield zone, reinforcedby the explanatory sentence about blocking/allowing traffic based on request attributes. However, there is no explicit when-to-use vs. alternative guidance, no exclusion, and no mention that fetching rules should go through bunny_get_waf_rules.

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

bunny_mc_app_lifecycleA
Idempotent

Control the lifecycle of a Magic Container application. 'deploy' starts the application across configured regions, 'undeploy' stops all running instances, 'restart' triggers a rolling restart of all pods.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesApplication ID
actionYesLifecycle action: deploy, undeploy, or restart

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is known. The description adds behavioral details like 'rolling restart of all pods' and 'stops all running instances', which go beyond the annotations by specifying the exact operational effect. However, it does not disclose timing (e.g., async vs sync), potential errors, or prerequisites, which would enrich 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 front-loads the core purpose and then efficiently lists the three actions with their meanings. It contains no filler or redundant phrasing, and every clause contributes to 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 two-parameter tool, the description covers the main usage context well. However, it does not mention any prerequisites (e.g., the app must already exist), the nature of the response (even without an output schema, an agent might benefit from knowing if a status object is returned), or whether operations are synchronous. These gaps make it adequate but not fully 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?

Both parameters have schema descriptions (id: 'Application ID', action: 'Lifecycle action: deploy, undeploy, or restart'), giving 100% coverage. The tool description adds further meaning by explaining what each action actually does (e.g., deploy initiates across regions). This extra context helps an agent choose the correct action without opening 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's purpose: controlling the lifecycle of a Magic Container application. It enumerates the specific actions (deploy, undeploy, restart) and their effects, which distinguishes it from sibling tools like bunny_get_mc_app (read-only) and bunny_manage_mc_app (likely broader management). The verb-resource pair 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 explains what each action does (e.g., 'deploy starts the application across configured regions'), giving context on when to use it. However, it does not explicitly mention alternatives or when not to use this tool, such as 'for other management operations use bunny_manage_mc_app'. The usage guidance is implied but not explicit.

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

bunny_publish_edge_scriptA
Idempotent

Publish a release for an edge script, deploying the current (or specified) code version to all edge servers globally. Optionally provide a release note.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge Script ID
noteNoRelease note/description
uuidNoSpecific release UUID to publish. If omitted, publishes the latest code.

TDQS

A4/5.0
Behavior4/5

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

Annotations already mark this as non-readonly, non-destructive, and idempotent. The description adds meaningful behavioral context by stating that deployment targets all edge servers globally and that either the current or a specified code version can be published. No contradiction with annotations.

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

Conciseness5/5

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

The description is a single concise, front-loaded sentence that states the purpose and scope without filler. The optional release note is the only extra detail and it 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 three-parameter operation with full schema coverage and no nested objects, the description covers the core behavior and global deployment side effect. It does not describe return values, but no output schema exists and the operation is straightforward enough that this is a minor omission.

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

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 all parameters. The description lightly refers to the optional release note and the ability to choose a version, but it does not add meaning beyond what the schema provides. 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 opens with a specific action verb ('Publish a release'), names the resource ('edge script'), and specifies the effect (deploying code to all edge servers globally). This clearly differentiates it from siblings like bunny_set_edge_script_code or bunny_manage_edge_script.

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 clear context for when the operation is appropriate—publishing/deploying a script release—but does not explicitly state when to prefer it over alternatives or mention any exclusions. Usage is implied rather than explicitly guided.

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

bunny_purge_pull_zone_cacheA
Idempotent

Purge the entire CDN cache for a pull zone, forcing all edge servers to fetch fresh content from the origin on the next request. Does not delete origin files. For single-URL purge, use bunny_purge_url instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPull Zone ID

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover non-read-only, non-destructive, and idempotent behavior. The description adds useful context beyond them: it does not delete origin files and forces all edge servers to refetch from origin on the next request, clarifying the exact blast radius.

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 filler. The primary action and scope lead the description, followed by a key non-destructive clarification and a concise pointer to the sibling tool.

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 one-parameter cache purge action, the description covers what it does, what it affects, what it does not affect, and which sibling to use for a different scope. Annotations and schema already supply the remaining operational 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 single parameter id is already fully described in the schema as 'Pull Zone ID', so schema coverage is effectively 100%. The description adds no additional parameter detail, but none is needed for this simple one-argument tool.

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

Purpose5/5

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

States a specific verb and resource: purge the entire CDN cache for a pull zone. It clearly distinguishes itself from bunny_purge_url by noting it is for the full zone, not a single URL.

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

Usage Guidelines5/5

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

Explicitly names the alternative bunny_purge_url and gives the decisive condition: use that tool for single-URL purges. This gives an agent clear routing guidance with no inference required.

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

bunny_purge_urlA
Idempotent

Purge a specific URL from the global CDN cache so the next request fetches fresh content from the origin. Append a wildcard () to purge all files under a path (e.g. https://example.b-cdn.net/css/). Does not delete origin files.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to purge from cache. Supports wildcard (*) at the end, e.g. https://example.b-cdn.net/css/*
asyncNoPerform purge asynchronously. Default: false

TDQS

A4.5/5.0
Behavior4/5

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

The annotations include destructiveHint=false, indicating the tool is not destructive. The description adds context that origin files remain untouched, which clarifies that cache purging is the only effect. It also explains the wildcard behavior and the fresh-content consequence, going beyond the schema's bare parameter types.

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 front-load the core action and outcome, then a relevant usage hint and one clarifying safety note. Every sentence earns its place without extraneous detail.

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 two-parameter, no-output-schema tool, the description covers the purpose, the path-wildcard behavior, and a critical non-destructive guarantee. An agent has enough context to decide when to call it and what to pass, and the absence of return-value details is acceptable since no output schema exists.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3; the description earns a 4 by reinforcing the wildcard usage and clarifying that the operation affects only cache, not origin storage. The async parameter is described in the schema and not repeated in the tool description, so no extra meaning is lost.

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

Purpose5/5

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

States the specific verb 'Purge', the resource 'a specific URL from the global CDN cache', and the expected outcome: 'the next request fetches fresh content from the origin.' The description also distinguishes this from the sibling bunny_purge_pull_zone_cache by focusing on a URL rather than a whole pull zone.

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 practical guidance on when to use the wildcard append for path purges and explicitly says it does not delete origin files. It does not explicitly name alternatives, but the sibling list reveals bunny_purge_pull_zone_cache as the coarser-grained alternative; the URL-level description implies this tool is for targeted URLs rather than whole-zone cache clearing.

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

bunny_set_edge_script_codeA
Idempotent

Upload or replace the JavaScript source code for an edge script. The new code is saved as a draft — use bunny_publish_edge_script to deploy it live.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEdge Script ID
codeYesJavaScript source code for the edge script

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, and the description is consistent with all three — it describes a write operation that saves a draft rather than altering live code. The description adds genuinely valuable context beyond annotations: the draft-vs-live behavior, informing the agent that the change is not active until published. No annotation contradiction.

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

Conciseness5/5

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

Two sentences totaling roughly 30 words, with the core action front-loaded and the crucial draft/publish caveat in the second sentence. Every word earns its place — no filler, no restating of the title.

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 main complexity of this workflow — that the update is saved only as a draft and requires a subsequent publish step — is fully covered, and the responsible sibling tool is named. Since no output schema exists, a brief hint about the response shape would add value, but for a simple two-parameter set operation with annotations covering the safety profile, the description is nearly 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%, with both parameters (id and code) already described in the input schema. The description only echoes that the code is JavaScript source, adding no param-level meaning beyond what the schema provides. Baseline 3 applies because the schema carries the semantic load.

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 action ('Upload or replace the JavaScript source code') on a clearly identified resource ('an edge script'), matching the tool name directly. It also distinguishes this tool from its siblings — bunny_get_edge_script_code handles the read counterpart, and bunny_publish_edge_script handles deployment — so an agent can tell them apart without inspecting schemas.

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 maps the workflow explicitly: this tool saves a draft, and the agent is directed to bunny_publish_edge_script to deploy it live, naming an alternative and the condition that selects it. It does not enumerate every when-not-to-use case against other edge-script siblings like bunny_manage_edge_script, but the draft-vs-live distinction covers the primary routing decision.

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

bunny_update_dns_zoneB
Idempotent

Update DNS zone settings. Common fields (PascalCase): CustomNameserversEnabled, Nameserver1, Nameserver2, SoaEmail, LoggingEnabled, LoggingIPAnonymizationEnabled.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDNS Zone ID
settingsYesSettings object with BunnyCDN API field names (PascalCase).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is clear. The description adds a little context by enumerating which settings are common, but it does not reveal update semantics such as whether the settings object is merged or replaces existing values, nor does it mention response behavior.

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

Conciseness5/5

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

The description is a single focused sentence with a compact, front-loaded field list. Every part contributes: the verb, the resource, and the key parameter vocabulary. There is no filler or irrelevant 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 two-parameter update tool with annotations covering safety and idempotence, the description is mostly adequate. However, it lacks a crucial behavioral detail: whether providing a partial settings object updates only those fields or clears absent ones. It also does not mention what response to expect, though no output schema exists to fill that gap.

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

Parameters4/5

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

The schema only describes 'id' as a DNS Zone ID and 'settings' as a generic settings object. The description adds meaningful parameter semantics by listing concrete PascalCase field names (CustomNameserversEnabled, Nameserver1, etc.), which helps an agent construct the settings object more accurately.

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 identifies the verb ('Update') and resource ('DNS zone settings'), and it narrows the purpose by listing example settings. It is not as sharp as explicitly distinguishing the tool from sibling DNS operations like bunny_create_dns_zone or bunny_manage_dns_record, but the resource scope is unambiguous.

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

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 creating, deleting, or managing DNS records. It implies that you use it to change an existing zone's settings, but it never states prerequisites, exclusions, or better-suited sibling tools.

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

bunny_update_pull_zoneA
Idempotent

Update pull zone settings. Pass a settings object with BunnyCDN API field names (PascalCase). Common fields: OriginUrl, AllowedReferrers, BlockedReferrers, BlockedIps, EnableGeoZoneUS, EnableGeoZoneEU, EnableGeoZoneASIA, CacheControlMaxAgeOverride, EnableQueryStringSort, EnableWebpVary, EnableAvifVary, EnableCacheSlice, EnableOriginShield, OriginShieldZoneCode.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesPull Zone ID
settingsYesSettings object with BunnyCDN API field names (PascalCase). See description for common fields.

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the description's job is to add behavioral context, which it does: it discloses the PascalCase field-name convention required by the BunnyCDN API and enumerates the specific updatable fields (OriginUrl, EnableGeoZoneUS, EnableCacheSlice, etc.). This tells the agent what the request payload must look like beyond what the annotations convey. No contradiction with annotations exists — an update is a write, non-destructive, and idempotent.

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 purpose is front-loaded in the first sentence, the encoding convention follows in the second, and the field list is compact — a bare enumeration of names with no fluff. Every sentence earns its place. The 14-item list is the longest element, but it is the primary value the agent needs, so the length is justified rather than padded.

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 definition adequately covers the main usage risk — building a valid settings payload — but it has notable gaps: there is no output schema and the description never states what the tool returns, nor does it clarify whether this is a partial (patch-like) update or a full replace of the settings object. For a mutation tool with a free-form settings object and no output schema, these omissions leave an agent guessing about response handling and update semantics.

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 schema's settings parameter description explicitly defers to the tool description ("See description for common fields"), and the description delivers: it lists 14 concrete BunnyCDN API field names the agent can use to construct a payload. It does not, however, describe types or value formats for those fields (e.g., that Enable* fields take booleans and CacheControlMaxAgeOverride takes an integer), which is why it stops short of a 5.

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 — "Update pull zone settings" — which clearly distinguishes it from sibling tools like bunny_create_pull_zone, bunny_delete_pull_zone, bunny_get_pull_zone, and importantly bunny_manage_pull_zone_hostnames and bunny_manage_edge_rules, which manage other aspects of a pull zone. The addition of "settings" is meaningful, not a tautology, because it scopes the operation to the settings object rather than hostnames or edge rules.

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 rather than stated: the verb "Update" and the settings-object parameter make it clear this is the tool for modifying existing pull zone settings, but the description never explicitly says when to use it versus alternatives like bunny_create_pull_zone or bunny_manage_pull_zone_hostnames. There are no exclusions or routing conditions, leaving the agent to infer scope from the operation name and sibling list.

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

bunny_update_video_libraryA
Idempotent

Update video library settings. Common fields (PascalCase): Name, CustomHTML, PlayerKeyColor, EnableTokenAuthentication, EnableTokenIPVerification, AllowedReferrers, BlockedReferrers, EnableMP4Fallback, KeepOriginalFiles, EnableDRM, Bitrate240p through Bitrate4K, WatermarkPositionLeft, WatermarkPositionTop, WatermarkWidth, WatermarkHeight, EnabledResolutions, EnableTranscribing, EnableTranscribingTitleGeneration, EnableTranscribingDescriptionGeneration, TranscribingCaptionLanguages.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesVideo Library ID
settingsYesSettings object with BunnyCDN API field names (PascalCase).

TDQS

A3.6/5.0
Behavior2/5

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

The description adds little behavioral context beyond the annotations. It does not disclose whether settings is a partial merge or full replacement, what the response looks like, error behavior, or the effect of omitting fields. The 'Common fields (PascalCase)' note hints at the API naming convention, but that is more parameter-related than behavioral. No contradiction with annotations (readOnlyHint=false aligns with 'Update'), but the description fails to carry its share of the burden for a write operation.

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

Conciseness4/5

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

The description is a single sentence with the purpose front-loaded and no filler. The field enumeration is long but every item is information-bearing, since these are the only documented keys for the open-ended settings object. Each part earns its place.

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

Completeness3/5

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

For a two-parameter update tool with no output schema, the description covers the most critical need — the accepted field vocabulary — but leaves gaps: it does not state whether settings replaces or merges with existing configuration, what the response contains, or how invalid/unknown fields are handled. The 'Common fields' wording is also vague about whether more fields exist. Adequate but not complete.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds genuine value by enumerating roughly 25 known valid PascalCase field names for the settings object. This is especially useful because the schema declares settings as additionalProperties:{} with no property constraints, so the field vocabulary in the description is the only thing telling the agent what keys are accepted.

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 opens with a specific verb+resource pair, 'Update video library settings', which precisely identifies the operation. The enumerated field list (Name, CustomHTML, PlayerKeyColor, etc.) further scopes what the tool does and distinguishes it from sibling tools like bunny_update_pull_zone, bunny_create_video_library, and bunny_get_video_library.

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 rather than stated: the verb 'update' plus the required 'id' parameter signals this is for modifying an existing video library, and sibling names like bunny_create_video_library and bunny_list_video_libraries suggest the alternatives. However, there is no explicit when-to-use/when-not-to-use guidance, no mention that creation belongs to bunny_create_video_library, and no conditions for choosing this over related tools.

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. 54 tool updatesv1.0.0
    • First observedbunny_create_dns_zone
    • First observedbunny_create_pull_zone
    • First observedbunny_create_storage_zone
    • First observedbunny_create_video_library
    • First observedbunny_delete_dns_zone
    • First observedbunny_delete_pull_zone
    • First observedbunny_get_account
    • First observedbunny_get_billing_summary
    • First observedbunny_get_bot_detection
    • First observedbunny_get_dns_statistics
    • First observedbunny_get_dns_zone
    • First observedbunny_get_edge_script
    • First observedbunny_get_edge_script_code
    • First observedbunny_get_mc_app
    • First observedbunny_get_mc_app_overview
    • First observedbunny_get_mc_app_statistics
    • First observedbunny_get_origin_errors
    • First observedbunny_get_pull_zone
    • First observedbunny_get_shield_metrics
    • First observedbunny_get_shield_zone
    • First observedbunny_get_statistics
    • First observedbunny_get_storage_zone
    • First observedbunny_get_storage_zone_statistics
    • First observedbunny_get_video_library
    • First observedbunny_get_waf_rules
    • First observedbunny_global_search
    • First observedbunny_list_countries
    • First observedbunny_list_dns_zones
    • First observedbunny_list_edge_scripts
    • First observedbunny_list_mc_apps
    • First observedbunny_list_mc_regions
    • First observedbunny_list_mc_registries
    • First observedbunny_list_pull_zones
    • First observedbunny_list_rate_limit_rules
    • First observedbunny_list_regions
    • First observedbunny_list_shield_zones
    • First observedbunny_list_storage_zones
    • First observedbunny_list_video_libraries
    • First observedbunny_manage_dns_record
    • First observedbunny_manage_edge_rules
    • First observedbunny_manage_edge_script
    • First observedbunny_manage_edge_script_variables
    • First observedbunny_manage_mc_app
    • First observedbunny_manage_pull_zone_hostnames
    • First observedbunny_manage_rate_limit_rule
    • First observedbunny_manage_waf_custom_rule
    • First observedbunny_mc_app_lifecycle
    • First observedbunny_publish_edge_script
    • First observedbunny_purge_pull_zone_cache
    • First observedbunny_purge_url
    • First observedbunny_set_edge_script_code
    • First observedbunny_update_dns_zone
    • First observedbunny_update_pull_zone
    • First observedbunny_update_video_library

TDQS

A3.6/5.0

Scored across 54 tools

Disambiguation4/5

Each tool is generally tied to a distinct Bunny.net resource/action, and descriptions clarify close pairs such as purge_pull_zone_cache vs purge_url and manage_mc_app vs mc_app_lifecycle. Some ambiguity remains around the generic 'manage' tools and get_bot_detection, which can also update settings, so this is not perfect.

Naming Consistency4/5

Most tools follow the bunny_<verb>_<resource> pattern with list/get/create/update/delete, and all names are snake_case with the bunny_ prefix. Deviations like bunny_mc_app_lifecycle (no verb) and bunny_global_search break the pattern slightly, but the overall convention is still predictable.

Tool Count1/5

With 54 tools, this server is in the extreme count range and far exceeds the typically well-scoped 3-15 tool surface. The broad BunnyCDN product breadth may explain the volume, but exposing every sub-service in one server creates a heavy, hard-to-navigate toolset that would be better split into separate MCP servers.

Completeness3/5

Core workflows are well covered for pull zones, DNS, edge scripts, and Magic Containers. However, storage zones lack update/delete operations, video libraries lack a delete operation, and Shield zones cannot be created or deleted, leaving notable dead ends for a platform API server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to manage Cloudflare resources through natural language, including DNS records, zone management, Workers KV storage, cache purging, and analytics. Supports comprehensive Cloudflare operations with secure API token authentication.
    13
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Cloudflare infrastructure including DNS records, cache purging, SSL settings, Workers, and analytics through the Cloudflare API. Eliminates dashboard context-switching by allowing natural language control of domain management and infrastructure operations.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Cloudways infrastructure, including servers, applications, monitoring, and security via the Cloudways API.
    -