Skip to content

bunny.net MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.4 · published by io.usefulapi

Inspect pull zones, storage, DNS and video libraries on bunny.net, and purge caches.

Deletes · 7Changes · 1

22 tools: 7 can delete or cancel things, 1 change things and 14 only read.

Scanned Oct 22, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http bunny-net https://bunny-net.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

22 tools

Deletes or cancels 7Claude Code: deny
  • bunny_add_blocked_ipWRITE.No findings

    Why it is in this group

    • The name "bunny_add_blocked_ip" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Block an IP address from a pull zone (undo with bunny_remove_blocked_ip). bunny.net: POST /pullzone/{id}/addBlockedIp.

    Annotations the server declares

    • title: Block an IP on a pull zone
    • destructiveHint: true
  • bunny_add_dns_recordWRITE.No findings

    Why it is in this group

    • The name "bunny_add_dns_record" says "add": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Add a record to a DNS zone. Takes effect on live DNS. bunny.net: PUT /dnszone/{zoneId}/records.

    Annotations the server declares

    • title: Add a DNS record
    • destructiveHint: true
  • bunny_purge_pull_zone_cacheWRITE.No findings

    Why it is in this group

    • The name "bunny_purge_pull_zone_cache" says "purge": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Purge the cached content of one pull zone — everything, or only files carrying a cache tag. Nothing is lost (the CDN refetches from the origin) but the origin takes the refill load. bunny.net: POST /pullzone/{id}/purgeCache.

    Annotations the server declares

    • title: Purge a pull zone's cache
    • destructiveHint: true
  • bunny_purge_urlWRITE.No findings

    Why it is in this group

    • The name "bunny_purge_url" says "purge": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Purge one URL from the CDN cache. A URL ending in '/' purges everything under it unless exact_path is true; a '*' wildcard is also accepted. The CDN refetches from the origin. bunny.net: POST /purge.

    Annotations the server declares

    • title: Purge a URL from cache
    • destructiveHint: true
  • bunny_remove_blocked_ipWRITE.No findings

    Why it is in this group

    • The name "bunny_remove_blocked_ip" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Remove an IP address from a pull zone's block list. bunny.net: POST /pullzone/{id}/removeBlockedIp.

    Annotations the server declares

    • title: Unblock an IP on a pull zone
    • destructiveHint: true
  • bunny_set_edge_rule_enabledWRITE.No findings

    Why it is in this group

    • The name "bunny_set_edge_rule_enabled" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Turn one edge rule on a pull zone on or off (reversible — the rule is kept). Get the rule's GUID from bunny_get_pull_zone (EdgeRules[].Guid). bunny.net: POST /pullzone/{pullZoneId}/edgerules/{edgeRuleId}/setEdgeRuleEnabled.

    Annotations the server declares

    • title: Enable or disable an edge rule
    • destructiveHint: true
  • bunny_update_dns_recordWRITE.No findings

    Why it is in this group

    • The name "bunny_update_dns_record" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    WRITE. Update an existing DNS record. Takes effect on live DNS. Read the record first with bunny_list_dns_records and pass its type, name and value along with any other fields you want to keep or change. bunny.net: POST /dnszone/{zoneId}/records/{id}.

    Annotations the server declares

    • title: Update a DNS record
    • destructiveHint: true
Changes things 1Claude Code: ask
  • bunny_export_dns_zoneExport one DNS zone as a BIND zone file (plain text) — handy for review, diffing or backup before a change.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Export one DNS zone as a BIND zone file (plain text) — handy for review, diffing or backup before a change. bunny.net: GET /dnszone/{id}/export.

    Annotations the server declares

    • title: Export a DNS zone
    • readOnlyHint: true
Only reads 14Claude Code: allow
  • bunny_get_audit_logWho changed what on one day: the account audit log (timestamp, product, resource, action, actor and a diff).No findings

    Why it is in this group

    • The name "bunny_get_audit_log" says "get": a word for reading.
    Description, as the server wrote it
    Who changed what on one day: the account audit log (timestamp, product, resource, action, actor and a diff). Paginate with continuation_token. bunny.net: GET /user/audit/{date}.

    Annotations the server declares

    • title: Get the audit log
    • readOnlyHint: true
  • bunny_get_billingThe account balance, this month's charges broken down by product (traffic per continent, storage, DNS, Stream, scripting, Shield, ...) and recent billing records.No findings

    Why it is in this group

    • The name "bunny_get_billing" says "get": a word for reading.
    Description, as the server wrote it
    The account balance, this month's charges broken down by product (traffic per continent, storage, DNS, Stream, scripting, Shield, ...) and recent billing records. Payment-method tokens are redacted. bunny.net: GET /billing.

    Annotations the server declares

    • title: Get billing details
    • readOnlyHint: true
  • bunny_get_dns_zoneFetch one DNS zone with its settings and records.No findings

    Why it is in this group

    • The name "bunny_get_dns_zone" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one DNS zone with its settings and records. bunny.net: GET /dnszone/{id}.

    Annotations the server declares

    • title: Get a DNS zone
    • readOnlyHint: true
  • bunny_get_pull_zoneFetch one pull zone with all its settings: origin, hostnames, caching, security, edge rules (with their GUIDs, needed by bunny_set_edge_rule_enabled), blocked IPs, limits and usage…No findings

    Why it is in this group

    • The name "bunny_get_pull_zone" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one pull zone with all its settings: origin, hostnames, caching, security, edge rules (with their GUIDs, needed by bunny_set_edge_rule_enabled), blocked IPs, limits and usage. Secrets (token-auth key, AWS signing secret, certificate private keys) are redacted. bunny.net: GET /pullzone/{id}.

    Annotations the server declares

    • title: Get a pull zone
    • readOnlyHint: true
  • bunny_get_statisticsCDN traffic statistics for the account or one pull zone: total bandwidth, origin traffic, requests served, cache hit rate and average origin response time, plus optional charts (ba…No findings

    Why it is in this group

    • The name "bunny_get_statistics" says "get": a word for reading.
    Description, as the server wrote it
    CDN traffic statistics for the account or one pull zone: total bandwidth, origin traffic, requests served, cache hit rate and average origin response time, plus optional charts (bandwidth, requests, origin traffic, response times, 3xx/4xx/5xx errors, geographic distribution). bunny.net: GET /statistics.

    Annotations the server declares

    • title: Get CDN statistics
    • readOnlyHint: true
  • bunny_get_storage_zoneFetch one edge storage zone: hostname, region, replication, storage used, files stored, 404 handling and connected pull zones.Reads private dataNo findings

    Why it is in this group

    • The name "bunny_get_storage_zone" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "fetch" and "file": it reads files.
    Description, as the server wrote it
    Fetch one edge storage zone: hostname, region, replication, storage used, files stored, 404 handling and connected pull zones. Storage passwords are redacted. bunny.net: GET /storagezone/{id}.

    Annotations the server declares

    • title: Get a storage zone
    • readOnlyHint: true
  • bunny_get_storage_zone_statisticsDaily charts of storage used and file count for one storage zone.Reads private dataNo findings

    Why it is in this group

    • The name "bunny_get_storage_zone_statistics" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "file": it reads files.
    Description, as the server wrote it
    Daily charts of storage used and file count for one storage zone. bunny.net: GET /storagezone/{id}/statistics.

    Annotations the server declares

    • title: Get storage zone statistics
    • readOnlyHint: true
  • bunny_get_video_libraryFetch one Stream video library with its full configuration (resolutions, DRM, referrer rules, transcribing, watermark).No findings

    Why it is in this group

    • The name "bunny_get_video_library" says "get": a word for reading.
    Description, as the server wrote it
    Fetch one Stream video library with its full configuration (resolutions, DRM, referrer rules, transcribing, watermark). Library API keys are redacted. bunny.net: GET /videolibrary/{id}.

    Annotations the server declares

    • title: Get a video library
    • readOnlyHint: true
  • bunny_list_dns_recordsList the records in one DNS zone, optionally filtered by type or search term.No findings

    Why it is in this group

    • The name "bunny_list_dns_records" says "list": a word for reading.
    Description, as the server wrote it
    List the records in one DNS zone, optionally filtered by type or search term. Record Type comes back as bunny.net's integer code (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, 13=SVCB, 14=HTTPS, 15=TLSA). bunny.net: GET /dnszone/{zoneId}/records.

    Annotations the server declares

    • title: List DNS records
    • readOnlyHint: true
  • bunny_list_dns_zonesList the DNS zones hosted on bunny.net, with nameserver detection, DNSSEC and logging status.No findings

    Why it is in this group

    • The name "bunny_list_dns_zones" says "list": a word for reading.
    Description, as the server wrote it
    List the DNS zones hosted on bunny.net, with nameserver detection, DNSSEC and logging status. bunny.net: GET /dnszone.

    Annotations the server declares

    • title: List DNS zones
    • readOnlyHint: true
  • bunny_list_pull_zonesList the CDN pull zones on the account.No findings

    Why it is in this group

    • The name "bunny_list_pull_zones" says "list": a word for reading.
    Description, as the server wrote it
    List the CDN pull zones on the account. By default returns a compact view per zone (id, name, origin URL, enabled/suspended, hostnames, linked storage zone, bandwidth and charges this month); set full=true for every setting. bunny.net: GET /pullzone.

    Annotations the server declares

    • title: List pull zones
    • readOnlyHint: true
  • bunny_list_regionsList bunny.net's edge regions with their IDs, codes, location and per-GB traffic price.No findings

    Why it is in this group

    • The name "bunny_list_regions" says "list": a word for reading.
    Description, as the server wrote it
    List bunny.net's edge regions with their IDs, codes, location and per-GB traffic price. A cheap way to confirm the API key works. bunny.net: GET /region.

    Annotations the server declares

    • title: List edge regions
    • readOnlyHint: true
  • bunny_list_storage_zonesList the edge storage zones on the account: region, replication regions, storage used, file count, tier and connected pull zones.Reads private dataNo findings

    Why it is in this group

    • The name "bunny_list_storage_zones" says "list": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "list" and "file": it reads files.
    Description, as the server wrote it
    List the edge storage zones on the account: region, replication regions, storage used, file count, tier and connected pull zones. Storage passwords are redacted. bunny.net: GET /storagezone.

    Annotations the server declares

    • title: List storage zones
    • readOnlyHint: true
  • bunny_list_video_librariesList the Stream video libraries: video count, storage and traffic usage, linked pull/storage zones and player/encoding settings.No findings

    Why it is in this group

    • The name "bunny_list_video_libraries" says "list": a word for reading.
    Description, as the server wrote it
    List the Stream video libraries: video count, storage and traffic usage, linked pull/storage zones and player/encoding settings. Library API keys are redacted. bunny.net: GET /videolibrary.

    Annotations the server declares

    • title: List video libraries
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged untrusted-input or outbound.

Reads private data3
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Install

Pinned to version 1.16.4. Values in angle brackets are yours to fill in.

claude mcp add --transport http bunny-net https://bunny-net.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__bunny-net__bunny_list_pull_zones",
      "mcp__bunny-net__bunny_get_pull_zone",
      "mcp__bunny-net__bunny_list_storage_zones",
      "mcp__bunny-net__bunny_get_storage_zone",
      "mcp__bunny-net__bunny_get_storage_zone_statistics",
      "mcp__bunny-net__bunny_list_dns_zones",
      "mcp__bunny-net__bunny_get_dns_zone",
      "mcp__bunny-net__bunny_list_dns_records",
      "mcp__bunny-net__bunny_list_video_libraries",
      "mcp__bunny-net__bunny_get_video_library",
      "mcp__bunny-net__bunny_get_statistics",
      "mcp__bunny-net__bunny_list_regions",
      "mcp__bunny-net__bunny_get_billing",
      "mcp__bunny-net__bunny_get_audit_log"
    ],
    "ask": [
      "mcp__bunny-net__bunny_export_dns_zone"
    ],
    "deny": [
      "mcp__bunny-net__bunny_purge_pull_zone_cache",
      "mcp__bunny-net__bunny_purge_url",
      "mcp__bunny-net__bunny_add_dns_record",
      "mcp__bunny-net__bunny_update_dns_record",
      "mcp__bunny-net__bunny_set_edge_rule_enabled",
      "mcp__bunny-net__bunny_add_blocked_ip",
      "mcp__bunny-net__bunny_remove_blocked_ip"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as bunny-net. Review it before you use it.

Capability tags behind 3 rules
  • mcp__bunny-net__bunny_list_storage_zones private-data
  • mcp__bunny-net__bunny_get_storage_zone private-data
  • mcp__bunny-net__bunny_get_storage_zone_statistics private-data